2009-06-24 10 views
14

Emacs'i başlatırken init.el (veya .emacs.el) değerlendirilir. Ancak, emacsclient başlatıldığında, benzer bir lisp kodu değerlendirilmez.Bir emacsclient başlatıldıktan sonra belirli lisp kodları nasıl otomatik olarak değerlendirilir?

Yeni bir emacsclient'i her açtığımda bir lisp dosyasını nasıl değerlendirebilirim?

(Bu çerçeve belirli özelleştirmeler için kullanışlı olacaktır.)

Cevabın bazı kanca kullanmaktır varsayalım, ama kullanılacak doğru kanca bulmak gibi olamaz.

Yanıtlarınızı dört gözle bekliyorum.

cevap

5

Eğer gerçekten yeni çerçeve özelleştirmeleri istiyorsanız,

Eğer gnuclient demek ise, komut satırı seçeneğini kullanabilirsiniz "-eval ... create-çerçeve kanca tek arg (yeni çerçeve) alır var "bir şeyleri değerlendirmek (ve sonra her zaman özelleştirmelerinizi değerlendirmek için bir takma isim).

15

Sunucu her çağrıldığında (emacsclient numaralı telefonu her aradığınızda) çengel 'server-visit-hook işlevine ekleyebilirsiniz.

+6

Görünüşe göre bu kanca yalnızca emacsclient bir dosya listesi iletilirse çağrılır. Herhangi bir dosya belirtmeden çağrılırsa, kanca çalışmaz - bu can sıkıcıdır. – FixMaker

7

Sunucu arabelleklerinin davranışını otomatik olarak değiştirmek için aşağıdaki kodu kullanıyorum. Özellikle Firefox eklentisi It's All Text ile kullanıyorum. Bu uzantıda, arabelleklerin etki alanı adına göre adlandırılır, böylece dosyanın adına eşleştirmek için string-match kullanarak hangi kuralın uygulanacağını belirleyebilirsiniz.

(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 deneyin. Bu, emacsclient bir dosya aktarılmasa bile çağrıldığından beri sıkıntıyı giderir.

İlgili konular