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