aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorChong Yidong2010-05-29 19:50:47 -0400
committerChong Yidong2010-05-29 19:50:47 -0400
commit0191e222e375db31e08ef55f4eddc9e01e8d1f80 (patch)
tree4d968cbb6a7df0b288311f3275253b45194541ff /lisp
parentb233600fbd201794a34bee1f3a819adb63eda7ec (diff)
downloademacs-0191e222e375db31e08ef55f4eddc9e01e8d1f80.tar.gz
emacs-0191e222e375db31e08ef55f4eddc9e01e8d1f80.zip
Add --parent-id argument to emacsclient.
* lib-src/emacsclient.c (longopts, decode_options, print_help_and_exit): New arg `-parent-id'. (main): Send parent-id to Emacs. * lisp/server.el (server-process-filter): Receive parent-id argument from emacsclient. (server-create-window-system-frame): New arg. Pass parent-id as frame parameter.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/server.el38
2 files changed, 31 insertions, 14 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ee97e4f6af1..edde627ac20 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,12 @@
12010-05-29 Chong Yidong <cyd@stupidchicken.com> 12010-05-29 Chong Yidong <cyd@stupidchicken.com>
2 2
3 * server.el (server-process-filter): Receive parent-id argument
4 from emacsclient.
5 (server-create-window-system-frame): New arg. Pass parent-id as
6 frame parameter.
7
82010-05-29 Chong Yidong <cyd@stupidchicken.com>
9
3 * ansi-color.el: Delete unused escape sequences (Bug#6085). 10 * ansi-color.el: Delete unused escape sequences (Bug#6085).
4 (ansi-color-drop-regexp): New constant. 11 (ansi-color-drop-regexp): New constant.
5 (ansi-color-apply, ansi-color-filter-region) 12 (ansi-color-apply, ansi-color-filter-region)
diff --git a/lisp/server.el b/lisp/server.el
index fd2026c4ab8..1ac2fb5b361 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -711,7 +711,7 @@ Server mode runs a process that accepts commands from the
711 (number-to-string (emacs-pid)) "\n")) 711 (number-to-string (emacs-pid)) "\n"))
712 frame)) 712 frame))
713 713
714(defun server-create-window-system-frame (display nowait proc) 714(defun server-create-window-system-frame (display nowait proc parent-id)
715 (add-to-list 'frame-inherited-parameters 'client) 715 (add-to-list 'frame-inherited-parameters 'client)
716 (if (not (fboundp 'make-frame-on-display)) 716 (if (not (fboundp 'make-frame-on-display))
717 (progn 717 (progn
@@ -727,12 +727,14 @@ Server mode runs a process that accepts commands from the
727 (let* ((params `((client . ,(if nowait 'nowait proc)) 727 (let* ((params `((client . ,(if nowait 'nowait proc))
728 ;; This is a leftover, see above. 728 ;; This is a leftover, see above.
729 (environment . ,(process-get proc 'env)))) 729 (environment . ,(process-get proc 'env))))
730 (frame (make-frame-on-display 730 (display (or display
731 (or display 731 (frame-parameter nil 'display)
732 (frame-parameter nil 'display) 732 (getenv "DISPLAY")
733 (getenv "DISPLAY") 733 (error "Please specify display")))
734 (error "Please specify display")) 734 frame)
735 params))) 735 (if parent-id
736 (push (cons 'parent-id (string-to-number parent-id)) params))
737 (setq frame (make-frame-on-display display params))
736 (server-log (format "%s created" frame) proc) 738 (server-log (format "%s created" frame) proc)
737 (select-frame frame) 739 (select-frame frame)
738 (process-put proc 'frame frame) 740 (process-put proc 'frame frame)
@@ -900,15 +902,16 @@ The following commands are accepted by the client:
900 (coding-system (and (default-value 'enable-multibyte-characters) 902 (coding-system (and (default-value 'enable-multibyte-characters)
901 (or file-name-coding-system 903 (or file-name-coding-system
902 default-file-name-coding-system))) 904 default-file-name-coding-system)))
903 nowait ; t if emacsclient does not want to wait for us. 905 nowait ; t if emacsclient does not want to wait for us.
904 frame ; The frame that was opened for the client (if any). 906 frame ; Frame opened for the client (if any).
905 display ; Open the frame on this display. 907 display ; Open frame on this display.
906 dontkill ; t if the client should not be killed. 908 parent-id ; Window ID for XEmbed
909 dontkill ; t if client should not be killed.
907 commands 910 commands
908 dir 911 dir
909 use-current-frame 912 use-current-frame
910 tty-name ;nil, `window-system', or the tty name. 913 tty-name ; nil, `window-system', or the tty name.
911 tty-type ;string. 914 tty-type ; string.
912 files 915 files
913 filepos 916 filepos
914 command-line-args-left 917 command-line-args-left
@@ -935,6 +938,12 @@ The following commands are accepted by the client:
935 (setq display (pop command-line-args-left)) 938 (setq display (pop command-line-args-left))
936 (if (zerop (length display)) (setq display nil))) 939 (if (zerop (length display)) (setq display nil)))
937 940
941 ;; -parent-id ID:
942 ;; Open X frame within window ID, via XEmbed.
943 ((and (equal "-parent-id" arg) command-line-args-left)
944 (setq parent-id (pop command-line-args-left))
945 (if (zerop (length parent-id)) (setq parent-id nil)))
946
938 ;; -window-system: Open a new X frame. 947 ;; -window-system: Open a new X frame.
939 ((equal "-window-system" arg) 948 ((equal "-window-system" arg)
940 (setq dontkill t) 949 (setq dontkill t)
@@ -1039,7 +1048,8 @@ The following commands are accepted by the client:
1039 (setq tty-name nil tty-type nil) 1048 (setq tty-name nil tty-type nil)
1040 (if display (server-select-display display))) 1049 (if display (server-select-display display)))
1041 ((eq tty-name 'window-system) 1050 ((eq tty-name 'window-system)
1042 (server-create-window-system-frame display nowait proc)) 1051 (server-create-window-system-frame display nowait proc
1052 parent-id))
1043 ;; When resuming on a tty, tty-name is nil. 1053 ;; When resuming on a tty, tty-name is nil.
1044 (tty-name 1054 (tty-name
1045 (server-create-tty-frame tty-name tty-type proc)))) 1055 (server-create-tty-frame tty-name tty-type proc))))