如何以编程方式创建具有给定名称的新 Emacs 框架?

如何以编程方式创建具有给定名称的新 Emacs 框架?

我需要能够创建框架并以编程方式引用它们。

如何创建一个具有给定名称的新 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-focushttp://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 习语编写此功能或类似功能的评论。

再次感谢大家的建议。

相关内容