diff options
| author | Stefan Monnier | 2006-10-30 07:29:37 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2006-10-30 07:29:37 +0000 |
| commit | 7acc677bf15db317dcf09cfb003face4fdcd2c4e (patch) | |
| tree | 255d682faeac955a719687df8e095b14d22aeb1c | |
| parent | 4da0d3f79497d682853fbe9ccb4390092b9e202d (diff) | |
| download | emacs-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/ChangeLog | 13 | ||||
| -rw-r--r-- | lisp/server.el | 46 |
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 @@ | |||
| 1 | 2006-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 | |||
| 1 | 2006-10-29 Stephen Leake <stephen_leake@stephe_leake.org> | 8 | 2006-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 | ||
| 24 | 2006-10-28 Anna Bigatti <bigatti@dima.unige.it> | 29 | 2006-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))) |