【发布时间】:2013-07-24 00:52:04
【问题描述】:
有人可以帮我提供一个功能,该功能检测是否存在名为“xyz”的框架,如果存在,则切换到该框架。我正在使用 frame-cmds 为每个框架指定一个用户定义的名称:http://www.emacswiki.org/emacs/frame-cmds.el
我想它类似于缓冲区,但我在 Google 上找不到任何东西。这里是缓冲函数:
(defun buffer-exists (bufname)
(not (eq nil (get-buffer bufname))))
(defun lawlist-switch-to-buffer-xyz ()
(interactive)
(if (buffer-exists "xyz")
(switch-to-buffer "xyz") ))
这是一个半相关的帖子:https://superuser.com/questions/358037/emacsclient-create-a-frame-if-a-frame-does-not-exist
编辑(2014 年 9 月 15 日):修改函数 ido-switch-frame 以使 frame-to 成为 let 绑定变量,并删除了 message。删除了以前的编辑,因为 Drew Adams 编写的函数 get-a-frame 和 get-frame-name 在与 select-frame-set-input-focus 结合使用时就足够了——请参阅下面的答案。
(defun ido-switch-frame ()
(interactive)
(when (not (minibufferp))
(let* (
(frames (frame-list))
(frame-to (ido-completing-read "Select Frame: "
(mapcar (lambda (frame) (frame-parameter frame 'name)) frames))))
(catch 'break
(while frames
(let ((frame (car frames)))
(if (equal (frame-parameter frame 'name) frame-to)
(throw 'break (select-frame-set-input-focus frame))
(setq frames (cdr frames)))))))))
【问题讨论】: