Function: with-vc-properties
with-vc-properties is a macro defined in vc.el.gz.
Signature
(with-vc-properties FILES FORM SETTINGS)
Documentation
Execute FORM, then maybe set per-file properties for FILES.
If any of FILES is actually a directory, then do the same for all buffers for files in that directory. SETTINGS is an association list of property/value pairs. After executing FORM, set those properties from SETTINGS that have not yet been updated to their corresponding values. Return the result of evaluating FORM.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc.el.gz
(defmacro with-vc-properties (files form settings)
"Execute FORM, then maybe set per-file properties for FILES.
If any of FILES is actually a directory, then do the same for all
buffers for files in that directory.
SETTINGS is an association list of property/value pairs. After
executing FORM, set those properties from SETTINGS that have not yet
been updated to their corresponding values.
Return the result of evaluating FORM."
(declare (debug t))
(cl-with-gensyms (vc-touched-properties flist)
`(let ((,vc-touched-properties (list t))
(,flist nil))
(prog2 (dolist (file ,files)
(if (file-directory-p file)
(dolist (buffer (buffer-list))
(let ((fname (buffer-file-name buffer)))
(when (and fname (string-prefix-p file fname))
(push fname ,flist))))
(push file ,flist)))
,form
(dolist (file ,flist)
(dolist (setting ,settings)
(let ((property (car setting)))
(unless (memq property ,vc-touched-properties)
(put (intern file vc-file-prop-obarray)
property (cdr setting))))))))))