comparison lisp/files.el @ 21071:39d081df3643

(basic-save-buffer): Use save-current-buffer not save-excursion.
author Richard M. Stallman <rms@gnu.org>
date Thu, 05 Mar 1998 04:00:53 +0000
parents e99cb5736904
children 0d20aa45f493
comparison
equal deleted inserted replaced
21070:f88e08d192a8 21071:39d081df3643
2158 2158
2159 (defun basic-save-buffer () 2159 (defun basic-save-buffer ()
2160 "Save the current buffer in its visited file, if it has been modified. 2160 "Save the current buffer in its visited file, if it has been modified.
2161 After saving the buffer, run `after-save-hook'." 2161 After saving the buffer, run `after-save-hook'."
2162 (interactive) 2162 (interactive)
2163 (save-excursion 2163 (save-current-buffer
2164 ;; In an indirect buffer, save its base buffer instead. 2164 ;; In an indirect buffer, save its base buffer instead.
2165 (if (buffer-base-buffer) 2165 (if (buffer-base-buffer)
2166 (set-buffer (buffer-base-buffer))) 2166 (set-buffer (buffer-base-buffer)))
2167 (if (buffer-modified-p) 2167 (if (buffer-modified-p)
2168 (let ((recent-save (recent-auto-save-p)) 2168 (let ((recent-save (recent-auto-save-p))
2196 (format "%s has changed since visited or saved. Save anyway? " 2196 (format "%s has changed since visited or saved. Save anyway? "
2197 (file-name-nondirectory buffer-file-name))) 2197 (file-name-nondirectory buffer-file-name)))
2198 (error "Save not confirmed")) 2198 (error "Save not confirmed"))
2199 (save-restriction 2199 (save-restriction
2200 (widen) 2200 (widen)
2201 (and (> (point-max) 1) 2201 (save-excursion
2202 (/= (char-after (1- (point-max))) ?\n) 2202 (and (> (point-max) 1)
2203 (not (and (eq selective-display t) 2203 (/= (char-after (1- (point-max))) ?\n)
2204 (= (char-after (1- (point-max))) ?\r))) 2204 (not (and (eq selective-display t)
2205 (or (eq require-final-newline t) 2205 (= (char-after (1- (point-max))) ?\r)))
2206 (and require-final-newline 2206 (or (eq require-final-newline t)
2207 (y-or-n-p 2207 (and require-final-newline
2208 (format "Buffer %s does not end in newline. Add one? " 2208 (y-or-n-p
2209 (buffer-name))))) 2209 (format "Buffer %s does not end in newline. Add one? "
2210 (save-excursion 2210 (buffer-name)))))
2211 (goto-char (point-max)) 2211 (save-excursion
2212 (insert ?\n))) 2212 (goto-char (point-max))
2213 (insert ?\n))))
2213 (or (run-hook-with-args-until-success 'write-contents-hooks) 2214 (or (run-hook-with-args-until-success 'write-contents-hooks)
2214 (run-hook-with-args-until-success 'local-write-file-hooks) 2215 (run-hook-with-args-until-success 'local-write-file-hooks)
2215 (run-hook-with-args-until-success 'write-file-hooks) 2216 (run-hook-with-args-until-success 'write-file-hooks)
2216 ;; If a hook returned t, file is already "written". 2217 ;; If a hook returned t, file is already "written".
2217 ;; Otherwise, write it the usual way now. 2218 ;; Otherwise, write it the usual way now.