aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-07-18 16:34:02 +0200
committerLars Ingebrigtsen2021-07-18 16:35:17 +0200
commite77bd6e8bf0601029465f1af11bbef97ba2d1f49 (patch)
tree1d60db91083b0f15526b68e4a0d8c89f3aefdd6d
parent595eddd848740bc132ae2bbdf630876114364f98 (diff)
downloademacs-e77bd6e8bf0601029465f1af11bbef97ba2d1f49.tar.gz
emacs-e77bd6e8bf0601029465f1af11bbef97ba2d1f49.zip
Maintain a list of terminal buffers in the menu
* lisp/term.el (term--update-term-menu): New function (bug#5641). (term-mode): Use it to list terminal buffers.
-rw-r--r--lisp/term.el25
1 files changed, 24 insertions, 1 deletions
diff --git a/lisp/term.el b/lisp/term.el
index d41895ad3d9..560549ece90 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -864,8 +864,30 @@ is buffer-local."
864 ["Paging" term-pager-toggle :style toggle :selected term-pager-count 864 ["Paging" term-pager-toggle :style toggle :selected term-pager-count
865 :help "Toggle paging feature"])) 865 :help "Toggle paging feature"]))
866 866
867(defun term--update-term-menu (&optional force)
868 (when (and (lookup-key term-mode-map [menu-bar terminal])
869 (or force (frame-or-buffer-changed-p)))
870 (let ((buffer-list
871 (seq-filter
872 (lambda (buffer)
873 (provided-mode-derived-p (buffer-local-value 'major-mode buffer)
874 'term-mode))
875 (buffer-list))))
876 (easy-menu-change
877 '("Terminal")
878 "Terminal Buffers"
879 (mapcar
880 (lambda (buffer)
881 (vector (format "%s (%s)" (buffer-name buffer)
882 (abbreviate-file-name
883 (buffer-local-value 'default-directory buffer)))
884 (lambda ()
885 (interactive)
886 (switch-to-buffer buffer))))
887 buffer-list)))))
888
867(easy-menu-define term-signals-menu 889(easy-menu-define term-signals-menu
868 (list term-mode-map term-raw-map term-pager-break-map) 890 (list term-mode-map term-raw-map term-pager-break-map)
869 "Signals menu for Term mode." 891 "Signals menu for Term mode."
870 '("Signals" 892 '("Signals"
871 ["BREAK" term-interrupt-subjob :active t 893 ["BREAK" term-interrupt-subjob :active t
@@ -1076,6 +1098,7 @@ Entry to this mode runs the hooks on `term-mode-hook'."
1076 (setq-local term-pending-delete-marker (make-marker)) 1098 (setq-local term-pending-delete-marker (make-marker))
1077 (make-local-variable 'term-current-face) 1099 (make-local-variable 'term-current-face)
1078 (term-ansi-reset) 1100 (term-ansi-reset)
1101 (add-hook 'menu-bar-update-hook 'term--update-term-menu)
1079 (setq-local term-pending-frame nil) 1102 (setq-local term-pending-frame nil)
1080 ;; Cua-mode's keybindings interfere with the term keybindings, disable it. 1103 ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
1081 (setq-local cua-mode nil) 1104 (setq-local cua-mode nil)