2011-11-09 8 views
2

私はEmacsバッファ(thanks to zev!)の両端に1文字のマージンを設定するには、次のコードを使用しています:Emacsのマージン幅を切り替えるには?

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

を?説明をありがとう。乾杯!

EDIT:

私はこのような広いマージンを提供darkroom-modeをよく知っています。しかし、それは私のXP上で完璧に動作していないようです。

答えて

2

これは、あなたが行くを取得する必要があります:

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

あなたの例では、グローバル・セットキーとして動作しませんので、commandなるように第二引数、エラーを期待しています。また、あなたの鍵となる定義はちょっと奇妙です。あなたのコメントについては

(walk-windows (lambda (window) (set-window-margins window 30 30)) nil t) 
+0

+1。これは非常にうまくいく、ありがとう。 – marttt

+0

しかし、**すべての**バッファでこの作業をどうすればできますか? '(get-buffer-window-list(buffer-list))を設定することは役に立ちませんでした。ありがとう! – marttt

+0

@mart 'set-window-margin'はバッファ上で動作しません。ウィンドウ上で動作します。私はコードを追加しましたが、Elispのinfoページを読むことをお勧めします: 'M-x info RET m Elisp RET' – pmr

関連する問題