Как связать ключ с более чем одной операцией в 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)
Другие вопросы по тегам