diff options
Diffstat (limited to 'lisp/files.el')
| -rw-r--r-- | lisp/files.el | 104 |
1 files changed, 38 insertions, 66 deletions
diff --git a/lisp/files.el b/lisp/files.el index 5caa4681884..6528632c841 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1456,7 +1456,7 @@ file names with wildcards." (file-exists-p filename)) (error "%s does not exist" filename)) (let ((value (funcall fun filename wildcards))) - (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) + (mapc (lambda (b) (with-current-buffer b (read-only-mode 1))) (if (listp value) value (list value))) value)) @@ -2837,7 +2837,8 @@ symbol and VAL is a value that is considered safe." ;; This should be here at least as long as Emacs supports write-file-hooks. '((add-hook 'write-file-hooks 'time-stamp) (add-hook 'write-file-functions 'time-stamp) - (add-hook 'before-save-hook 'time-stamp)) + (add-hook 'before-save-hook 'time-stamp nil t) + (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)) "Expressions that are considered safe in an `eval:' local variable. Add expressions to this list if you want Emacs to evaluate them, when they appear in an `eval' local variable specification, without first @@ -4817,51 +4818,12 @@ prints a message in the minibuffer. Instead, use `set-buffer-modified-p'." "Modification-flag cleared")) (set-buffer-modified-p arg)) -(defun toggle-read-only (&optional arg message) - "Toggle the read-only state of the current buffer. -With prefix argument ARG, make the buffer read-only if ARG is -positive; otherwise make it writable. - -When making the buffer read-only, enable View mode if -`view-read-only' is non-nil. When making the buffer writable, -disable View mode if View mode is enabled. - -If called interactively, or if called from Lisp with MESSAGE -non-nil, print a message reporting the buffer's new read-only -status. - -Do not call this from a Lisp program unless you really intend to -do the same thing as the \\[toggle-read-only] command, including -possibly enabling or disabling View mode. Also, note that this -command works by setting the variable `buffer-read-only', which -does not affect read-only regions caused by text properties. To -ignore read-only status in a Lisp program (whether due to text -properties or buffer state), bind `inhibit-read-only' temporarily -to a non-nil value." - (interactive "P") - (cond - ;; Do nothing if `buffer-read-only' already matches the state - ;; specified by ARG. - ((and arg - (if (> (prefix-numeric-value arg) 0) - buffer-read-only - (not buffer-read-only)))) - ;; If View mode is enabled, exit it. - ((and buffer-read-only view-mode) - (View-exit-and-edit) - (set (make-local-variable 'view-read-only) t)) - ;; If `view-read-only' is non-nil, enable View mode. - ((and view-read-only - (not buffer-read-only) - (not view-mode) - (not (eq (get major-mode 'mode-class) 'special))) - (view-mode-enter)) - ;; The usual action: flip `buffer-read-only'. - (t (setq buffer-read-only (not buffer-read-only)) - (force-mode-line-update))) - (if (or message (called-interactively-p 'interactive)) - (message "Read-only %s for this buffer" - (if buffer-read-only "enabled" "disabled")))) +(defun toggle-read-only (&optional arg interactive) + (declare (obsolete read-only-mode "24.3")) + (interactive (list current-prefix-arg t)) + (if interactive + (call-interactively 'read-only-mode) + (read-only-mode (or arg 'toggle)))) (defun insert-file (filename) "Insert contents of file FILENAME into buffer after point. @@ -5388,23 +5350,26 @@ non-nil, it is called instead of rereading visited file contents." (not (file-exists-p file-name))) (error "Auto-save file %s not current" (abbreviate-file-name file-name))) - ((save-window-excursion - (with-output-to-temp-buffer "*Directory*" - (buffer-disable-undo standard-output) - (save-excursion - (let ((switches dired-listing-switches)) - (if (file-symlink-p file) - (setq switches (concat switches " -L"))) - (set-buffer standard-output) - ;; Use insert-directory-safely, not insert-directory, - ;; because these files might not exist. In particular, - ;; FILE might not exist if the auto-save file was for - ;; a buffer that didn't visit a file, such as "*mail*". - ;; The code in v20.x called `ls' directly, so we need - ;; to emulate what `ls' did in that case. - (insert-directory-safely file switches) - (insert-directory-safely file-name switches)))) - (yes-or-no-p (format "Recover auto save file %s? " file-name))) + ((with-temp-buffer-window + "*Directory*" nil + #'(lambda (window _value) + (with-selected-window window + (unwind-protect + (yes-or-no-p (format "Recover auto save file %s? " file-name)) + (when (window-live-p window) + (quit-restore-window window 'kill))))) + (with-current-buffer standard-output + (let ((switches dired-listing-switches)) + (if (file-symlink-p file) + (setq switches (concat switches " -L"))) + ;; Use insert-directory-safely, not insert-directory, + ;; because these files might not exist. In particular, + ;; FILE might not exist if the auto-save file was for + ;; a buffer that didn't visit a file, such as "*mail*". + ;; The code in v20.x called `ls' directly, so we need + ;; to emulate what `ls' did in that case. + (insert-directory-safely file switches) + (insert-directory-safely file-name switches)))) (switch-to-buffer (find-file-noselect file t)) (let ((inhibit-read-only t) ;; Keep the current buffer-file-coding-system. @@ -6365,8 +6330,15 @@ if any returns nil. If `confirm-kill-emacs' is non-nil, calls it." (setq active t)) (setq processes (cdr processes))) (or (not active) - (progn (list-processes t) - (yes-or-no-p "Active processes exist; kill them and exit anyway? "))))) + (with-temp-buffer-window + (get-buffer-create "*Process List*") nil + #'(lambda (window _value) + (with-selected-window window + (unwind-protect + (yes-or-no-p "Active processes exist; kill them and exit anyway? ") + (when (window-live-p window) + (quit-restore-window window 'kill))))) + (list-processes t))))) ;; Query the user for other things, perhaps. (run-hook-with-args-until-failure 'kill-emacs-query-functions) (or (null confirm-kill-emacs) |
