From bfeae2cf098dcf5bdb4af14d896e790cbe91d60f Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 12 Sep 2012 15:16:36 -0400 Subject: [PATCH] Remove unread-command-char. * src/keyboard.c (read_char, requeued_events_pending_p, Finput_pending_p) (Fdiscard_input, quit_throw_to_read_char, init_keyboard) (syms_of_keyboard): Remove support for unread-command-char. * lisp/emacs-lisp/debug.el (debugger-outer-unread-command-char, debug) (debugger-env-macro): Remove support for unread-command-char. * lisp/ehelp.el (with-electric-help): Accept functions in electric-help-form-to-execute. (electric-help-execute-extended, electric-help-ctrl-x-prefix): Use it. And replace unread-command-char -> unread-command-events. * lisp/subr.el (set-temporary-overlay-map): Minimize slightly the impact of the temporary map re-appearing on emulation-mode-map-alists. * lisp/emacs-lisp/edebug.el (def-edebug-form-spec): Remove, it's been broken since 22.1. --- doc/lispref/commands.texi | 11 ----------- etc/NEWS | 2 +- lisp/ChangeLog | 20 ++++++++++++++++++-- lisp/ehelp.el | 13 ++++++++++--- lisp/emacs-lisp/debug.el | 21 +-------------------- lisp/emacs-lisp/edebug.el | 5 ----- lisp/progmodes/ebrowse.el | 2 +- lisp/subr.el | 6 +----- src/ChangeLog | 6 ++++++ src/data.c | 2 +- src/keyboard.c | 25 ++++--------------------- 11 files changed, 43 insertions(+), 70 deletions(-) diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 7e24de94fbe..dc0fa4c639d 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -2738,17 +2738,6 @@ This function converts the string or vector @var{key} to a list of individual events, which you can put in @code{unread-command-events}. @end defun -@ignore -@defvar unread-command-char -This variable holds a character to be read as command input. -A value of -1 means ``empty''. - -This variable is mostly obsolete now that you can use -@code{unread-command-events} instead; it exists only to support programs -written for Emacs versions 18 and earlier. -@end defvar -@end ignore - @defun input-pending-p @cindex waiting for command key input This function determines whether any command input is currently diff --git a/etc/NEWS b/etc/NEWS index e095ca795e4..a7388c4e9fa 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -638,7 +638,7 @@ are deprecated and will be removed eventually. *** `facemenu-unlisted-faces' *** `rmail-decode-mime-charset' -*** `last-input-char' and `last-command-char' +*** `last-input-char', `last-command-char', `unread-command-char'. * Lisp changes in Emacs 24.3 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 56311198831..549b70a1de1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,19 @@ +2012-09-12 Stefan Monnier + + * emacs-lisp/debug.el (debugger-outer-unread-command-char, debug) + (debugger-env-macro): Remove support for unread-command-char. + + * subr.el (set-temporary-overlay-map): Minimize slightly the impact of + the temporary map re-appearing on emulation-mode-map-alists. + + * emacs-lisp/edebug.el (def-edebug-form-spec): Remove, it's been broken + since 22.1. + + * ehelp.el (with-electric-help): Accept functions in + electric-help-form-to-execute. + (electric-help-execute-extended, electric-help-ctrl-x-prefix): Use it. + And replace unread-command-char -> unread-command-events. + 2012-09-12 Michael Albinus Sync with Tramp 2.2.6. @@ -9,8 +25,8 @@ 2012-09-12 Martin Rudalics - * emacs-lisp/debug.el (debugger-previous-window-height): New - variable. + * emacs-lisp/debug.el (debugger-previous-window-height): + New variable. (debug): When debugger-jumping-flag is non-nil try to restore height of debugger window. (Bug#8789) diff --git a/lisp/ehelp.el b/lisp/ehelp.el index abb897f73f6..281148d9cf6 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -193,7 +193,9 @@ BUFFER is put back into its original major mode." (replace-buffer-in-windows buffer) ;; must do this outside of save-window-excursion (bury-buffer buffer)) - (eval electric-help-form-to-execute)))) + (if (functionp electric-help-form-to-execute) + (funcall electric-help-form-to-execute) + (eval electric-help-form-to-execute))))) (defun electric-help-command-loop () (catch 'exit @@ -349,14 +351,19 @@ will select it.)" ;; continues with execute-extended-command. (defun electric-help-execute-extended (_prefixarg) (interactive "p") - (setq electric-help-form-to-execute '(execute-extended-command nil)) + (setq electric-help-form-to-execute + (lambda () (execute-extended-command nil))) (electric-help-retain)) ;; This is to be buond to C-x in ehelp mode. Retains ehelp buffer and then ;; continues with ctrl-x prefix. (defun electric-help-ctrl-x-prefix (_prefixarg) (interactive "p") - (setq electric-help-form-to-execute '(progn (message nil) (setq unread-command-char ?\C-x))) + (setq electric-help-form-to-execute + (lambda () + (message nil) + (setq unread-command-events + (append unread-command-events '(?\C-x))))) (electric-help-retain)) diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 8b89e65c5d9..774b4d3d600 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -110,10 +110,6 @@ This is to optimize `debugger-make-xrefs'.") (defvar debugger-outer-track-mouse) (defvar debugger-outer-last-command) (defvar debugger-outer-this-command) -;; unread-command-char is obsolete, -;; but we still save and restore it -;; in case some user program still tries to set it. -(defvar debugger-outer-unread-command-char) (defvar debugger-outer-unread-command-events) (defvar debugger-outer-unread-post-input-method-events) (defvar debugger-outer-last-input-event) @@ -185,8 +181,6 @@ first will be printed into the backtrace buffer." (debugger-outer-track-mouse track-mouse) (debugger-outer-last-command last-command) (debugger-outer-this-command this-command) - (debugger-outer-unread-command-char - (with-no-warnings unread-command-char)) (debugger-outer-unread-command-events unread-command-events) (debugger-outer-unread-post-input-method-events unread-post-input-method-events) @@ -221,8 +215,6 @@ first will be printed into the backtrace buffer." (cursor-in-echo-area nil)) (unwind-protect (save-excursion - (with-no-warnings - (setq unread-command-char -1)) (when (eq (car debugger-args) 'debug) ;; Skip the frames for backtrace-debug, byte-code, ;; and implement-debug-on-entry. @@ -302,8 +294,6 @@ first will be printed into the backtrace buffer." (setq track-mouse debugger-outer-track-mouse) (setq last-command debugger-outer-last-command) (setq this-command debugger-outer-this-command) - (with-no-warnings - (setq unread-command-char debugger-outer-unread-command-char)) (setq unread-command-events debugger-outer-unread-command-events) (setq unread-post-input-method-events debugger-outer-unread-post-input-method-events) @@ -605,16 +595,7 @@ Applies to the frame whose line point is on in the backtrace." (cursor-in-echo-area debugger-outer-cursor-in-echo-area)) (set-match-data debugger-outer-match-data) (prog1 - (let ((save-ucc (with-no-warnings unread-command-char))) - (unwind-protect - (progn - (with-no-warnings - (setq unread-command-char debugger-outer-unread-command-char)) - (prog1 (progn ,@body) - (with-no-warnings - (setq debugger-outer-unread-command-char unread-command-char)))) - (with-no-warnings - (setq unread-command-char save-ucc)))) + (progn ,@body) (setq debugger-outer-match-data (match-data)) (setq debugger-outer-load-read-function load-read-function) (setq debugger-outer-overriding-terminal-local-map diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 17f6f79cd66..f147fba167d 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -235,11 +235,6 @@ If the result is non-nil, then break. Errors are ignored." ;;; Form spec utilities. -(defmacro def-edebug-form-spec (symbol spec-form) - "For compatibility with old version." - (def-edebug-spec symbol (eval spec-form))) -(make-obsolete 'def-edebug-form-spec 'def-edebug-spec "22.1") - (defun get-edebug-spec (symbol) ;; Get the spec of symbol resolving all indirection. (let ((edebug-form-spec nil) diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el index 1d29011762e..8ac54d6524e 100644 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el @@ -4210,7 +4210,7 @@ NUMBER-OF-STATIC-VARIABLES:" ;; this will select the buffer from which the buffer menu was ;; invoked. But this buffer is not displayed in the buffer list if ;; it isn't a tree buffer. I therefore let the buffer menu command -;; loop read the command `p' via `unread-command-char'. This command +;; loop read the command `p' via `unread-command-events'. This command ;; has no effect since we are on the first line of the buffer. (defvar electric-buffer-menu-mode-hook nil) diff --git a/lisp/subr.el b/lisp/subr.el index 23b62b25c9c..aa1b10ce17d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1250,11 +1250,6 @@ is converted into a string by expressing it in decimal." 'mode-line-inverse-video "use the appropriate faces instead." "21.1") -(make-obsolete-variable - 'unread-command-char - "use `unread-command-events' instead. That variable is a list of events -to reread, so it now uses nil to mean `no event', instead of -1." - "before 19.15") ;; Lisp manual only updated in 22.1. (define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro @@ -3928,6 +3923,7 @@ When KEEP-PRED is nil, the temporary keymap is used only once." (lookup-key ',map (this-command-keys-vector)))) (t `(funcall ',keep-pred))) + (set ',overlaysym nil) ;Just in case. (remove-hook 'pre-command-hook ',clearfunsym) (setq emulation-mode-map-alists (delq ',alist emulation-mode-map-alists)))))) diff --git a/src/ChangeLog b/src/ChangeLog index bfb6e5a87b3..8b47c52c23f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-09-12 Stefan Monnier + + * keyboard.c (read_char, requeued_events_pending_p, Finput_pending_p) + (Fdiscard_input, quit_throw_to_read_char, init_keyboard) + (syms_of_keyboard): Remove support for unread-command-char. + 2012-09-12 Eli Zaretskii * w32proc.c (sys_kill): If PID is our process ID and the signal is diff --git a/src/data.c b/src/data.c index d894ac71a65..5d7f036b70d 100644 --- a/src/data.c +++ b/src/data.c @@ -1164,7 +1164,7 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where, the default binding is loaded, the loaded binding may be the wrong one. */ if (!EQ (blv->where, where) - /* Also unload a global binding (if the var is local_if_set). */ + /* Also unload a global binding (if the var is local_if_set). */ || (EQ (blv->valcell, blv->defcell))) { /* The currently loaded binding is not necessarily valid. diff --git a/src/keyboard.c b/src/keyboard.c index 8091258578c..7be3e9e118e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -2366,15 +2366,6 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, goto reread_first; } - if (unread_command_char != -1) - { - XSETINT (c, unread_command_char); - unread_command_char = -1; - - reread = 1; - goto reread_first; - } - if (CONSP (Vunread_command_events)) { int was_disabled = 0; @@ -2559,7 +2550,6 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, && !NILP (prev_event) && ! EVENT_HAS_PARAMETERS (prev_event) /* Don't bring up a menu if we already have another event. */ && NILP (Vunread_command_events) - && unread_command_char < 0 && !detect_input_pending_run_timers (0)) { c = read_char_minibuf_menu_prompt (commandflag, nmaps, maps); @@ -2695,8 +2685,7 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, && !EQ (XCAR (prev_event), Qmenu_bar) && !EQ (XCAR (prev_event), Qtool_bar) /* Don't bring up a menu if we already have another event. */ - && NILP (Vunread_command_events) - && unread_command_char < 0) + && NILP (Vunread_command_events)) { c = read_char_x_menu_prompt (nmaps, maps, prev_event, used_mouse_menu); @@ -10453,7 +10442,7 @@ clear_input_pending (void) int requeued_events_pending_p (void) { - return (!NILP (Vunread_command_events) || unread_command_char != -1); + return (!NILP (Vunread_command_events)); } @@ -10463,7 +10452,7 @@ Actually, the value is nil only if we can be sure that no input is available; if there is a doubt, the value is t. */) (void) { - if (!NILP (Vunread_command_events) || unread_command_char != -1 + if (!NILP (Vunread_command_events) || !NILP (Vunread_post_input_method_events) || !NILP (Vunread_input_method_events)) return (Qt); @@ -10651,7 +10640,6 @@ Also end any kbd macro being defined. */) update_mode_lines++; Vunread_command_events = Qnil; - unread_command_char = -1; discard_tty_input (); @@ -10991,7 +10979,6 @@ quit_throw_to_read_char (int from_signal) input_pending = 0; Vunread_command_events = Qnil; - unread_command_char = -1; #if 0 /* Currently, sit_for is called from read_char without turning off polling. And that can call set_waiting_for_input. @@ -11378,12 +11365,11 @@ delete_kboard (KBOARD *kb) void init_keyboard (void) { - /* This is correct before outermost invocation of the editor loop */ + /* This is correct before outermost invocation of the editor loop. */ command_loop_level = -1; immediate_quit = 0; quit_char = Ctl ('g'); Vunread_command_events = Qnil; - unread_command_char = -1; timer_idleness_start_time = invalid_emacs_time (); total_keys = 0; recent_keys_index = 0; @@ -11716,9 +11702,6 @@ as they will already have been added once as they were read for the first time. An element of the form (t . EVENT) forces EVENT to be added to that list. */); Vunread_command_events = Qnil; - DEFVAR_INT ("unread-command-char", unread_command_char, - doc: /* If not -1, an object to be read as next command input event. */); - DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events, doc: /* List of events to be processed as input by input methods. These events are processed before `unread-command-events'