Commit e5248ac9 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* lisp/server.el (server--on-display-p): New function.

(server--on-display-p): Use it.
parent b4243e22
2012-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
* server.el (server--on-display-p): New function.
(server--on-display-p): Use it.
2012-04-04 Gabor Vida <vidagabor@gmail.com> (tiny change) 2012-04-04 Gabor Vida <vidagabor@gmail.com> (tiny change)
* ido.el (ido-wide-find-dirs-or-files): Use file-name-absolute-p * ido.el (ido-wide-find-dirs-or-files): Use file-name-absolute-p
......
...@@ -367,18 +367,27 @@ If CLIENT is non-nil, add a description of it to the logged message." ...@@ -367,18 +367,27 @@ If CLIENT is non-nil, add a description of it to the logged message."
(server-log (format "Status changed to %s: %s" (process-status proc) msg) proc) (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc)
(server-delete-client proc)) (server-delete-client proc))
(defun server--on-display-p (frame display)
(and (equal (frame-parameter frame 'display) display)
;; Note: TTY frames still get a `display' parameter set to the value of
;; $DISPLAY. This is useful when running from that tty frame
;; sub-processes that want to connect to the X server, but that means we
;; have to be careful here not to be tricked into thinking those frames
;; are on `display'.
(not (eq (framep frame) t))))
(defun server-select-display (display) (defun server-select-display (display)
;; If the current frame is on `display' we're all set. ;; If the current frame is on `display' we're all set.
;; Similarly if we are unable to open frames on other displays, there's ;; Similarly if we are unable to open frames on other displays, there's
;; nothing more we can do. ;; nothing more we can do.
(unless (or (not (fboundp 'make-frame-on-display)) (unless (or (not (fboundp 'make-frame-on-display))
(equal (frame-parameter (selected-frame) 'display) display)) (server--on-display-p (selected-frame) display))
;; Otherwise, look for an existing frame there and select it. ;; Otherwise, look for an existing frame there and select it.
(dolist (frame (frame-list)) (dolist (frame (frame-list))
(when (equal (frame-parameter frame 'display) display) (when (server--on-display-p frame display)
(select-frame frame))) (select-frame frame)))
;; If there's no frame on that display yet, create and select one. ;; If there's no frame on that display yet, create and select one.
(unless (equal (frame-parameter (selected-frame) 'display) display) (unless (server--on-display-p (selected-frame) display)
(let* ((buffer (generate-new-buffer " *server-dummy*")) (let* ((buffer (generate-new-buffer " *server-dummy*"))
(frame (make-frame-on-display (frame (make-frame-on-display
display display
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment