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:
parent
a3e10af95c
commit
575e626105
1 changed files with 8 additions and 4 deletions
|
@ -5745,7 +5745,9 @@ This allows you to stop `save-some-buffers' from asking
|
||||||
about certain files that you'd usually rather not save.
|
about certain files that you'd usually rather not save.
|
||||||
|
|
||||||
This function is called (with no parameters) from the buffer to
|
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
|
:group 'auto-save
|
||||||
;; FIXME nil should not be a valid option, let alone the default,
|
;; FIXME nil should not be a valid option, let alone the default,
|
||||||
;; eg so that add-function can be used.
|
;; 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)))
|
(project-root (project-current)))
|
||||||
default-directory)))
|
default-directory)))
|
||||||
(lambda () (file-in-directory-p default-directory root))))
|
(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)
|
(defun save-some-buffers (&optional arg pred)
|
||||||
"Save some modified file-visiting buffers. Asks user about each one.
|
"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))
|
(setq pred save-some-buffers-default-predicate))
|
||||||
;; Allow `pred' to be a function that returns a predicate
|
;; Allow `pred' to be a function that returns a predicate
|
||||||
;; with lexical bindings in its original environment (bug#46374).
|
;; with lexical bindings in its original environment (bug#46374).
|
||||||
|
(when (and (symbolp pred) (get pred 'save-some-buffers-function))
|
||||||
(let ((pred-fun (and (functionp pred) (funcall pred))))
|
(let ((pred-fun (and (functionp pred) (funcall pred))))
|
||||||
(when (functionp pred-fun)
|
(when (functionp pred-fun)
|
||||||
(setq pred pred-fun)))
|
(setq pred pred-fun))))
|
||||||
(let* ((switched-buffer nil)
|
(let* ((switched-buffer nil)
|
||||||
(save-some-buffers--switch-window-callback
|
(save-some-buffers--switch-window-callback
|
||||||
(lambda (buffer)
|
(lambda (buffer)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue