Mercurial > emacs
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. |