[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r100480: Add --parent-id argument to
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r100480: Add --parent-id argument to emacsclient. |
Date: |
Sat, 29 May 2010 19:50:47 -0400 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100480
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sat 2010-05-29 19:50:47 -0400
message:
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.
modified:
etc/NEWS
lib-src/ChangeLog
lib-src/emacsclient.c
lisp/ChangeLog
lisp/server.el
=== modified file 'etc/NEWS'
--- a/etc/NEWS 2010-05-27 23:30:11 +0000
+++ b/etc/NEWS 2010-05-29 23:50:47 +0000
@@ -43,6 +43,10 @@
* Changes in Emacs 24.1
+** New emacsclient argument --parent-id ID can be used to open a
+client frame in parent X window ID, via XEmbed. This works like the
+--parent-id argument to Emacs.
+
** Completion can cycle, depending on completion-cycle-threshold.
** auto-mode-case-fold is now enabled by default.
=== modified file 'lib-src/ChangeLog'
--- a/lib-src/ChangeLog 2010-05-27 05:43:27 +0000
+++ b/lib-src/ChangeLog 2010-05-29 23:50:47 +0000
@@ -1,3 +1,9 @@
+2010-05-29 Chong Yidong <address@hidden>
+
+ * emacsclient.c (longopts, decode_options, print_help_and_exit):
+ New arg `-parent-id'.
+ (main): Send parent-id to Emacs.
+
2010-05-27 Glenn Morris <address@hidden>
* Makefile.in (distclean): No more Makefile.c.
=== modified file 'lib-src/emacsclient.c'
--- a/lib-src/emacsclient.c 2010-04-02 03:10:33 +0000
+++ b/lib-src/emacsclient.c 2010-05-29 23:50:47 +0000
@@ -138,6 +138,9 @@
/* The display on which Emacs should work. --display. */
char *display = NULL;
+/* The parent window ID, if we are opening a frame via XEmbed. */
+char *parent_id = NULL;
+
/* Nonzero means open a new Emacs frame on the current terminal. */
int tty = 0;
@@ -173,6 +176,7 @@
#ifndef WINDOWSNT
{ "display", required_argument, NULL, 'd' },
#endif
+ { "parent-id", required_argument, NULL, 'p' },
{ 0, 0, 0, 0 }
};
@@ -583,6 +587,11 @@
current_frame = 0;
break;
+ case 'p':
+ parent_id = optarg;
+ current_frame = 0;
+ break;
+
case 'H':
print_help_and_exit ();
break;
@@ -656,7 +665,8 @@
-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
-n, --no-wait Don't wait for the server to return\n\
-d DISPLAY, --display=DISPLAY\n\
- Visit the file in the given display\n"
+ Visit the file in the given display\n\
+--parent-id=ID Open in parent window ID, via XEmbed\n"
#ifndef NO_SOCKETS_IN_FILE_SYSTEM
"-s SOCKET, --socket-name=SOCKET\n\
Set filename of the UNIX socket for communication\n"
@@ -1620,6 +1630,13 @@
send_to_emacs (emacs_socket, " ");
}
+ if (parent_id)
+ {
+ send_to_emacs (emacs_socket, "-parent-id ");
+ quote_argument (emacs_socket, parent_id);
+ send_to_emacs (emacs_socket, " ");
+ }
+
/* If using the current frame, send tty information to Emacs anyway.
In daemon mode, Emacs may need to occupy this tty if no other
frame is available. */
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-05-29 18:25:00 +0000
+++ b/lisp/ChangeLog 2010-05-29 23:50:47 +0000
@@ -1,5 +1,12 @@
2010-05-29 Chong Yidong <address@hidden>
+ * server.el (server-process-filter): Receive parent-id argument
+ from emacsclient.
+ (server-create-window-system-frame): New arg. Pass parent-id as
+ frame parameter.
+
+2010-05-29 Chong Yidong <address@hidden>
+
* ansi-color.el: Delete unused escape sequences (Bug#6085).
(ansi-color-drop-regexp): New constant.
(ansi-color-apply, ansi-color-filter-region)
=== modified file 'lisp/server.el'
--- a/lisp/server.el 2010-05-27 23:30:11 +0000
+++ b/lisp/server.el 2010-05-29 23:50:47 +0000
@@ -711,7 +711,7 @@
(number-to-string (emacs-pid)) "\n"))
frame))
-(defun server-create-window-system-frame (display nowait proc)
+(defun server-create-window-system-frame (display nowait proc parent-id)
(add-to-list 'frame-inherited-parameters 'client)
(if (not (fboundp 'make-frame-on-display))
(progn
@@ -727,12 +727,14 @@
(let* ((params `((client . ,(if nowait 'nowait proc))
;; This is a leftover, see above.
(environment . ,(process-get proc 'env))))
- (frame (make-frame-on-display
- (or display
- (frame-parameter nil 'display)
- (getenv "DISPLAY")
- (error "Please specify display"))
- params)))
+ (display (or display
+ (frame-parameter nil 'display)
+ (getenv "DISPLAY")
+ (error "Please specify display")))
+ frame)
+ (if parent-id
+ (push (cons 'parent-id (string-to-number parent-id)) params))
+ (setq frame (make-frame-on-display display params))
(server-log (format "%s created" frame) proc)
(select-frame frame)
(process-put proc 'frame frame)
@@ -900,15 +902,16 @@
(coding-system (and (default-value 'enable-multibyte-characters)
(or file-name-coding-system
default-file-name-coding-system)))
- nowait ; t if emacsclient does not want to wait for us.
- frame ; The frame that was opened for the client (if any).
- display ; Open the frame on this display.
- dontkill ; t if the client should not be killed.
+ nowait ; t if emacsclient does not want to wait for us.
+ frame ; Frame opened for the client (if any).
+ display ; Open frame on this display.
+ parent-id ; Window ID for XEmbed
+ dontkill ; t if client should not be killed.
commands
dir
use-current-frame
- tty-name ;nil, `window-system', or the tty name.
- tty-type ;string.
+ tty-name ; nil, `window-system', or the tty name.
+ tty-type ; string.
files
filepos
command-line-args-left
@@ -935,6 +938,12 @@
(setq display (pop command-line-args-left))
(if (zerop (length display)) (setq display nil)))
+ ;; -parent-id ID:
+ ;; Open X frame within window ID, via XEmbed.
+ ((and (equal "-parent-id" arg) command-line-args-left)
+ (setq parent-id (pop command-line-args-left))
+ (if (zerop (length parent-id)) (setq parent-id nil)))
+
;; -window-system: Open a new X frame.
((equal "-window-system" arg)
(setq dontkill t)
@@ -1039,7 +1048,8 @@
(setq tty-name nil tty-type nil)
(if display (server-select-display display)))
((eq tty-name 'window-system)
- (server-create-window-system-frame display nowait proc))
+ (server-create-window-system-frame display nowait proc
+ parent-id))
;; When resuming on a tty, tty-name is nil.
(tty-name
(server-create-tty-frame tty-name tty-type proc))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r100480: Add --parent-id argument to emacsclient.,
Chong Yidong <=