2009-06-24 10 views
14

Emacsを起動すると、init.el(または.emacs.el)が評価されます。しかし、emacsclientを起動すると、同様のlispコードは評価されません。emacsclientを起動した後に特定のlispコードを自動的に評価する方法は?

新しいemacsclientを開くたびにlispファイルを評価する方法を教えてください。

(これはフレーム固有のカスタマイズのために便利になります。)

私は答えはいくつかのフックを使用することですが、私は使用する正しいフックを見つけるように見えることはできませんと仮定します。

私はあなたの答えを楽しみにしています。

答えて

5

あなたが本当に新しいフレームのカスタマイズをしたい場合は、

あなたがgnuclientを意味する場合は、コマンドラインオプションを使用することができます「-eval ...作成フレームフック1つの引数(新しいフレーム)をとるがあります何かを評価する(そして、あなたのカスタマイズを常に評価するエイリアスを作る)。

15

フック'server-visit-hookに関数を追加することができます。フック'server-visit-hookは、サーバが呼び出されるたびに(emacsclientを呼び出すたびに実行されます)。

+6

明らかに、このフックは、emacsclientにファイルリストが渡された場合にのみ呼び出されます。ファイルを指定せずに呼び出された場合、フックは実行されません。これは迷惑です。 – FixMaker

7

次のコードを使用してサーバーバッファの動作を自動的に変更します。特にFirefox拡張機能It's All Textで使用します。その拡張子では、バッファにはドメイン名に基づいて名前が付けられているので、ファイルの名前と一致するようにstring-matchを使用して適用するルールを特定することができます。

(defun server-edit-presets() 
    (cond 
    ;; When editing mail, set the goal-column to 72. 
    ((string-match "mail\\.google\\.com\\.[0-9a-z]+\\.txt" (buffer-name)) 
    (longlines-mode-off) 
    (auto-fill-mode 1) 
    (set-fill-column 72) 
    (save-excursion 
     ;; Don't know if this is necessary, but it seems to help. 
     (set-buffer (buffer-name)) 
     (goto-char (point-min)) 
     ;; Replace non-breaking strange space characters 
     (while (search-forward (char-to-string 160) nil t) 
     (replace-match " ")))))) 

(add-hook 'server-visit-hook 'server-edit-presets) 
(add-hook 'server-visit-hook '(lambda() (longlines-mode 1))) 
1

@LSW:

'window-setup-hookを試してみてください。 emacsclientがファイルを渡さなくても呼び出されるので、これは煩わしさに対処します。

関連する問題