Как автоматически оценивать код lisp после запуска emacsclient?

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

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

(Это было бы удобно для специальных настроек для фреймов.)

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

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

Ответы

Ответ 1

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

Ответ 2

Я использую следующий код для автоматического изменения поведения серверных буферов. Я использую его специально с расширением Firefox It 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)))

Ответ 3

Если вам действительно нужны новые настройки фреймов, создайте фрейм-крюк, который принимает один аргумент (новый фрейм)...

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

Ответ 4

@LSW:

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