Emacs 如何在启动EmacClient后自动评估某些lisp代码?

Emacs 如何在启动EmacClient后自动评估某些lisp代码?,emacs,emacsclient,Emacs,Emacsclient,启动Emacs时,将计算init.el(或.Emacs.el)。但是,在启动EmacClient时,不会计算类似的lisp代码 如何在每次打开新的EmacClient时获取要评估的lisp文件 (这对于特定于帧的自定义非常方便。) 我想答案是使用一些钩子,但我似乎找不到正确的钩子来使用 我期待您的回答。如果您真的想要新的框架定制,有一个create frame hook,它接受一个arg(新框架) 如果您指的是gnuclient,您可以使用命令行选项“-eval”来评估某些内容(然后只需制作一个

启动Emacs时,将计算init.el(或.Emacs.el)。但是,在启动EmacClient时,不会计算类似的lisp代码

如何在每次打开新的EmacClient时获取要评估的lisp文件

(这对于特定于帧的自定义非常方便。)

我想答案是使用一些钩子,但我似乎找不到正确的钩子来使用


我期待您的回答。

如果您真的想要新的框架定制,有一个create frame hook,它接受一个arg(新框架)


如果您指的是gnuclient,您可以使用命令行选项“-eval”来评估某些内容(然后只需制作一个别名来始终评估您的自定义设置)。

您可以向hook
'server-visit-hook
添加一个函数,该函数在每次调用服务器时(每次调用
EmacClient
)都会运行.

我使用以下代码自动更改服务器缓冲区的行为。我特别在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)))
@LSW:


试试
“window-setup-hook
。这解决了问题,因为即使没有向EmacClient传递文件,也会调用它。

显然,只有向EmacClient传递文件列表时才会调用此钩子。如果在没有指定任何文件的情况下调用它,那么钩子就不会运行——这很烦人。