Если существует фрейм с именем «xyz», переключитесь на этот фрейм
Может кто-нибудь, пожалуйста, помогите мне с функцией, которая определяет, существует ли фрейм с именем "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
РЕДАКТИРОВАТЬ (15 сентября 2014 г.): изменена функцияido-switch-frame
делатьframe-to
переменная с привязкой, и удалилаmessage
, Удалены предыдущие изменения как функции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)))))))))