# HG changeset patch # User Stefan Monnier # Date 1190325443 0 # Node ID e3787b1a7e846dcfacb94925c9e676e8e6cd64b8 # Parent e6e2af0f00c52a86a233f189fd216e40d4d50131 (get-device-terminal): New function. Moved from termdev.el. (frames-on-display-list): Use it. diff -r e6e2af0f00c5 -r e3787b1a7e84 lisp/frame.el --- a/lisp/frame.el Thu Sep 20 21:49:18 2007 +0000 +++ b/lisp/frame.el Thu Sep 20 21:57:23 2007 +0000 @@ -31,9 +31,8 @@ (list (cons nil (if (fboundp 'tty-create-frame-with-faces) 'tty-create-frame-with-faces - (function - (lambda (parameters) - (error "Can't create multiple frames without a window system")))))) + (lambda (parameters) + (error "Can't create multiple frames without a window system"))))) "Alist of window-system dependent functions to call to create a new frame. The window system startup file should add its frame creation function to this list, which should take an alist of parameters @@ -757,16 +756,35 @@ (lambda (frame) (eq frame (window-frame (minibuffer-window frame)))))) -(defun frames-on-display-list (&optional terminal) - "Return a list of all frames on TERMINAL. +;; Used to be called `terminal-id' in termdev.el. +(defun get-device-terminal (device) + "Return the terminal corresponding to DEVICE. +DEVICE can be a terminal, a frame, nil (meaning the selected frame's terminal), +the name of an X display device (HOST.SERVER.SCREEN) or a tty device file." + (cond + ((or (null device) (framep device)) + (frame-terminal device)) + ((stringp device) + (let ((f (car (filtered-frame-list + (lambda (frame) + (or (equal (frame-parameter frame 'display) device) + (equal (frame-parameter frame 'tty) device))))))) + (or f (error "Display %s does not exist" device)) + (frame-terminal f))) + ((terminal-live-p device) device) + (t + (error "Invalid argument %s in `get-device-terminal'" device)))) -TERMINAL should be a terminal, a frame, -or a name of an X display (a string of the form +(defun frames-on-display-list (&optional device) + "Return a list of all frames on DEVICE. + +DEVICE should be a terminal, a frame, +or a name of an X display or tty (a string of the form HOST:SERVER.SCREEN). -If TERMINAL is omitted or nil, it defaults to the selected +If DEVICE is omitted or nil, it defaults to the selected frame's terminal device." - (let* ((terminal (terminal-id terminal)) + (let* ((terminal (get-device-terminal device)) (func #'(lambda (frame) (eq (frame-terminal frame) terminal)))) (filtered-frame-list func)))