summaryrefslogtreecommitdiff
path: root/lisp/server.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2006-07-06 22:48:16 +0000
committerChong Yidong <cyd@stupidchicken.com>2006-07-06 22:48:16 +0000
commit30088515384d17657efe175505d7542380b1ab64 (patch)
tree3e81e4158f03eea7fa512a2b8a138fc196b287b1 /lisp/server.el
parent077f47e2a55d369277be24c5a8181f33b61db837 (diff)
downloademacs-30088515384d17657efe175505d7542380b1ab64.tar.gz
* server.el (server-select-display): Don't make the temp frame
minibuffer-only, in case it's not a temp frame. (server-process-filter): Don't delete the temp frame if it's the only one we have on that display.
Diffstat (limited to 'lisp/server.el')
-rw-r--r--lisp/server.el22
1 files changed, 12 insertions, 10 deletions
diff --git a/lisp/server.el b/lisp/server.el
index 266d9d7824f..fc0f90f6f05 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -203,18 +203,14 @@ are done with it in the server.")
(dolist (frame (frame-list))
(when (equal (frame-parameter frame 'display) display)
(select-frame frame)))
- ;; If there's no frame on that display yet, create a dummy one
- ;; and select it.
+ ;; If there's no frame on that display yet, create and select one.
(unless (equal (frame-parameter (selected-frame) 'display) display)
(select-frame
(make-frame-on-display
display
- ;; This frame is only there in place of an actual "current display"
- ;; setting, so we want it to be as unobtrusive as possible. That's
- ;; what the invisibility is for. The minibuffer setting is so that
- ;; we don't end up displaying a buffer in it (which noone would
- ;; notice).
- '((visibility . nil) (minibuffer . only)))))))
+ ;; This frame may be deleted later (see server-process-filter)
+ ;; so we want it to be as unobtrusive as possible.
+ '((visibility . nil)))))))
(defun server-unquote-arg (arg)
(replace-regexp-in-string
@@ -383,8 +379,14 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"."
(unless nowait
(message "%s" (substitute-command-keys
"When done with a buffer, type \\[server-edit]")))))
- ;; Avoid preserving the connection after the last real frame is deleted.
- (if tmp-frame (delete-frame tmp-frame))))
+ ;; If the temporary frame is still the selected frame, make it
+ ;; real. If not (which can happen if the user's customizations
+ ;; call pop-to-buffer etc.), delete it to avoid preserving the
+ ;; connection after the last real frame is deleted.
+ (if tmp-frame
+ (if (eq (selected-frame) tmp-frame)
+ (set-frame-parameter tmp-frame 'visibility t)
+ (delete-frame tmp-frame)))))
;; Save for later any partial line that remains.
(when (> (length string) 0)
(process-put proc 'previous-string string)))