как связать ключ с несколькими операциями в Emacs

295
daj

Я использую emacs в течение многих лет, но я относительно новичок в настройке lisp (помимо добавления строк из других скриптов / инструкций по установке emacs / инструкций по установке пакетов). Я запрограммировал схему раньше, так что я немного знаком, но это было также давно.

Как мне сопоставить ключ с более чем одной операцией? Я приспосабливаю форму кода lisp размера шрифта цикла: http://www.emacswiki.org/emacs/CycleFontSizes

за исключением того, что я хотел бы максимизировать окно (я использую Mac OSX) после изменения размера шрифта.

Я могу максимизировать окно, используя maxframe:

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

Как мне добавить это к привязкам клавиш размера шрифта. Я хотел бы сделать что-то вроде:

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

Это не правильно, потому что define-key ожидает другого типа. Это, наверное, довольно тривиально, увидев пример ...

2

1 ответ на вопрос

3
Doug Harris

Обновить

Вы очень близки - просто нужно определить свою функцию как интерактивную, включив в нее одну строку (interactive)и сделать вызов для font-zoom-reset-font-sizeфактического вызова функции, а не просто ссылку на функцию:

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

Оригинальный (и до сих пор действующий) ответ

Вы можете определить функцию с помощью нескольких шагов, а затем связать ключ с этой функцией. Что-то вроде:

(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) 

Похожие вопросы