Как автоматически оценить определенный код lisp после запуска emacsclient?
При запуске Emacs оценивается init.el (или.emacs.el). Однако при запуске emacsclient подобный код lisp не оценивается.
Как я могу получить файл lisp для оценки каждый раз, когда открываю новый emacsclient?
(Это было бы удобно для конкретных настроек кадра.)
Я предполагаю, что ответ заключается в использовании некоторого хука, но я не могу найти правильный хук для использования.
Я с нетерпением жду ваших ответов.
5 ответов
Вы можете добавить функцию на крючок 'server-visit-hook
, который запускается каждый раз, когда сервер вызывается (каждый раз, когда вы звоните emacsclient
).
Я использую следующий код для автоматического изменения поведения буферов сервера. Я использую его особенно с расширением 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)))
Если вам действительно нужны новые настройки фреймов, есть create-frame-hook, который принимает один аргумент (новый фрейм)...
Если вы имеете в виду gnuclient, вы можете использовать параметр командной строки "-eval" для оценки чего-либо (а затем просто создать псевдоним, чтобы всегда проверять ваши настройки).
@LSW:
Пытаться 'window-setup-hook
, Это устраняет раздражение, так как оно вызывается, даже если emacsclient не передан в файл.
Похоже, что тех крючков больше нет, так что вот новая версия.
(add-hook 'server-after-make-frame-hook 'consult-recent-file)