我需要能够创建框架并以编程方式引用它们。
如何创建一个具有给定名称的新 Emacs 框架,以便以后可以引用它?
我知道如何以交互方式或编程方式创建新的框架:https://www.gnu.org/software/emacs/manual/html_node/emacs/Creating-Frames.html
可以用不同的方式显示框架标题:http://www.emacswiki.org/emacs/FrameTitle但我找不到如何设置和引用框架名称。
代码指针或精确的搜索引擎搜索就足够了。
先感谢您。
答案1
听起来你想得到一个框架,给出它的名字。使用函数get-a-frame
,在图书馆frame-fns.el
要做到这一点。
如果您想从框架中获取框架名称,请使用get-frame-name
同一个库中的函数。
(另请参阅图书馆frame-cmds.el
。
答案2
参见select-frame-set-input-focus
http://www.gnu.org/software/emacs/manual/html_node/elisp/Input-Focus.html。例如,尝试
(select-frame-set-input-focus (second (frame-list)))
答案3
感谢大家提供的链接和代码。我学到了很多东西!
研究了这些页面之后,似乎 Emacs 不允许为新框架分配自定义 ID。
因此,为了唯一地引用新创建的框架,需要捕获 Emacs 在创建时分配的 ID。
现在我可以用这样的函数更好地表达我所寻找的内容:
(defun my/frame-create (&optional title)
"Create a new frame returning its internal id,
optionally setting TITLE as title"
(interactive "sNew frame name: ")
(progn
(setq my/frame-id (make-frame-command))
(set-frame-name title))
my/frame-id)
该函数创建一个新的框架,并返回其ID,以便可以随时调用该框架。
我将非常感激任何使用适当的 elisp 习语编写此功能或类似功能的评论。
再次感谢大家的建议。