diff options
| author | Chong Yidong | 2010-05-29 19:50:47 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-05-29 19:50:47 -0400 |
| commit | 0191e222e375db31e08ef55f4eddc9e01e8d1f80 (patch) | |
| tree | 4d968cbb6a7df0b288311f3275253b45194541ff /lisp | |
| parent | b233600fbd201794a34bee1f3a819adb63eda7ec (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | lisp/server.el | 38 |
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 @@ | |||
| 1 | 2010-05-29 Chong Yidong <cyd@stupidchicken.com> | 1 | 2010-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 | |||
| 8 | 2010-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)))) |