# HG changeset patch # User Eli Zaretskii # Date 1067706096 0 # Node ID 6fc70221e5c7ef0267d789805fa794ccdba52376 # Parent 0f3d00e06554f7a38745dc2d14e520ee1153b9bf (overriding-map-is-bound, saved-overriding-map): New variables. (ensure-overriding-map-is-bound, restore-overriding-map): New functions. (universal-argument, universal-argument-more, negative-argument) (digit-argument, universal-argument-other-key): Minor changes. diff -r 0f3d00e06554 -r 6fc70221e5c7 lisp/simple.el --- a/lisp/simple.el Sat Nov 01 17:00:02 2003 +0000 +++ b/lisp/simple.el Sat Nov 01 17:01:36 2003 +0000 @@ -1657,6 +1657,26 @@ `universal-argument-other-key' uses this to discard those events from (this-command-keys), and reread only the final command.") +(defvar overriding-map-is-bound nil + "Non-nil when `overriding-terminal-local-map' is `universal-argument-map'.") + +(defvar saved-overriding-map nil + "The saved value of `overriding-terminal-local-map'. +That variable gets restored to this value on exiting \"universal +argument mode\".") + +(defun ensure-overriding-map-is-bound () + "Check `overriding-terminal-local-map' is `universal-argument-map'." + (unless overriding-map-is-bound + (setq saved-overriding-map overriding-terminal-local-map) + (setq overriding-terminal-local-map universal-argument-map) + (setq overriding-map-is-bound t))) + +(defun restore-overriding-map () + "Restore `overriding-terminal-local-map' to its saved value." + (setq overriding-terminal-local-map saved-overriding-map) + (setq overriding-map-is-bound nil)) + (defun universal-argument () "Begin a numeric argument for the following command. Digits or minus sign following \\[universal-argument] make up the numeric argument. @@ -1670,7 +1690,7 @@ (interactive) (setq prefix-arg (list 4)) (setq universal-argument-num-events (length (this-command-keys))) - (setq overriding-terminal-local-map universal-argument-map)) + (ensure-overriding-map-is-bound)) ;; A subsequent C-u means to multiply the factor by 4 if we've typed ;; nothing but C-u's; otherwise it means to terminate the prefix arg. @@ -1681,7 +1701,7 @@ (if (eq arg '-) (setq prefix-arg (list -4)) (setq prefix-arg arg) - (setq overriding-terminal-local-map nil))) + (restore-overriding-map))) (setq universal-argument-num-events (length (this-command-keys)))) (defun negative-argument (arg) @@ -1695,7 +1715,7 @@ (t (setq prefix-arg '-))) (setq universal-argument-num-events (length (this-command-keys))) - (setq overriding-terminal-local-map universal-argument-map)) + (ensure-overriding-map-is-bound)) (defun digit-argument (arg) "Part of the numeric argument for the next command. @@ -1714,7 +1734,7 @@ (t (setq prefix-arg digit)))) (setq universal-argument-num-events (length (this-command-keys))) - (setq overriding-terminal-local-map universal-argument-map)) + (ensure-overriding-map-is-bound)) ;; For backward compatibility, minus with no modifiers is an ordinary ;; command if digits have already been entered. @@ -1735,7 +1755,7 @@ (append (nthcdr universal-argument-num-events keylist) unread-command-events))) (reset-this-command-lengths) - (setq overriding-terminal-local-map nil)) + (restore-overriding-map)) ;;;; Window system cut and paste hooks. @@ -3348,7 +3368,7 @@ (setq arg (current-column))) (if (not (integerp arg)) ;; Disallow missing argument; it's probably a typo for C-x C-f. - (error "set-fill-column requires an explicit argument") + (error "Set-fill-column requires an explicit argument") (message "Fill column set to %d (was %d)" arg fill-column) (setq fill-column arg)))