Update project-kill-buffer-conditions to match buffer-match-p

* project.el (project-kill-buffer-conditions): Document the
deprecation of the use of derived-mode
(project--buffer-check): Have `major-mode' behave like `derived-mode'
did previously, and issue a warning of `derived-mode' is used.
This commit is contained in:
Philip Kaludercic 2022-04-14 10:24:27 +02:00
parent 59ecf25fc8
commit 1a3bad431d

View file

@ -1201,18 +1201,22 @@ displayed."
(display-buffer-other-frame buffer-or-name))
(defcustom project-kill-buffer-conditions
'(buffer-file-name ; All file-visiting buffers are included.
`(buffer-file-name ; All file-visiting buffers are included.
;; Most of the temp buffers in the background:
(major-mode . fundamental-mode)
,(lambda (buf)
(not (eq (buffer-local-value 'major-mode buf)
'fundamental-mode)))
;; non-text buffer such as xref, occur, vc, log, ...
(and (derived-mode . special-mode)
(not (major-mode . help-mode)))
(derived-mode . compilation-mode)
(derived-mode . dired-mode)
(derived-mode . diff-mode)
(derived-mode . comint-mode)
(derived-mode . eshell-mode)
(derived-mode . change-log-mode))
(and (major-mode . special-mode)
,(lambda (buf)
(not (eq (buffer-local-value 'major-mode buf)
'help-mode))))
(major-mode . compilation-mode)
(major-mode . dired-mode)
(major-mode . diff-mode)
(major-mode . comint-mode)
(major-mode . eshell-mode)
(major-mode . change-log-mode))
"List of conditions to kill buffers related to a project.
This list is used by `project-kill-buffers'.
Each condition is either:
@ -1222,10 +1226,11 @@ Each condition is either:
- a cons-cell, where the car describes how to interpret the cdr.
The car can be one of the following:
* `major-mode': the buffer is killed if the buffer's major
mode is eq to the cons-cell's cdr
* `derived-mode': the buffer is killed if the buffer's major
mode is derived from the major mode denoted by the cons-cell's
cdr
cdr.
* `derived-mode': the buffer is killed if the buffer's major
mode is eq to the cons-cell's cdr (this is deprecated and will
result in a warning if used).
* `not': the cdr is interpreted as a negation of a condition.
* `and': the cdr is a list of recursive conditions, that all have
to be met.
@ -1285,10 +1290,13 @@ form of CONDITIONS."
(string-match-p c (buffer-name buf)))
((symbolp c)
(funcall c buf))
((eq (car-safe c) 'major-mode)
(eq (buffer-local-value 'major-mode buf)
(cdr c)))
((eq (car-safe c) 'derived-mode)
(warn "The use of `derived-mode' in \
`project--buffer-check' is deprecated.")
(provided-mode-derived-p
(buffer-local-value 'major-mode buf)
(cdr c)))
((eq (car-safe c) 'major-mode)
(provided-mode-derived-p
(buffer-local-value 'major-mode buf)
(cdr c)))