aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1993-08-09 05:56:29 +0000
committerRichard M. Stallman1993-08-09 05:56:29 +0000
commit3a0ce8496de4efb386d7c1323b68f0b91b9e0de8 (patch)
tree60f91f5db74230e3c420593b67efb2ebf1bbd9f2
parentc5a9c3e6a6d935547450911d146ccfce32da8679 (diff)
downloademacs-3a0ce8496de4efb386d7c1323b68f0b91b9e0de8.tar.gz
emacs-3a0ce8496de4efb386d7c1323b68f0b91b9e0de8.zip
(server-visit-files): Restore current-buffer by hand,
not using save-excursion.
-rw-r--r--lisp/server.el52
1 files changed, 28 insertions, 24 deletions
diff --git a/lisp/server.el b/lisp/server.el
index 6cc087c19bf..416cadebd81 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -196,30 +196,34 @@ Prefix arg means just kill any existing server communications subprocess."
196(defun server-visit-files (files client) 196(defun server-visit-files (files client)
197 "Finds FILES and returns the list CLIENT with the buffers nconc'd. 197 "Finds FILES and returns the list CLIENT with the buffers nconc'd.
198FILES is an alist whose elements are (FILENAME LINENUMBER)." 198FILES is an alist whose elements are (FILENAME LINENUMBER)."
199 (let (client-record) 199 (let (client-record (obuf (current-buffer)))
200 (while files 200 ;; Restore the current buffer afterward, but not using save-excursion,
201 (save-excursion 201 ;; because we don't want to save point in this buffer
202 ;; If there is an existing buffer modified or the file is modified, 202 ;; if it happens to be one of those specified by the server.
203 ;; revert it. 203 (unwind-protect
204 ;; If there is an existing buffer with deleted file, offer to write it. 204 (while files
205 (let* ((filen (car (car files))) 205 ;; If there is an existing buffer modified or the file is modified,
206 (obuf (get-file-buffer filen))) 206 ;; revert it.
207 (if (and obuf (set-buffer obuf)) 207 ;; If there is an existing buffer with deleted file, offer to write it.
208 (if (file-exists-p filen) 208 (let* ((filen (car (car files)))
209 (if (or (not (verify-visited-file-modtime obuf)) 209 (obuf (get-file-buffer filen)))
210 (buffer-modified-p obuf)) 210 (if (and obuf (set-buffer obuf))
211 (revert-buffer t nil)) 211 (if (file-exists-p filen)
212 (if (y-or-n-p 212 (if (or (not (verify-visited-file-modtime obuf))
213 (concat "File no longer exists: " 213 (buffer-modified-p obuf))
214 filen 214 (revert-buffer t nil))
215 ", write buffer to file? ")) 215 (if (y-or-n-p
216 (write-file filen))) 216 (concat "File no longer exists: "
217 (set-buffer (find-file-noselect filen)) 217 filen
218 (run-hooks 'server-visit-hook))) 218 ", write buffer to file? "))
219 (goto-line (nth 1 (car files))) 219 (write-file filen)))
220 (setq server-buffer-clients (cons (car client) server-buffer-clients)) 220 (set-buffer (find-file-noselect filen))
221 (setq client-record (cons (current-buffer) client-record))) 221 (run-hooks 'server-visit-hook)))
222 (setq files (cdr files))) 222 (goto-line (nth 1 (car files)))
223 (setq server-buffer-clients (cons (car client) server-buffer-clients))
224 (setq client-record (cons (current-buffer) client-record))
225 (setq files (cdr files)))
226 (set-buffer obuf))
223 (nconc client client-record))) 227 (nconc client client-record)))
224 228
225(defun server-buffer-done (buffer) 229(defun server-buffer-done (buffer)