aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii1997-12-01 14:22:04 +0000
committerEli Zaretskii1997-12-01 14:22:04 +0000
commit845cde06cd0e21689c48f854a819e8a4de4e5f5a (patch)
tree10b6e22715a924c117e85e1d0da7896f0f5f6fae
parent59c14ec62db0a72733e90945dd6b5560dc0b8d75 (diff)
downloademacs-845cde06cd0e21689c48f854a819e8a4de4e5f5a.tar.gz
emacs-845cde06cd0e21689c48f854a819e8a4de4e5f5a.zip
(make-frame-names-alist, select-frame-by-name): New
functions, support frame selection by name with completion and history. (frame-name-history, frame-names-alist): New variables.
-rw-r--r--lisp/frame.el37
1 files changed, 37 insertions, 0 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index e4531a3d15a..14da34c822e 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -520,6 +520,43 @@ A negative ARG moves in the opposite order."
520 (if (eq window-system 'w32) 520 (if (eq window-system 'w32)
521 (w32-focus-frame frame) 521 (w32-focus-frame frame)
522 (set-mouse-position (selected-frame) (1- (frame-width)) 0)))) 522 (set-mouse-position (selected-frame) (1- (frame-width)) 0))))
523
524(defun make-frame-names-alist ()
525 (let* ((current-frame (selected-frame))
526 (falist
527 (cons
528 (cons (frame-parameter current-frame 'name) current-frame) nil))
529 (frame (next-frame nil t)))
530 (while (not (eq frame current-frame))
531 (progn
532 (setq falist (cons (cons (frame-parameter frame 'name) frame) falist))
533 (setq frame (next-frame frame t))))
534 falist))
535
536(defvar frame-name-history nil)
537(defvar frame-names-alist nil)
538(defun select-frame-by-name (name)
539 "Select the frame whose name is NAME and raise it.
540If there is no frame by that name, signal an error."
541 (interactive
542 (let (input default)
543 (setq frame-names-alist (make-frame-names-alist))
544 (setq default (car (car frame-names-alist)))
545 (setq input
546 (completing-read
547 (format "Select Frame (default %s): " default)
548 frame-names-alist nil t nil 'frame-name-history))
549 (if (= (length input) 0)
550 (list default)
551 (list input))))
552 (or (interactive-p)
553 (setq frame-names-alist (make-frame-names-alist)))
554 (let ((frame (cdr (assoc name frame-names-alist))))
555 (or frame
556 (error "There is no frame named `%s'" name))
557 (make-frame-visible frame)
558 (raise-frame frame)
559 (select-frame frame)))
523 560
524;;;; Frame configurations 561;;;; Frame configurations
525 562