about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-14T13·21+0000
committerVincent Ambo <tazjin@google.com>2019-12-14T13·21+0000
commitc1ba41a62d3fedc11c18796ed4f28239a7f2f752 (patch)
tree0c71745022f480f8c3b4a813bcad85af05af3d69
parentbd7c9e4b5acb5671e0b96572dcde0525a0f7c9c1 (diff)
feat(emacs.d): Generalise counsel terminal selector r/139
This makes it possible to use my terminal selector with any X11
terminal, configurable via two simple variables.
-rw-r--r--tools/emacs/init/term-setup.el45
1 files changed, 22 insertions, 23 deletions
diff --git a/tools/emacs/init/term-setup.el b/tools/emacs/init/term-setup.el
index a2a71be9ee..cd4f9c25ef 100644
--- a/tools/emacs/init/term-setup.el
+++ b/tools/emacs/init/term-setup.el
@@ -1,37 +1,36 @@
-;; Utilities for Alacritty buffers.
+;; Utilities for X11 terminal buffers.
 
-(defun open-or-create-alacritty-buffer (buffer-name)
-  "Switch to the buffer with BUFFER-NAME or create a
-  new buffer running Alacritty."
+(defvar x11-terminal-program "gnome-terminal"
+  "Which X11 terminal application to use.")
+
+(defvar x11-terminal-buffer-prefix "Term"
+  "String prefix for X11 terminal buffer names.")
+
+(defun open-or-create-terminal-buffer (buffer-name)
+  "Switch to the buffer with BUFFER-NAME or create a new buffer
+  running the configured X11 terminal."
   (let ((buffer (get-buffer buffer-name)))
     (if (not buffer)
-        (run-external-command "alacritty")
+        (run-external-command x11-terminal-program)
       (switch-to-buffer buffer))))
 
-(defun is-alacritty-buffer (buffer)
-  "Determine whether BUFFER runs Alacritty."
+(defun is-terminal-buffer (buffer)
+  "Determine whether BUFFER runs an X11 terminal."
   (and (equal 'exwm-mode (buffer-local-value 'major-mode buffer))
-       (s-starts-with? "Alacritty" (buffer-name buffer))))
+       (s-starts-with? x11-terminal-buffer-prefix (buffer-name buffer))))
 
-(defun counsel-switch-to-alacritty ()
-  "Switch to a (multi-)term buffer or create one."
+(defun counsel-switch-to-terminal ()
+  "Switch to an X11 terminal buffer, or create a new one."
   (interactive)
   (let ((terms (-map #'buffer-name
-                     (-filter #'is-alacritty-buffer (buffer-list)))))
+                     (-filter #'is-terminal-buffer (buffer-list)))))
     (if terms
-        (ivy-read "Switch to Alacritty buffer: "
+        (ivy-read "Switch to terminal buffer: "
                   (cons "New terminal" terms)
-                  :caller 'counsel-switch-to-alacritty
+                  :caller 'counsel-switch-to-terminal
+                  :preselect (s-concat "^" x11-terminal-buffer-prefix)
                   :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."))))
+                  :action #'open-or-create-terminal-buffer)
+      (run-external-command x11-terminal-program))))
 
 (provide 'term-setup)