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

时间:2015-01-14 09:52:00

标签: emacs elisp emacsclient

我的.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

这是为什么?根据{{​​3}} after-make-frame-functions挂钩应该只在新创建一个帧后运行,那么为什么我的函数找不到呢?

1 个答案:

答案 0 :(得分:3)

frame函数不存在,也许您打算访问参数而不是调用函数,即foo-focus-new-frame中有无关的括号:

(defun foo-focus-new-frame (frame)
  (select-frame-set-input-focus frame))