2

次のスニペットを使用して、Emacs バッファーの両端に 1 文字のマージンを設定しています ( zev! のおかげです)。

(add-hook 'window-configuration-change-hook
      (lambda ()
        (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 1 1)))

ただし、非常に広い左右のマージン (たとえば 30 文字) を提供する別の構成も必要です。おそらくすべてのバッファで、これら 2 つの状態を切り替えるホットキーを割り当てるにはどうすればよいですか?

私は次のことを試しました:

(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 では問題なく動作するようには見えません。

4

1 に答える 1

2

これでうまくいくはずです:

(global-set-key [C-f10]
     (lambda ()
     (interactive)
     (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30)))

global-set-keyは2番目の引数がであると想定しているため、この例は機能しませんcommand。したがって、エラーが発生します。また、あなたの重要な定義は少し奇妙です。

あなたのコメントのために:

(walk-windows (lambda (window) (set-window-margins window 30 30)) nil t)
于 2011-11-09T12:42:51.747 に答える