So binden Sie einen Schlüssel an mehrere Operationen in emacs

377
daj

Ich benutze emacs schon seit Jahren, aber ich bin relativ neu in der Anpassung von lisp (über das Einfügen von Zeilen aus anderen emacs-Skripts / Paketinstallationsanweisungen hinaus). Ich habe das Schema vorher programmiert, also bin ich ein bisschen vertraut, aber das ist auch schon lange her.

Wie ordne ich einen Schlüssel mehreren Vorgängen zu? Ich passe das Lisp-Code-Formular für die Zyklusschriftgröße an: http://www.emacswiki.org/emacs/CycleFontSizes

Außer, dass ich das Fenster (ich verwende Mac OSX) nach der Größenanpassung der Schrift vergrößern möchte.

Ich kann das Fenster mit maxframe maximieren:

(require 'maxframe) (add-hook 'window-setup-hook 'maximize-frame t) 

Wie füge ich dies den Schlüsselbindungen für die Schriftgröße hinzu? Ich möchte etwas tun wie:

(define-key global-map (read-kbd-macro "C-0")  (lambda() 'font-zoom-reset-font-size (add-hook 'window-setup-hook 'maximize-frame t)) ) 

Dies ist nicht korrekt, da von define-key ein anderer Typ erwartet wird. Dies ist wahrscheinlich ziemlich trivial nach einem Beispiel ...

2

1 Antwort auf die Frage

3
Doug Harris

Aktualisieren

Sie sind sehr nahe - Sie müssen nur Ihre Funktion als interaktiv definieren, indem Sie die eine Zeile einschließen (interactive)und den Aufruf font-zoom-reset-font-sizeausführen, um die Funktion tatsächlich aufzurufen, und nicht nur einen Verweis auf die Funktion:

(define-key global-map (read-kbd-macro "C-0")  (lambda() (interactive) (font-zoom-reset-font-size) (add-hook 'window-setup-hook 'maximize-frame t)) ) 

Ursprüngliche (und noch gültige) Antwort

Sie können eine Funktion mit mehreren Schritten definieren und dann den Schlüssel an diese Funktion binden. So etwas wie:

(defun zoom-font-and-max() (interactive) (font-zoom-reset-font-size) (add-hook 'window-setup-hook 'maximize-frame t))   (global-set-key (kbd "C-0") 'zoom-font-and-max)