2009-06-24 12 views
14

Podczas uruchamiania Emacsa zostanie oceniony plik init.el (lub .emacs.el). Jednak podczas uruchamiania emacsclient nie jest oceniany podobny kod lisp.Jak automatycznie oceniać niektóre kody lisp po uruchomieniu emacsclient?

Jak można uzyskać plik LISP do oceny za każdym razem, gdy otwieram nowy emacsclient?

(To byłby przydatny dla konkretnych dostosowań ramy.)

Zakładam, że odpowiedź jest użycie jakiegoś haka, ale nie wydaje się znaleźć właściwą hak do wykorzystania.

Czekam na Twoje odpowiedzi.

Odpowiedz

5

Jeśli naprawdę chcesz dostosowania nowych ramek, nie tworzyć-frame-hak, która przyjmuje jedną Arg (nowa rama) ...

Jeśli masz na myśli gnuclient, można użyć opcji wiersza polecenia „-eval "Aby ocenić coś (a następnie po prostu utworzyć alias, aby zawsze sprawdzać swoje dostosowania).

15

Możesz dodać funkcję do haka 'server-visit-hook, która jest uruchamiana przy każdym wywołaniu serwera (za każdym razem, gdy dzwonisz pod numer emacsclient).

+6

Najwyraźniej ten hak jest wywoływany tylko wtedy, gdy emacsclient jest przekazywany do listy plików. Jeśli zostanie wywołany bez określenia jakiegokolwiek pliku, to hak nie zostanie uruchomiony - co jest denerwujące. – FixMaker

7

Poniższy kod służy do automatycznej zmiany zachowania buforów serwerów. Używam go zwłaszcza z rozszerzeniem przeglądarki Firefox It's All Text. W tym rozszerzeniu, bufory są nazwane zgodnie z nazwą domeny, więc możesz dowiedzieć się, która reguła ma zastosowanie, używając string-match, aby dopasować nazwę pliku.

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

Spróbuj 'window-setup-hook. Rozwiązuje to irytację, ponieważ jest wywoływana, nawet jeśli emacsclient nie jest przekazywany do pliku.

Powiązane problemy