mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 12:31:25 +00:00
Fix regression in 'kill-this-buffer' (bug#78809)
This restores the ability to use 'kill-this-buffer' when a keyboard event pops up the Global Menu. Instead of raising an error if the command was not called by a mouse event, an error is now raised if it was not called from a menu or a tool bar. * lisp/menu-bar.el (kill-this-buffer): Remove optional EVENT from argument list and "e" code from interactive spec. Adjust doc string. Use 'last-command-event' to determine if command was called from a menu or a tool bar. Use 'event--posn-at-point' in test for frame. * lisp/net/eudc-hotlist.el (eudc-hotlist-quit-edit): * lisp/net/eudc.el (eudc-display-records, eudc-query-form): * lisp/vc/pcvs.el (cvs-mode-map): Replace uses of 'kill-this-buffer' by 'kill-current-buffer'.
This commit is contained in:
parent
06b74b04cb
commit
79e50ddb9c
4 changed files with 26 additions and 23 deletions
|
|
@ -2233,31 +2233,34 @@ updating the menu."
|
|||
(not (window-minibuffer-p
|
||||
(frame-selected-window menu-frame))))))
|
||||
|
||||
(defun kill-this-buffer (&optional event) ; for the menu bar
|
||||
(defun kill-this-buffer ()
|
||||
"Kill the current buffer.
|
||||
When called in the minibuffer, get out of the minibuffer
|
||||
using `abort-recursive-edit'.
|
||||
|
||||
This command must be bound to a mouse event, and can be reliably
|
||||
invoked only from the menu bar, otherwise it could decide to silently
|
||||
do nothing or signal an error. Use `kill-current-buffer' if you
|
||||
need to invoke a similar command from keyboard."
|
||||
(interactive "e")
|
||||
This command can be invoked only from a menu or a tool bar. If you want
|
||||
to invoke a similar command with `M-x', use `kill-current-buffer'."
|
||||
(interactive)
|
||||
;; This colossus of a conditional is necessary to account for the wide
|
||||
;; variety of this command's callers.
|
||||
(if (let* ((window (or (and event (event-start event)
|
||||
(posn-window (event-start event)))
|
||||
last-event-frame
|
||||
(selected-frame)))
|
||||
(frame (if (framep window) window
|
||||
(window-frame window))))
|
||||
(not (window-minibuffer-p (frame-selected-window frame))))
|
||||
(progn (kill-buffer (current-buffer))
|
||||
;; Also close the current window if `menu-bar-close-window' is
|
||||
;; set.
|
||||
(when menu-bar-close-window
|
||||
(ignore-errors (delete-window))))
|
||||
(abort-recursive-edit)))
|
||||
(if (let ((lce last-command-event))
|
||||
(eq (if (atom lce) ; Selected menu item.
|
||||
lce
|
||||
(car lce)) ; Clicked tool bar icon.
|
||||
'kill-buffer))
|
||||
(if (let* ((window (or (posn-window (event--posn-at-point))
|
||||
last-event-frame
|
||||
(selected-frame)))
|
||||
(frame (if (framep window) window
|
||||
(window-frame window))))
|
||||
(not (window-minibuffer-p (frame-selected-window frame))))
|
||||
(progn (kill-buffer (current-buffer))
|
||||
;; Also close the current window if
|
||||
;; `menu-bar-close-window' is set.
|
||||
(when menu-bar-close-window
|
||||
(ignore-errors (delete-window))))
|
||||
(abort-recursive-edit))
|
||||
(error "This command must be called from a menu or a tool bar")))
|
||||
|
||||
(defun kill-this-buffer-enabled-p ()
|
||||
"Return non-nil if the `kill-this-buffer' menu item should be enabled.
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ These are the special commands of this mode:\\<eudc-hotlist-mode-map>
|
|||
(setq eudc-server-hotlist (nreverse hotlist))
|
||||
(eudc-install-menu)
|
||||
(eudc-save-options)
|
||||
(kill-this-buffer)))
|
||||
(kill-current-buffer)))
|
||||
|
||||
(defun eudc-hotlist-select-server ()
|
||||
"Select the server at point as the current server."
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@ otherwise they are formatted according to `eudc-user-attribute-names-alist'."
|
|||
(widget-insert " ")
|
||||
(widget-create 'push-button
|
||||
:notify (lambda (&rest _ignore)
|
||||
(kill-this-buffer))
|
||||
(kill-current-buffer))
|
||||
"Quit")
|
||||
(eudc-mode)
|
||||
(widget-setup)
|
||||
|
|
@ -1096,7 +1096,7 @@ queries the server for the existing fields and displays a corresponding form."
|
|||
(widget-insert " ")
|
||||
(widget-create 'push-button
|
||||
:notify (lambda (&rest _ignore)
|
||||
(kill-this-buffer))
|
||||
(kill-current-buffer))
|
||||
"Quit")
|
||||
(goto-char pt)
|
||||
(use-local-map widget-keymap)
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@
|
|||
"?" #'cvs-help
|
||||
"h" #'cvs-help
|
||||
"q" #'cvs-bury-buffer
|
||||
"z" #'kill-this-buffer
|
||||
"z" #'kill-current-buffer
|
||||
"F" #'cvs-mode-set-flags
|
||||
"!" #'cvs-mode-force-command
|
||||
"C-c C-c" #'cvs-mode-kill-process
|
||||
|
|
|
|||
Loading…
Reference in a new issue