Mercurial > emacs
changeset 99252:8ee9512061d4
(server-process-filter): In daemon mode, default to emacsclient's tty
if not opening a new frame and only the terminal-frame is available.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 30 Oct 2008 15:50:01 +0000 |
parents | 8a8cdf3d59ec |
children | 5fcebc8cbeea |
files | lisp/server.el |
diffstat | 1 files changed, 20 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/server.el Thu Oct 30 15:49:49 2008 +0000 +++ b/lisp/server.el Thu Oct 30 15:50:01 2008 +0000 @@ -810,6 +810,7 @@ dontkill ; t if the client should not be killed. (commands ()) dir + use-current-frame (tty-name nil) ;nil, `window-system', or the tty name. tty-type ;string. (files nil) @@ -830,7 +831,7 @@ ((equal "-nowait" arg) (setq nowait t)) ;; -current-frame: Don't create frames. - ((equal "-current-frame" arg) (setq tty-name nil)) + ((equal "-current-frame" arg) (setq use-current-frame t)) ;; -display DISPLAY: ;; Open X frames on the given display instead of the default. @@ -874,7 +875,8 @@ (cdr command-line-args-left)) (setq tty-name (pop command-line-args-left) tty-type (pop command-line-args-left) - dontkill t)) + dontkill (or dontkill + (not use-current-frame)))) ;; -position LINE[:COLUMN]: Set point to the given ;; position in the next file. @@ -902,6 +904,8 @@ ;; -eval EXPR: Evaluate a Lisp expression. ((and (equal "-eval" arg) command-line-args-left) + (if use-current-frame + (setq use-current-frame 'always)) (lexical-let ((expr (pop command-line-args-left))) (if coding-system (setq expr (decode-coding-string expr coding-system))) @@ -926,12 +930,20 @@ ;; Unknown command. (t (error "Unknown command: %s" arg)))) - (setq frame - (case tty-name - ((nil) (if display (server-select-display display))) - ((window-system) - (server-create-window-system-frame display nowait proc)) - (t (server-create-tty-frame tty-name tty-type proc)))) + (setq frame + (cond + ((and use-current-frame + (or (eq use-current-frame 'always) + ;; We can't use the Emacs daemon's + ;; terminal frame. + (not (and (= (length (frame-list)) 1) + (eq (selected-frame) + terminal-frame))))) + (setq tty-name nil) + (if display (server-select-display display))) + ((eq tty-name 'window-system) + (server-create-window-system-frame display nowait proc)) + (t (server-create-tty-frame tty-name tty-type proc)))) (process-put proc 'continuation