aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2006-10-30 07:29:37 +0000
committerStefan Monnier2006-10-30 07:29:37 +0000
commit7acc677bf15db317dcf09cfb003face4fdcd2c4e (patch)
tree255d682faeac955a719687df8e095b14d22aeb1c
parent4da0d3f79497d682853fbe9ccb4390092b9e202d (diff)
downloademacs-7acc677bf15db317dcf09cfb003face4fdcd2c4e.tar.gz
emacs-7acc677bf15db317dcf09cfb003face4fdcd2c4e.zip
(server-select-display): Use a dummy buffer to detect when
the frame is later used. (server-select-display): New function. (server-process-filter): Use it to detect unused temp frames.
-rw-r--r--lisp/ChangeLog13
-rw-r--r--lisp/server.el46
2 files changed, 41 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0ae22128fe1..acb3e5c3a99 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,8 +1,14 @@
12006-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * server.el (server-select-display): Use a dummy buffer to detect when
4 the frame is later used.
5 (server-select-display): New function.
6 (server-process-filter): Use it to detect unused temp frames.
7
12006-10-29 Stephen Leake <stephen_leake@stephe_leake.org> 82006-10-29 Stephen Leake <stephen_leake@stephe_leake.org>
2 9
3 * progmodes/ada-mode.el: Change maintainer, apply 10 * progmodes/ada-mode.el: Change maintainer, apply
4 whitespace-clean, checkdoc. Minor improvements to many doc 11 whitespace-clean, checkdoc. Minor improvements to many doc strings.
5 strings.
6 (ada-mode-version): New function. 12 (ada-mode-version): New function.
7 (ada-create-menu): Menu operations are available for all supported 13 (ada-create-menu): Menu operations are available for all supported
8 compilers. 14 compilers.
@@ -18,8 +24,7 @@
18 24
19 * calendar/calendar.el (cal-html-cursor-month) 25 * calendar/calendar.el (cal-html-cursor-month)
20 (cal-html-cursor-year): Add autoloads for this new package. 26 (cal-html-cursor-year): Add autoloads for this new package.
21 (calendar-mode-map): Bind cal-html-cursor-month, 27 (calendar-mode-map): Bind cal-html-cursor-month, cal-html-cursor-year.
22 cal-html-cursor-year.
23 28
242006-10-28 Anna Bigatti <bigatti@dima.unige.it> 292006-10-28 Anna Bigatti <bigatti@dima.unige.it>
25 30
diff --git a/lisp/server.el b/lisp/server.el
index fc0f90f6f05..4b770b2caeb 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -205,12 +205,34 @@ are done with it in the server.")
205 (select-frame frame))) 205 (select-frame frame)))
206 ;; If there's no frame on that display yet, create and select one. 206 ;; If there's no frame on that display yet, create and select one.
207 (unless (equal (frame-parameter (selected-frame) 'display) display) 207 (unless (equal (frame-parameter (selected-frame) 'display) display)
208 (select-frame 208 (let* ((buffer (generate-new-buffer " *server-dummy*"))
209 (make-frame-on-display 209 (frame (make-frame-on-display
210 display 210 display
211 ;; This frame may be deleted later (see server-process-filter) 211 ;; Make it display (and remember) some dummy buffer, so
212 ;; so we want it to be as unobtrusive as possible. 212 ;; we can detect later if the frame is in use or not.
213 '((visibility . nil))))))) 213 `((server-dummmy-buffer . ,buffer)
214 ;; This frame may be deleted later (see
215 ;; server-unselect-display) so we want it to be as
216 ;; unobtrusive as possible.
217 (visibility . nil)))))
218 (select-frame frame)
219 (set-window-buffer (selected-window) buffer)))))
220
221(defun server-unselect-display (frame)
222 ;; If the temporary frame is in use (displays something real), make it
223 ;; visible. If not (which can happen if the user's customizations call
224 ;; pop-to-buffer etc.), delete it to avoid preserving the connection after
225 ;; the last real frame is deleted.
226 (if (and (eq (frame-first-window frame)
227 (next-window (frame-first-window frame) 'nomini))
228 (eq (window-buffer (frame-first-window frame))
229 (frame-parameter frame 'server-dummy-buffer)))
230 ;; The temp frame still only shows one buffer, and that is the
231 ;; internal temp buffer.
232 (delete-frame frame)
233 (set-frame-parameter frame 'visibility t))
234 (kill-buffer (frame-parameter frame 'server-dummy-buffer))
235 (set-frame-parameter frame 'server-dummy-buffer nil))
214 236
215(defun server-unquote-arg (arg) 237(defun server-unquote-arg (arg)
216 (replace-regexp-in-string 238 (replace-regexp-in-string
@@ -379,14 +401,10 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"."
379 (unless nowait 401 (unless nowait
380 (message "%s" (substitute-command-keys 402 (message "%s" (substitute-command-keys
381 "When done with a buffer, type \\[server-edit]"))))) 403 "When done with a buffer, type \\[server-edit]")))))
382 ;; If the temporary frame is still the selected frame, make it 404 (when (frame-live-p tmp-frame)
383 ;; real. If not (which can happen if the user's customizations 405 ;; Delete tmp-frame or make it visible depending on whether it's
384 ;; call pop-to-buffer etc.), delete it to avoid preserving the 406 ;; been used or not.
385 ;; connection after the last real frame is deleted. 407 (server-unselect-display tmp-frame))))
386 (if tmp-frame
387 (if (eq (selected-frame) tmp-frame)
388 (set-frame-parameter tmp-frame 'visibility t)
389 (delete-frame tmp-frame)))))
390 ;; Save for later any partial line that remains. 408 ;; Save for later any partial line that remains.
391 (when (> (length string) 0) 409 (when (> (length string) 0)
392 (process-put proc 'previous-string string))) 410 (process-put proc 'previous-string string)))