diff options
| author | Richard M. Stallman | 1993-08-09 05:56:29 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1993-08-09 05:56:29 +0000 |
| commit | 3a0ce8496de4efb386d7c1323b68f0b91b9e0de8 (patch) | |
| tree | 60f91f5db74230e3c420593b67efb2ebf1bbd9f2 | |
| parent | c5a9c3e6a6d935547450911d146ccfce32da8679 (diff) | |
| download | emacs-3a0ce8496de4efb386d7c1323b68f0b91b9e0de8.tar.gz emacs-3a0ce8496de4efb386d7c1323b68f0b91b9e0de8.zip | |
(server-visit-files): Restore current-buffer by hand,
not using save-excursion.
| -rw-r--r-- | lisp/server.el | 52 |
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. |
| 198 | FILES is an alist whose elements are (FILENAME LINENUMBER)." | 198 | FILES 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) |