Emacs after-make-frame-functions 参数无效

Emacs after-make-frame-functions argument is void

我的 .emacs 文件中有以下代码。它应该将输入焦点移动到任何新创建的框架。

(defun foo-focus-new-frame (frame)
  (select-frame-set-input-focus (frame)))
(add-hook 'after-make-frame-functions 'foo-focus-new-frame t)

当我直接从命令行 运行 emacs 时,这工作正常。但是,如果 emacs 没有启动,我尝试 运行 以下内容:

emacsclient -c -a '' test.txt

我收到以下错误:

*ERROR*: Symbol's function definition is void: frame

这是为什么?根据documentationafter-make-frame-functions 钩子应该只在新创建一个框架后 运行,所以为什么我的函数找不到它?

frame 函数不存在,也许您打算访问参数而不是调用函数,即 foo-focus-new-frame:

中有多余的括号
(defun foo-focus-new-frame (frame)
  (select-frame-set-input-focus frame))