mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-27 10:54:40 +00:00
(universal-argument, describe-arg): Restore Lisp code,
undoing Feb 28 change. (prefix-arg-internal, digit-argument, negative-argument): Likewise.
This commit is contained in:
parent
3b8c40f5ba
commit
e8d1a37725
@ -935,6 +935,77 @@ In either case, the output is inserted after point (leaving mark after it)."
|
||||
(t
|
||||
(set-window-start (display-buffer buffer) 1))))))))
|
||||
|
||||
(defun universal-argument ()
|
||||
"Begin a numeric argument for the following command.
|
||||
Digits or minus sign following \\[universal-argument] make up the numeric argument.
|
||||
\\[universal-argument] following the digits or minus sign ends the argument.
|
||||
\\[universal-argument] without digits or minus sign provides 4 as argument.
|
||||
Repeating \\[universal-argument] without digits or minus sign
|
||||
multiplies the argument by 4 each time."
|
||||
(interactive nil)
|
||||
(let ((factor 4)
|
||||
key)
|
||||
;; (describe-arg (list factor) 1)
|
||||
(setq key (read-key-sequence nil t))
|
||||
(while (equal (key-binding key) 'universal-argument)
|
||||
(setq factor (* 4 factor))
|
||||
;; (describe-arg (list factor) 1)
|
||||
(setq key (read-key-sequence nil t)))
|
||||
(prefix-arg-internal key factor nil)))
|
||||
|
||||
(defun prefix-arg-internal (key factor value)
|
||||
(let ((sign 1))
|
||||
(if (and (numberp value) (< value 0))
|
||||
(setq sign -1 value (- value)))
|
||||
(if (eq value '-)
|
||||
(setq sign -1 value nil))
|
||||
;; (describe-arg value sign)
|
||||
(while (equal key "-")
|
||||
(setq sign (- sign) factor nil)
|
||||
;; (describe-arg value sign)
|
||||
(setq key (read-key-sequence nil t)))
|
||||
(while (and (stringp key)
|
||||
(= (length key) 1)
|
||||
(not (string< key "0"))
|
||||
(not (string< "9" key)))
|
||||
(setq value (+ (* (if (numberp value) value 0) 10)
|
||||
(- (aref key 0) ?0))
|
||||
factor nil)
|
||||
;; (describe-arg value sign)
|
||||
(setq key (read-key-sequence nil t)))
|
||||
(setq prefix-arg
|
||||
(cond (factor (list factor))
|
||||
((numberp value) (* value sign))
|
||||
((= sign -1) '-)))
|
||||
;; Calling universal-argument after digits
|
||||
;; terminates the argument but is ignored.
|
||||
(if (eq (key-binding key) 'universal-argument)
|
||||
(progn
|
||||
(describe-arg value sign)
|
||||
(setq key (read-key-sequence nil t))))
|
||||
(setq unread-command-events (listify-key-sequence key))))
|
||||
|
||||
(defun describe-arg (value sign)
|
||||
(cond ((numberp value)
|
||||
(message "Arg: %d" (* value sign)))
|
||||
((consp value)
|
||||
(message "Arg: [%d]" (car value)))
|
||||
((< sign 0)
|
||||
(message "Arg: -"))))
|
||||
|
||||
(defun digit-argument (arg)
|
||||
"Part of the numeric argument for the next command.
|
||||
\\[universal-argument] following digits or minus sign ends the argument."
|
||||
(interactive "P")
|
||||
(prefix-arg-internal (char-to-string (logand last-command-char ?\177))
|
||||
nil arg))
|
||||
|
||||
(defun negative-argument (arg)
|
||||
"Begin a negative numeric argument for the next command.
|
||||
\\[universal-argument] following digits or minus sign ends the argument."
|
||||
(interactive "P")
|
||||
(prefix-arg-internal "-" nil arg))
|
||||
|
||||
(defun forward-to-indentation (arg)
|
||||
"Move forward ARG lines and position at first nonblank character."
|
||||
(interactive "p")
|
||||
|
Loading…
Reference in New Issue
Block a user