Ширина поля в Emacs?
Я использую следующий фрагмент, чтобы установить 1-символьное поле для обоих краев буфера Emacs ( благодаря zev!):
(add-hook 'window-configuration-change-hook
(lambda ()
(set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 1 1)))
Однако я также хотел бы иметь другую конфигурацию, которая дает мне очень широкие левые и правые поля (скажем, 30 символов). Как я мог назначить горячую клавишу для переключения между этими двумя состояниями, возможно, по всем буферам?
Я попробовал следующее:
(global-set-key [(control f10)]
(add-hook 'window-configuration-change-hook
(lambda ()
(set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30))))
Но получил эту ошибку:
Wrong type argument: commandp, ((lambda nil (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30)) (lambda nil (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 1 1)) frame-local-variables-check)
Где я не прав? Спасибо за любые объяснения. Ура!
РЕДАКТИРОВАТЬ:
Я хорошо знаю режим темной комнаты, который обеспечивает такие широкие поля. Но, похоже, он не работает безупречно на моей XP.
1 ответ
Это должно заставить вас идти:
(global-set-key [C-f10]
(lambda ()
(interactive)
(set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30)))
Ваш пример не работает, так как global-set-key ожидает, что второй аргумент будет command
отсюда и ошибка. Также ваше ключевое определение немного странно.
Для вашего комментария:
(walk-windows (lambda (window) (set-window-margins window 30 30)) nil t)