diff -ur emacs-20.5/lib-src/ChangeLog emacs-hanwen/lib-src/ChangeLog --- emacs-20.5/lib-src/ChangeLog Fri Dec 10 17:25:36 1999 +++ emacs-hanwen/lib-src/ChangeLog Sun Jul 16 23:00:54 2000 @@ -1,3 +1,7 @@ +2000-07-16 Han-Wen Nienhuys + + * emacsclient.c: Added support for +LINE:COLUMN style arguments. + 1999-12-04 Gerd Moellmann * Version 20.5 released. Only in emacs-hanwen/lib-src: ChangeLog~ diff -ur emacs-20.5/lib-src/emacsclient.c emacs-hanwen/lib-src/emacsclient.c --- emacs-20.5/lib-src/emacsclient.c Wed Nov 3 14:12:46 1999 +++ emacs-hanwen/lib-src/emacsclient.c Sun Jul 16 22:10:35 2000 @@ -27,6 +27,7 @@ #undef close #undef signal +#include #include #include #ifdef STDC_HEADERS @@ -323,7 +324,7 @@ if (*argv[i] == '+') { char *p = argv[i] + 1; - while (*p >= '0' && *p <= '9') p++; + while (isdigit (*p) || *p == ':') p++; if (*p != 0) fprintf (out, "%s/", quote_file_name (cwd)); } @@ -466,7 +467,8 @@ if (*modified_arg == '+') { char *p = modified_arg + 1; - while (*p >= '0' && *p <= '9') p++; + while (isdigit (*p) || *p == ':') + p++; if (*p != 0) need_cwd = 1; } Only in emacs-hanwen/lib-src: emacsclient.c~ diff -ur emacs-20.5/lib-src/emacsserver.c emacs-hanwen/lib-src/emacsserver.c --- emacs-20.5/lib-src/emacsserver.c Mon Feb 22 21:44:14 1999 +++ emacs-hanwen/lib-src/emacsserver.c Sun Jul 16 22:09:52 2000 @@ -61,6 +61,7 @@ #include #include + #ifdef HAVE_UNISTD_H #include #endif Only in emacs-hanwen/lib-src: emacsserver.c~ Only in emacs-hanwen/lib-src: suf.el~ diff -ur emacs-20.5/lisp/ChangeLog emacs-hanwen/lisp/ChangeLog --- emacs-20.5/lisp/ChangeLog Fri Dec 10 17:25:02 1999 +++ emacs-hanwen/lisp/ChangeLog Sun Jul 16 23:00:04 2000 @@ -1,3 +1,8 @@ +2000-07-16 Han-Wen Nienhuys + + * server.el (server-process-filter,server-visit-files): add support for "LINE:COLUMN" + style emacsclient calls. + 1999-12-04 Gerd Moellmann * Version 20.5 released. Only in emacs-hanwen/lisp: ChangeLog~ diff -ur emacs-20.5/lisp/server.el emacs-hanwen/lisp/server.el --- emacs-20.5/lisp/server.el Sat Mar 13 01:20:25 1999 +++ emacs-hanwen/lisp/server.el Sun Jul 16 23:04:41 2000 @@ -215,7 +215,8 @@ default-file-name-coding-system))) client nowait (files nil) - (lineno 1)) + (lineno 1) + (columnno 0)) ;; Remove this line from STRING. (setq string (substring string (match-end 0))) (if (string-match "^Error: " request) @@ -232,9 +233,17 @@ (setq request (substring request (match-end 0))) (if (string-match "\\`-nowait" arg) (setq nowait t) - (if (string-match "\\`\\+[0-9]+\\'" arg) - ;; ARG is a line number option. - (setq lineno (read (substring arg 1))) + (cond + ;; ARG is a line number option. + ((string-match "\\`\\+[0-9]+\\'" arg) + (setq lineno (read (substring arg 1))) + ) + ;; ARG is line number / column option. + ((string-match "\\`\\+[0-9]+:[0-9]+\\'" arg) + (setq lineno (read (substring arg 1 (string-match ":" arg)))) + (setq columnno (read (substring arg (+ 1 (string-match ":" arg))))) + ) + (t ;; ARG is a file name. ;; Collapse multiple slashes to single slashes. (setq arg (command-line-normalize-file-name arg)) @@ -253,9 +262,11 @@ (if coding-system (setq arg (decode-coding-string arg coding-system))) (setq files - (cons (list arg lineno) + (cons (list arg lineno columnno) files)) - (setq lineno 1))))) + (setq lineno 1) + (setq columnno 0) + ))))) (server-visit-files files client nowait) ;; CLIENT is now a list (CLIENTNUM BUFFERS...) (or nowait @@ -267,9 +278,11 @@ ;; Save for later any partial line that remains. (setq server-previous-string string)) + + (defun server-visit-files (files client &optional nowait) "Finds FILES and returns the list CLIENT with the buffers nconc'd. -FILES is an alist whose elements are (FILENAME LINENUMBER). +FILES is an alist whose elements are (FILENAME LINENUMBER COLUMNNUMBER). NOWAIT non-nil means this client is not waiting for the results, so don't mark these buffers specially, just visit them normally." ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries. @@ -297,6 +310,7 @@ (set-buffer (find-file-noselect filen)) (run-hooks 'server-visit-hook))) (goto-line (nth 1 (car files))) + (move-to-column (nth 2 (car files))) (if (not nowait) (setq server-buffer-clients (cons (car client) server-buffer-clients))) @@ -304,6 +318,7 @@ (setq files (cdr files))) (set-buffer obuf)) (nconc client client-record))) + (defun server-buffer-done (buffer &optional for-killing) "Mark BUFFER as \"done\" for its client(s). Only in emacs-hanwen/lisp: server.el.orig Only in emacs-hanwen/lisp: server.el~