changeset 46907:ce6e92081932

(server-process-filter): Simplify code. (server-goto-line-column): New function. (server-visit-files): Use server-goto-line-column. Offer to revert only if file has changed.
author Richard M. Stallman <rms@gnu.org>
date Thu, 15 Aug 2002 20:13:48 +0000
parents 421ce085a3cc
children 70c39fa2253e
files lisp/server.el
diffstat 1 files changed, 42 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/server.el	Thu Aug 15 20:09:34 2002 +0000
+++ b/lisp/server.el	Thu Aug 15 20:13:48 2002 +0000
@@ -251,39 +251,39 @@
 		       (substring request (match-beginning 0) (1- (match-end 0))))
 		      (pos 0))
 		  (setq request (substring request (match-end 0)))
-		  (if (string-match "\\`-nowait" arg)
-		      (setq nowait t)
-		    (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))
-		      ;; Undo the quoting that emacsclient does
-		      ;; for certain special characters.
-		      (while (string-match "&." arg pos)
-			(setq pos (1+ (match-beginning 0)))
-			(let ((nextchar (aref arg pos)))
-			  (cond ((= nextchar ?&)
-				 (setq arg (replace-match "&" t t arg)))
-				((= nextchar ?-)
-				 (setq arg (replace-match "-" t t arg)))
-				(t
-				 (setq arg (replace-match " " t t arg))))))
-		      ;; Now decode the file name if necessary.
-		      (if coding-system
-			  (setq arg (decode-coding-string arg coding-system)))
-		      (setq files
-			    (cons (list arg lineno columnno)
-				  files))
-		      (setq lineno 1)
-		      (setq columnno 0))))))
+		  (cond
+		   ((string-match "\\`-nowait" arg)
+		    (setq nowait t))
+		   ;; 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))
+		    ;; Undo the quoting that emacsclient does
+		    ;; for certain special characters.
+		    (while (string-match "&." arg pos)
+		      (setq pos (1+ (match-beginning 0)))
+		      (let ((nextchar (aref arg pos)))
+			(cond ((= nextchar ?&)
+			       (setq arg (replace-match "&" t t arg)))
+			      ((= nextchar ?-)
+			       (setq arg (replace-match "-" t t arg)))
+			      (t
+			       (setq arg (replace-match " " t t arg))))))
+		    ;; Now decode the file name if necessary.
+		    (if coding-system
+			(setq arg (decode-coding-string arg coding-system)))
+		    (setq files
+			  (cons (list arg lineno columnno)
+				files))
+		    (setq lineno 1)
+		    (setq columnno 0)))))
 	      (run-hooks 'pre-command-hook)
 	      (server-visit-files files client nowait)
 	      (run-hooks 'post-command-hook)
@@ -304,6 +304,12 @@
   ;; Save for later any partial line that remains.
   (setq server-previous-string string))
 
+(defun server-goto-line-column (file-line-col)
+  (goto-line (nth 1 file-line-col))
+  (let ((column-number (nth 2 file-line-col)))
+    (if (> column-number 0)
+	(move-to-column (1- column-number)))))
+
 (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 COLUMNNUMBER).
@@ -325,8 +331,7 @@
 	    (if (and obuf (set-buffer obuf))
 		(progn
 		  (cond ((file-exists-p filen)
-			 (if (or (not (verify-visited-file-modtime obuf))
-				 (buffer-modified-p obuf))
+			 (if (not (verify-visited-file-modtime obuf))
 			     (revert-buffer t nil)))
 			(t
 			 (if (y-or-n-p
@@ -335,12 +340,9 @@
 				      ", write buffer to file? "))
 			     (write-file filen))))
 		  (setq server-existing-buffer t)
-		  (goto-line (nth 1 (car files))))
+		  (server-goto-line-column (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-number))))
+	      (server-goto-line-column (car files))
 	      (run-hooks 'server-visit-hook)))
 	  (if (not nowait)
 	      (setq server-buffer-clients