Как автоматически оценить определенный код lisp после запуска emacsclient? - PullRequest
14 голосов
/ 24 июня 2009

При запуске Emacs оценивается init.el (или .emacs.el). Однако при запуске emacsclient аналогичный код lisp не оценивается.

Как получить файл lisp для оценки каждый раз, когда я открываю новый emacsclient?

(Это было бы удобно для конкретных настроек кадра.)

Я предполагаю, что ответ заключается в использовании некоторого хука, но я не могу найти правильный хук для использования.

Я с нетерпением жду ваших ответов.

Ответы [ 4 ]

16 голосов
/ 24 июня 2009

Вы можете добавить функцию в ловушку 'server-visit-hook, которая запускается каждый раз, когда вызывается сервер (каждый раз, когда вы вызываете emacsclient).

7 голосов
/ 25 июня 2009

Я использую следующий код для автоматического изменения поведения буферов сервера. Я использую его особенно с расширением Firefox Это все текст . В этом расширении буферы именуются в соответствии с именем домена, поэтому вы можете определить, какое правило применять, используя 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)))
5 голосов
/ 24 июня 2009

Если вам действительно нужны новые настройки фреймов, есть create-frame-hook, который берет один аргумент (новый фрейм) ...

Если вы имеете в виду gnuclient, вы можете использовать параметр командной строки «-eval» для оценки чего-либо (а затем просто создать псевдоним, чтобы всегда проверять ваши настройки).

1 голос
/ 01 июля 2015

@ LSW:

Попробуйте 'window-setup-hook. Это устраняет раздражение, поскольку оно вызывается, даже если в emacsclient не передан файл.

...