From: Antero Mejr <antero@mailbox.org>
Date: Thu, 11 May 2023 19:22:49 +0000 (+0000)
Subject: Handle case-insensitivity for safe-local-variable-directories.
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b39e4daee4383d9e535148a973e0d5701125ada;p=emacs.git

Handle case-insensitivity for safe-local-variable-directories.

* lisp/emacs-lisp/files.el (hack-local-variables-filter): Use
'file-equal-p' when checking 'safe-local-variable-directories'.
* doc/lispref/variables.texi (File Local Variables): Remove sentences
in 'safe-local-variable-directories' description about case-sensitivity
and trailing slash behaviors.
* doc/emacs/custom.texi (Safe File Variables): Remove sentence about
'safe-local-variable-directories' trailing slash behavior.
(Bug#61901)
---

diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index d8abf81c75f..d8221f51425 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1359,10 +1359,9 @@ certain directories, and skip the confirmation prompt when local
 variables are loaded from those directories, even if the variables are
 risky.  The variable @code{safe-local-variable-directories} holds the
 list of such directories.  The names of the directories in this list
-must be full absolute file names, and should end in a slash.  If the
-variable @code{enable-remote-dir-locals} has a non-@code{nil} value,
-the list can include remote directories as well (@pxref{Remote
-Files}).
+must be full absolute file names.  If the variable
+@code{enable-remote-dir-locals} has a non-@code{nil} value, the list
+can include remote directories as well (@pxref{Remote Files}).
 
 @vindex enable-local-variables
   The variable @code{enable-local-variables} allows you to change the
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index b3a8cd8110c..4eda035473e 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1982,11 +1982,9 @@ This is a list of directories where local variables are always
 enabled.  Directory-local variables loaded from these directories,
 such as the variables in @file{.dir-locals.el}, will be enabled even
 if they are risky.  The directories in this list must be
-fully-expanded absolute file names that end in a directory separator
-character.  They may also be remote directories if the variable
-@code{enable-remote-dir-locals} is set non-@code{nil}.  Directories in
-this list are matched case-sensitively, even if the filesystem is
-case-sensitive.
+fully-expanded absolute file names.  They may also be remote
+directories if the variable @code{enable-remote-dir-locals} is set
+non-@code{nil}.
 @end defvar
 
 @defun hack-local-variables &optional handle-mode
diff --git a/lisp/files.el b/lisp/files.el
index 35d794f6dcf..148f47cbc97 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3934,7 +3934,10 @@ DIR-NAME is the name of the associated directory.  Otherwise it is nil."
 		  (null unsafe-vars)
 		  (null risky-vars))
 	     (memq enable-local-variables '(:all :safe))
-             (member dir-name safe-local-variable-directories)
+             (delq nil (mapcar (lambda (dir)
+                                 (and dir-name dir
+                                      (file-equal-p dir dir-name)))
+                               safe-local-variable-directories))
 	     (hack-local-variables-confirm all-vars unsafe-vars
 					   risky-vars dir-name))
 	 (dolist (elt all-vars)