diff options
| author | Lars Ingebrigtsen | 2021-07-18 16:34:02 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-07-18 16:35:17 +0200 |
| commit | e77bd6e8bf0601029465f1af11bbef97ba2d1f49 (patch) | |
| tree | 1d60db91083b0f15526b68e4a0d8c89f3aefdd6d | |
| parent | 595eddd848740bc132ae2bbdf630876114364f98 (diff) | |
| download | emacs-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.el | 25 |
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) |