37 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| ;; Utilities for Alacritty buffers.
 | |
| 
 | |
| (defun open-or-create-alacritty-buffer (buffer-name)
 | |
|   "Switch to the buffer with BUFFER-NAME or create a
 | |
|   new buffer running Alacritty."
 | |
|   (let ((buffer (get-buffer buffer-name)))
 | |
|     (if (not buffer)
 | |
|         (run-external-command "alacritty")
 | |
|       (switch-to-buffer buffer))))
 | |
| 
 | |
| (defun is-alacritty-buffer (buffer)
 | |
|   "Determine whether BUFFER runs Alacritty."
 | |
|   (and (equal 'exwm-mode (buffer-local-value 'major-mode buffer))
 | |
|        (s-starts-with? "Alacritty" (buffer-name buffer))))
 | |
| 
 | |
| (defun counsel-switch-to-alacritty ()
 | |
|   "Switch to a (multi-)term buffer or create one."
 | |
|   (interactive)
 | |
|   (let ((terms (-map #'buffer-name
 | |
|                      (-filter #'is-alacritty-buffer (buffer-list)))))
 | |
|     (if terms
 | |
|         (ivy-read "Switch to Alacritty buffer: "
 | |
|                   (cons "New terminal" terms)
 | |
|                   :caller 'counsel-switch-to-alacritty
 | |
|                   :require-match t
 | |
|                   :action #'open-or-create-alacritty-buffer)
 | |
|       (run-external-command "alacritty"))))
 | |
| 
 | |
| (defun alacritty-rename ()
 | |
|   "Rename the current terminal buffer."
 | |
|   (interactive)
 | |
|   (let* ((buffer (get-buffer (buffer-name))))
 | |
|     (if (is-alacritty-buffer buffer)
 | |
|         (rename-buffer (format "Alacritty<%s>" (read-string "New terminal name: ")))
 | |
|       (error "This function is only intended to rename Alacritty buffers."))))
 | |
| 
 | |
| (provide 'term-setup)
 |