Ширина поля в Emacs? - PullRequest
       11

Ширина поля в Emacs?

2 голосов
/ 09 ноября 2011

Я использую следующий фрагмент, чтобы установить 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)

Где я не прав? Спасибо за любые объяснения. Ура!

EDIT:

Мне хорошо известен режим темной комнаты , который обеспечивает такие широкие поля. Но, похоже, он не работает безупречно на моей XP.

1 Ответ

2 голосов
/ 09 ноября 2011

Это должно помочь вам:

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