Как связать ключ с более чем одной операцией в Emacs
Я использую 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 ожидает другого типа. Это, наверное, довольно тривиально, увидев пример...
1 ответ
Обновить
Вы очень близки - просто нужно определить свою функцию как интерактивную, включив одну строку (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)