From 2bb192de8023bf8c5531a82d127320ba591c2995 Mon Sep 17 00:00:00 2001 From: Lucas Sta Maria Date: Sat, 8 Feb 2025 19:28:07 -0500 Subject: [PATCH] fix(emacs): add keybind for finding terminals --- .emacs.d/include/priime-convenience.el | 15 ++++++++++++++- .emacs.d/include/priime-utils.el | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.emacs.d/include/priime-convenience.el b/.emacs.d/include/priime-convenience.el index 37fa2ea..aa6eac5 100644 --- a/.emacs.d/include/priime-convenience.el +++ b/.emacs.d/include/priime-convenience.el @@ -4,6 +4,9 @@ ;; development experience and productivity. ;;; Code: +(require 'dash) +(require 'priime-utils) + (defun pdf-download-and-view (&optional url filename) "Download and view the PDF given by its URL as FILENAME." (interactive) @@ -44,6 +47,15 @@ (priime-terminal) (balance-windows)) +(defun priime-find-terminal () + "Search for an open terminal and move to it." + (interactive) + (let* ((term-buffers (-filter #'buffer-vterm-p (buffer-list))) + (term-buf-names (-map #'buffer-name term-buffers)) + (selected-term-buffer + (completing-read "terminal buffer: " term-buf-names nil t nil))) + (switch-to-buffer selected-term-buffer))) + (use-package projectile :straight t :custom (projectile-completion-system 'auto) @@ -64,7 +76,8 @@ (use-package vterm :straight t :custom (vterm-shell (or (executable-find "fish") shell-file-name)) :bind (("C-c v" . priime-terminal) - ("" . priime-split-terminal))) + ("" . priime-split-terminal) + ("C-" . priime-find-terminal))) (use-package rg :straight t) (use-package anzu :straight t :bind ("C-c r a" . anzu-query-replace-regexp) diff --git a/.emacs.d/include/priime-utils.el b/.emacs.d/include/priime-utils.el index 09bd043..0f835d0 100644 --- a/.emacs.d/include/priime-utils.el +++ b/.emacs.d/include/priime-utils.el @@ -25,6 +25,14 @@ (filepath (or filepath (read-file-name "filename: ")))) (url-copy-file url filepath 1))) +(defun buffer-major-mode (buffer-name) + "Get the major mode of the buffer with the given name." + (buffer-local-value 'major-mode (get-buffer buffer-name))) + +(defun buffer-vterm-p (buffer-name) + "Is the buffer with the given name a vterm buffer?" + (eq 'vterm-mode (buffer-major-mode buffer-name))) + (provide 'priime-utils) ;;; priime-utils.el ends here