2009-06-24 12 views
14

Quando si avvia Emacs, viene valutato init.el (o .emacs.el). Tuttavia, quando si avvia emacsclient, non viene valutato alcun codice Lisp simile.Come valutare automaticamente un determinato codice Lisp dopo aver avviato un emacsclient?

Come è possibile ottenere un file Lisp da valutare ogni volta che apro un nuovo emacsclient?

(Questo sarebbe utile per personalizzazioni specifiche del telaio.)

suppongo la risposta è quella di utilizzare un po 'di gancio, ma io non riesco a trovare il gancio corretto da utilizzare.

Non vedo l'ora di ricevere le vostre risposte.

risposta

5

Se si vuole veramente nuove personalizzazioni del telaio, c'è create-frame-gancio che prende un'arg (il nuovo telaio) ...

Se vuoi dire gnuclient, è possibile utilizzare l'opzione della riga di comando "-EVAL "per valutare qualcosa (e poi basta fare un alias per sempre valutare le tue personalizzazioni).

15

È possibile aggiungere una funzione al gancio 'server-visit-hook, che viene eseguito ogni volta che viene chiamato il server (ogni volta che si chiama emacsclient).

+6

Apparentemente questo hook viene chiamato solo se a emacsclient viene passata una lista di file. Se viene chiamato senza specificare alcun file, il hook non viene eseguito, il che è fastidioso. – FixMaker

7

Uso il seguente codice per modificare automaticamente il comportamento dei buffer del server. Lo uso soprattutto con l'estensione per Firefox It's All Text. In tale estensione, i buffer sono denominati in base al nome del dominio, quindi è possibile determinare quale regola applicare utilizzando string-match per abbinare il nome del file.

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

Prova 'window-setup-hook. Questo risolve il fastidio dato che è chiamato anche se emacsclient non ha passato un file.

Problemi correlati