mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 10:27:41 +00:00
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.
This commit is contained in:
parent
595eddd848
commit
e77bd6e8bf
1 changed files with 24 additions and 1 deletions
25
lisp/term.el
25
lisp/term.el
|
|
@ -864,8 +864,30 @@ is buffer-local."
|
|||
["Paging" term-pager-toggle :style toggle :selected term-pager-count
|
||||
:help "Toggle paging feature"]))
|
||||
|
||||
(defun term--update-term-menu (&optional force)
|
||||
(when (and (lookup-key term-mode-map [menu-bar terminal])
|
||||
(or force (frame-or-buffer-changed-p)))
|
||||
(let ((buffer-list
|
||||
(seq-filter
|
||||
(lambda (buffer)
|
||||
(provided-mode-derived-p (buffer-local-value 'major-mode buffer)
|
||||
'term-mode))
|
||||
(buffer-list))))
|
||||
(easy-menu-change
|
||||
'("Terminal")
|
||||
"Terminal Buffers"
|
||||
(mapcar
|
||||
(lambda (buffer)
|
||||
(vector (format "%s (%s)" (buffer-name buffer)
|
||||
(abbreviate-file-name
|
||||
(buffer-local-value 'default-directory buffer)))
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(switch-to-buffer buffer))))
|
||||
buffer-list)))))
|
||||
|
||||
(easy-menu-define term-signals-menu
|
||||
(list term-mode-map term-raw-map term-pager-break-map)
|
||||
(list term-mode-map term-raw-map term-pager-break-map)
|
||||
"Signals menu for Term mode."
|
||||
'("Signals"
|
||||
["BREAK" term-interrupt-subjob :active t
|
||||
|
|
@ -1076,6 +1098,7 @@ Entry to this mode runs the hooks on `term-mode-hook'."
|
|||
(setq-local term-pending-delete-marker (make-marker))
|
||||
(make-local-variable 'term-current-face)
|
||||
(term-ansi-reset)
|
||||
(add-hook 'menu-bar-update-hook 'term--update-term-menu)
|
||||
(setq-local term-pending-frame nil)
|
||||
;; Cua-mode's keybindings interfere with the term keybindings, disable it.
|
||||
(setq-local cua-mode nil)
|
||||
|
|
|
|||
Loading…
Reference in a new issue