aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/server.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/server.el')
-rw-r--r--lisp/server.el63
1 files changed, 34 insertions, 29 deletions
diff --git a/lisp/server.el b/lisp/server.el
index d45c7c28482..32cecd508b5 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -826,35 +826,40 @@ This handles splitting the command if it would be bigger than
826 826
827(defun server-create-window-system-frame (display nowait proc parent-id 827(defun server-create-window-system-frame (display nowait proc parent-id
828 &optional parameters) 828 &optional parameters)
829 (add-to-list 'frame-inherited-parameters 'client) 829 (let* ((display (or display
830 (if (not (fboundp 'make-frame-on-display)) 830 (frame-parameter nil 'display)
831 (progn 831 (error "Please specify display.")))
832 ;; This emacs does not support X. 832 (w (or (cdr (assq 'window-system parameters))
833 (server-log "Window system unsupported" proc) 833 (window-system-for-display display))))
834 (server-send-string proc "-window-system-unsupported \n") 834
835 nil) 835 (unless (assq w window-system-initialization-alist)
836 ;; Flag frame as client-created, but use a dummy client. 836 (setq w nil))
837 ;; This will prevent the frame from being deleted when 837
838 ;; emacsclient quits while also preventing 838 (cond (w
839 ;; `server-save-buffers-kill-terminal' from unexpectedly 839 ;; Flag frame as client-created, but use a dummy client.
840 ;; killing emacs on that frame. 840 ;; This will prevent the frame from being deleted when
841 (let* ((params `((client . ,(if nowait 'nowait proc)) 841 ;; emacsclient quits while also preventing
842 ;; This is a leftover, see above. 842 ;; `server-save-buffers-kill-terminal' from unexpectedly
843 (environment . ,(process-get proc 'env)) 843 ;; killing emacs on that frame.
844 ,@parameters)) 844 (let* ((params `((client . ,(if nowait 'nowait proc))
845 (display (or display 845 ;; This is a leftover, see above.
846 (frame-parameter nil 'display) 846 (environment . ,(process-get proc 'env))
847 (getenv "DISPLAY") 847 ,@parameters))
848 (error "Please specify display"))) 848 frame)
849 frame) 849 (if parent-id
850 (if parent-id 850 (push (cons 'parent-id (string-to-number parent-id)) params))
851 (push (cons 'parent-id (string-to-number parent-id)) params)) 851 (add-to-list 'frame-inherited-parameters 'client)
852 (setq frame (make-frame-on-display display params)) 852 (setq frame (make-frame-on-display display params))
853 (server-log (format "%s created" frame) proc) 853 (server-log (format "%s created" frame) proc)
854 (select-frame frame) 854 (select-frame frame)
855 (process-put proc 'frame frame) 855 (process-put proc 'frame frame)
856 (process-put proc 'terminal (frame-terminal frame)) 856 (process-put proc 'terminal (frame-terminal frame))
857 frame))) 857 frame))
858
859 (t
860 (server-log "Window system unsupported" proc)
861 (server-send-string proc "-window-system-unsupported \n")
862 nil))))
858 863
859(defun server-goto-toplevel (proc) 864(defun server-goto-toplevel (proc)
860 (condition-case nil 865 (condition-case nil