# HG changeset patch # User Gerd Moellmann # Date 995367328 0 # Node ID a7043adf8855e446db2fe96cadf7ae3a5c861392 # Parent 23f63206a8671905ce4a42697e5cf139c9bf1efa (server-visit-files): Handle the case the specified column number is <= 0. (command-line-1): Add support for +LINE:COLUMN command line argument. (server-process-filter, server-visit-files): Add support for +LINE:COLUMN style emacsclient calls. diff -r 23f63206a867 -r a7043adf8855 lisp/server.el --- a/lisp/server.el Tue Jul 17 10:50:35 2001 +0000 +++ b/lisp/server.el Tue Jul 17 10:55:28 2001 +0000 @@ -232,7 +232,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) @@ -249,9 +250,15 @@ (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 (string-to-int (substring arg 1)))) + ;; ARG is line number:column option. + ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg) + (setq lineno (string-to-int (match-string 1 arg)) + columnno (string-to-int (match-string 2 arg)))) + (t ;; ARG is a file name. ;; Collapse multiple slashes to single slashes. (setq arg (command-line-normalize-file-name arg)) @@ -270,9 +277,10 @@ (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...) (if (null (cdr client)) @@ -293,7 +301,7 @@ (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. @@ -325,6 +333,9 @@ (goto-line (nth 1 (car files)))) (set-buffer (find-file-noselect filen)) (goto-line (nth 1 (car files))) + (let ((column-number (nth 2 (car files)))) + (when (> column-number 0) + (move-to-column (1- column)))) (run-hooks 'server-visit-hook))) (if (not nowait) (setq server-buffer-clients