emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 7be7ad279e 2/2: Don't use autoloaded functions for safe-local-var


From: Lars Ingebrigtsen
Subject: master 7be7ad279e 2/2: Don't use autoloaded functions for safe-local-variable
Date: Fri, 16 Sep 2022 06:36:31 -0400 (EDT)

branch: master
commit 7be7ad279e96f90cc70e384a350331de8e1607df
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Don't use autoloaded functions for safe-local-variable
    
    * doc/lispref/symbols.texi (Standard Properties): Clarify how
    safe-local-variable should look.
    
    * lisp/emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words)
    (checkdoc-symbol-words): Use list-of-strings-p.
    (checkdoc-list-of-strings-p): Obsolete.
    
    * lisp/vc/vc-git.el (vc-git-annotate-switches): Remove.
    (vc-git-annotate-switches): Open-code the check.
---
 doc/lispref/symbols.texi    |  5 ++++-
 lisp/emacs-lisp/checkdoc.el |  6 +++---
 lisp/vc/vc-git.el           | 19 ++++++-------------
 3 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 336fa9c918..ea1e086ebf 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -613,7 +613,10 @@ file-local evaluation forms.  @xref{File Local Variables}.
 
 @item safe-local-variable
 The value specifies a function for determining safe file-local values
-for the named variable.  @xref{File Local Variables}.
+for the named variable.  @xref{File Local Variables}.  Since this
+value is consulted when loading files, the function should be
+efficient and should ideally not lead to loading any libraries to
+determine the safeness (e.g., it should not be an autoloaded function).
 
 @item side-effect-free
 @cindex @code{side-effect-free} property
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 20d64b5915..3f9bc28e0b 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -250,7 +250,7 @@ with these words enabled."
 (defvar checkdoc-ispell-lisp-words
   '("alist" "emacs" "etags" "keymap" "paren" "regexp" "sexp")
   "List of words that are correct when spell-checking Lisp documentation.")
-;;;###autoload(put 'checkdoc-ispell-list-words 'safe-local-variable 
#'checkdoc-list-of-strings-p)
+;;;###autoload(put 'checkdoc-ispell-list-words 'safe-local-variable 
#'list-of-strings-p)
 
 (defcustom checkdoc-max-keyref-before-warn nil
   "If non-nil, number of \\\\=[command-to-keystroke] tokens allowed in a doc 
string.
@@ -320,7 +320,7 @@ These words are ignored when unquoted symbols are searched 
for.
 This should be set in an Emacs Lisp file's local variables."
   :type '(repeat (string :tag "Word"))
   :version "28.1")
-;;;###autoload(put 'checkdoc-symbol-words 'safe-local-variable 
#'checkdoc-list-of-strings-p)
+;;;###autoload(put 'checkdoc-symbol-words 'safe-local-variable 
#'list-of-strings-p)
 
 (defcustom checkdoc-column-zero-backslash-before-paren t
   "Non-nil means to warn if there is no \"\\\" before \"(\" in column zero.
@@ -360,9 +360,9 @@ large number of libraries means it is impractical to fix all
 of these warnings masse.  In almost any other case, setting
 this to anything but t is likely to be counter-productive.")
 
-;;;###autoload
 (defun checkdoc-list-of-strings-p (obj)
   "Return t when OBJ is a list of strings."
+  (declare (obsolete list-of-strings-p "29.1"))
   ;; this is a function so it might be shared by checkdoc-proper-noun-list
   ;; and/or checkdoc-ispell-lisp-words in the future
   (and (listp obj)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index b1025ed714..a5d12f03bc 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -119,18 +119,6 @@ If nil, use the value of `vc-diff-switches'.  If t, use no 
switches."
                 (repeat :tag "Argument List" :value ("") string))
   :version "23.1")
 
-;; We put the entire function into the autoload file so that we don't
-;; have to load a whole bunch of vc.*el files just to see whether the
-;; file-local variable is safe.
-;;;###autoload
-(progn
-  (defun vc-git-annotate-switches-safe-p (switches)
-    "Check if local value of `vc-git-annotate-switches' is safe.
-Currently only \"-w\" (ignore whitespace) is considered safe, but
-this list might be extended in the future."
-    ;; TODO: Probably most options are perfectly safe.
-    (equal switches "-w")))
-
 (defcustom vc-git-annotate-switches nil
   "String or list of strings specifying switches for Git blame under VC.
 If nil, use the value of `vc-annotate-switches'.  If t, use no switches."
@@ -139,7 +127,12 @@ If nil, use the value of `vc-annotate-switches'.  If t, 
use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "25.1")
-;;;###autoload(put 'vc-git-annotate-switches 'safe-local-variable 
#'vc-git-annotate-switches-safe-p)
+
+;; Check if local value of `vc-git-annotate-switches' is safe.
+;; Currently only "-w" (ignore whitespace) is considered safe, but
+;; this list might be extended in the future (probably most options
+;; are perfectly safe.)
+;;;###autoload(put 'vc-git-annotate-switches 'safe-local-variable (lambda 
(switches) (equal switches "-w")))
 
 (defcustom vc-git-log-switches nil
   "String or list of strings specifying switches for Git log under VC."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]