mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-08 08:43:52 -08:00
Fix for command-execute handling of disabled commands
* lisp/simple.el (command-execute): Do not execute the command when it is disabled; fixes thinko in 2013-02-20 conversion from C. Fixes: debbugs:17151
This commit is contained in:
parent
8ec45bab98
commit
6116a72722
2 changed files with 35 additions and 30 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2014-04-01 Nicolas Richard <theonewiththeevillook@yahoo.fr>
|
||||
|
||||
* simple.el (command-execute): Do not execute the command when it
|
||||
is disabled; fixes thinko in 2013-02-20 conversion from C. (Bug#17151)
|
||||
|
||||
2014-03-29 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* dired-aux.el (dired-compress-file): Don't use string-match-p
|
||||
|
|
|
|||
|
|
@ -1628,36 +1628,36 @@ a special event, so ignore the prefix argument and don't clear it."
|
|||
(prog1 prefix-arg
|
||||
(setq current-prefix-arg prefix-arg)
|
||||
(setq prefix-arg nil)))))
|
||||
(and (symbolp cmd)
|
||||
(get cmd 'disabled)
|
||||
;; FIXME: Weird calling convention!
|
||||
(run-hooks 'disabled-command-function))
|
||||
(let ((final cmd))
|
||||
(while
|
||||
(progn
|
||||
(setq final (indirect-function final))
|
||||
(if (autoloadp final)
|
||||
(setq final (autoload-do-load final cmd)))))
|
||||
(cond
|
||||
((arrayp final)
|
||||
;; If requested, place the macro in the command history. For
|
||||
;; other sorts of commands, call-interactively takes care of this.
|
||||
(when record-flag
|
||||
(push `(execute-kbd-macro ,final ,prefixarg) command-history)
|
||||
;; Don't keep command history around forever.
|
||||
(when (and (numberp history-length) (> history-length 0))
|
||||
(let ((cell (nthcdr history-length command-history)))
|
||||
(if (consp cell) (setcdr cell nil)))))
|
||||
(execute-kbd-macro final prefixarg))
|
||||
(t
|
||||
;; Pass `cmd' rather than `final', for the backtrace's sake.
|
||||
(prog1 (call-interactively cmd record-flag keys)
|
||||
(when (and (symbolp cmd)
|
||||
(get cmd 'byte-obsolete-info)
|
||||
(not (get cmd 'command-execute-obsolete-warned)))
|
||||
(put cmd 'command-execute-obsolete-warned t)
|
||||
(message "%s" (macroexp--obsolete-warning
|
||||
cmd (get cmd 'byte-obsolete-info) "command")))))))))
|
||||
(if (and (symbolp cmd)
|
||||
(get cmd 'disabled))
|
||||
;; FIXME: Weird calling convention!
|
||||
(run-hooks 'disabled-command-function)
|
||||
(let ((final cmd))
|
||||
(while
|
||||
(progn
|
||||
(setq final (indirect-function final))
|
||||
(if (autoloadp final)
|
||||
(setq final (autoload-do-load final cmd)))))
|
||||
(cond
|
||||
((arrayp final)
|
||||
;; If requested, place the macro in the command history. For
|
||||
;; other sorts of commands, call-interactively takes care of this.
|
||||
(when record-flag
|
||||
(push `(execute-kbd-macro ,final ,prefixarg) command-history)
|
||||
;; Don't keep command history around forever.
|
||||
(when (and (numberp history-length) (> history-length 0))
|
||||
(let ((cell (nthcdr history-length command-history)))
|
||||
(if (consp cell) (setcdr cell nil)))))
|
||||
(execute-kbd-macro final prefixarg))
|
||||
(t
|
||||
;; Pass `cmd' rather than `final', for the backtrace's sake.
|
||||
(prog1 (call-interactively cmd record-flag keys)
|
||||
(when (and (symbolp cmd)
|
||||
(get cmd 'byte-obsolete-info)
|
||||
(not (get cmd 'command-execute-obsolete-warned)))
|
||||
(put cmd 'command-execute-obsolete-warned t)
|
||||
(message "%s" (macroexp--obsolete-warning
|
||||
cmd (get cmd 'byte-obsolete-info) "command"))))))))))
|
||||
|
||||
(defvar minibuffer-history nil
|
||||
"Default minibuffer history list.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue