comparison lisp/frame.el @ 20386:25ca60b3ca09

(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.
author Eli Zaretskii <eliz@gnu.org>
date Mon, 01 Dec 1997 14:22:04 +0000
parents 799de2d79c64
children 7a873226ee07
comparison
equal deleted inserted replaced
20385:e1ea41eba8be 20386:25ca60b3ca09
518 (select-frame frame) 518 (select-frame frame)
519 ;; Ensure, if possible, that frame gets input focus. 519 ;; Ensure, if possible, that frame gets input focus.
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.
540 If 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
526 (defun current-frame-configuration () 563 (defun current-frame-configuration ()
527 "Return a list describing the positions and states of all frames. 564 "Return a list describing the positions and states of all frames.