aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)