diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 4fab52087..59b2fd241 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -26,6 +26,22 @@ employed so that flycheck still does *some* helpful linting.") (use-package! elisp-mode :mode ("\\.Cask\\'" . emacs-lisp-mode) + :init + ;; Instead of pestering the user about accepting unsafe file local variables, + ;; I'd rather it quietly ignore them... + (setq-default enable-local-variables :safe) + ;; ...but still log them, so we can discover them if we're looking for it. + (defadvice! +emacs-lisp-log-unsafe-local-variables-a (variables dir-name) + :before #'hack-local-variables-filter + (when (eq enable-local-variables :safe) + (pcase-dolist (`(,var . ,val) variables) + (cond ((memq var ignored-local-variables)) + ((memq var '(mode unibyte coding))) + ((eq var 'eval)) + ((not (safe-local-variable-p var val)) + (message "Ignoring unsafe file local variable: %S" var)) + ((risky-local-variable-p var val) + (message "Ignoring risky file local variable: %S" var)))))) :config (set-repl-handler! '(emacs-lisp-mode lisp-interaction-mode) #'+emacs-lisp/open-repl) (set-eval-handler! '(emacs-lisp-mode lisp-interaction-mode) #'+emacs-lisp-eval)