changeset 38462:a7043adf8855

(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.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 17 Jul 2001 10:55:28 +0000
parents 23f63206a867
children 2e3306c6ed15
files lisp/server.el
diffstat 1 files changed, 18 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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