1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-26 19:18:50 +00:00

Add symbol property 'save-some-buffers-function' (bug#46374)

* lisp/files.el (save-some-buffers-root): Put non-nil
symbol property 'save-some-buffers-function'.
(save-some-buffers): Check pred for the
symbol property 'save-some-buffers-function'.
(save-some-buffers-default-predicate): Mention
symbol property 'save-some-buffers-function'.
This commit is contained in:
Juri Linkov 2021-10-10 20:38:12 +03:00
parent a3e10af95c
commit 575e626105

View File

@ -5745,7 +5745,9 @@ This allows you to stop `save-some-buffers' from asking
about certain files that you'd usually rather not save.
This function is called (with no parameters) from the buffer to
be saved."
be saved. When the function's symbol has the property
`save-some-buffers-function', the higher-order function is supposed
to return a predicate used to check buffers."
:group 'auto-save
;; FIXME nil should not be a valid option, let alone the default,
;; eg so that add-function can be used.
@ -5765,6 +5767,7 @@ of the directory that was default during command invocation."
(project-root (project-current)))
default-directory)))
(lambda () (file-in-directory-p default-directory root))))
(put 'save-some-buffers-root 'save-some-buffers-function t)
(defun save-some-buffers (&optional arg pred)
"Save some modified file-visiting buffers. Asks user about each one.
@ -5796,9 +5799,10 @@ change the additional actions you can take on files."
(setq pred save-some-buffers-default-predicate))
;; Allow `pred' to be a function that returns a predicate
;; with lexical bindings in its original environment (bug#46374).
(let ((pred-fun (and (functionp pred) (funcall pred))))
(when (functionp pred-fun)
(setq pred pred-fun)))
(when (and (symbolp pred) (get pred 'save-some-buffers-function))
(let ((pred-fun (and (functionp pred) (funcall pred))))
(when (functionp pred-fun)
(setq pred pred-fun))))
(let* ((switched-buffer nil)
(save-some-buffers--switch-window-callback
(lambda (buffer)