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)))