Function: Custom-dirlocals-save
Custom-dirlocals-save is an interactive and byte-compiled function
defined in cus-edit.el.gz.
Signature
(Custom-dirlocals-save &rest IGNORE)
Documentation
Save the settings to the dir-locals file being customized.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/cus-edit.el.gz
(defun Custom-dirlocals-save (&rest _ignore)
"Save the settings to the dir-locals file being customized."
(interactive)
(when (custom-dirlocals-validate)
(let* ((file (widget-value custom-dirlocals-file-widget))
(old (widget-get custom-dirlocals-widget :value))
(dirlocals (widget-value custom-dirlocals-widget)))
(dolist (spec old)
(let ((mode (car spec))
(settings (cdr spec)))
(dolist (setting settings)
(delete-dir-local-variable mode (car setting) file))))
(dolist (spec dirlocals)
(let ((mode (car spec))
(settings (cdr spec)))
(dolist (setting (reverse settings))
(when (memq (car setting) '(mode eval))
(delete-dir-local-variable mode (car setting) file))
(add-dir-local-variable mode (car setting) (cdr setting) file)))))
;; Write the dir-locals file and kill its buffer, to come back to
;; our own buffer.
(write-file (expand-file-name buffer-file-name) nil)
(kill-buffer)))