Ich möchte wieder verwenden current-prefix-arg
beim Aufruf this-command
. Ich kann mir vorstellen, wie man seinen Wert erfassen und an veränderte Funktionen weitergeben kann. Aber das scheint keine gute Lösung zu sein. Wie kann ich es wiederverwenden (z. B. zurück auf eine Art Call-Stack oder was auch immer Emacs verwendet)?Wie übergeben Strom-Präfix-Arg zu diesem Befehl
Das Beispiel eine einfache Funktion ist zum Erhöhen/Vermindern der Angaben in der Region schreibt ich gerade da, wo ich vorübergehend will binden i oder Abnahme zu erhöhen, wenn es mit dem Präfix aufgerufen wurde. Kann ich das tun, ohne der Funktion ein weiteres Argument hinzuzufügen, sondern nur das ursprüngliche Präfix?
(defun my-toggle-increment-numbers (start end)
"Simple function to increment numbers in region. Decrement with prefix."
(interactive "r")
(let (deactivate-mark)
(goto-char start)
(while (re-search-forward "\\([[:digit:]]+\\)" end 'move)
(replace-match (number-to-string
(+ (if current-prefix-arg -1 1)
(string-to-number (match-string 1))))
nil nil nil 1))
;; what is good way to reused the current-prefix-argument value when
;; calling this-command?
(set-transient-map
(let ((km (make-sparse-keymap)))
(define-key km "i" this-command)
km)
t)))
@jenesaisquoi: Druck auf ungelesene-Befehl-Ereignisse kann (oder auch nicht) arbeiten, aber wenn der Benutzer dann einen anderen Befehl aufruft, wer weiß, welche Wirkung würde dein Präfix Argument haben ?! Ich bin mir ziemlich sicher, dass du so etwas nicht machen willst. – phils
Der vorherige Präfix-arg-Wert ist als 'last-prefix-arg' verfügbar, also' (let ((current-prefix-arg last-prefix-arg))) ist eine Sache, die Sie tun können. Ich habe das nicht getestet, aber Sie könnten versuchen '(lassen Sie ((current-prefix-arg last-prefix-arg)) (Aufruf-interaktiv letzten-Befehl))' – phils
@phils Danke, das war, was ich gesucht habe – jenesaisquoi