From: Johan Claesson <johanclaesson@bredband.net>
To: Glenn Morris <rgm@gnu.org>
Cc: 12357@debbugs.gnu.org
Subject: bug#12357: 24.2; list-load-path-shadow should ignore .dir-locals.el
Date: Sun, 16 Sep 2012 20:56:39 +0200 [thread overview]
Message-ID: <871ui1lrtk.fsf@bredband.net> (raw)
In-Reply-To: <87ipbor4jg.fsf@bredband.net> (Johan Claesson's message of "Sat, 08 Sep 2012 16:08:03 +0200")
A command to search for .dir-local.el shadows could look something like
below. Let me know if a polished version of the code below would be
useful.
I should probably clarify that this was not at all what i had in mind
when writing this bug report/suggestion in the first place :). I would
be happy if just the list-load-path-shadows command would ignore
.dir-locals.el files.
(defun list-load-path-dir-locals-shadows ()
(interactive)
(dir-locals-shadows load-path))
(defun dir-locals-shadows (path)
(when (stringp path)
(setq path (list path)))
(with-current-buffer (get-buffer-create "*Dir-Locals-Shadows*")
(erase-buffer)
(dolist (dir path)
(dir-locals-shadows-aux dir (dir-locals-find-file (file-name-as-directory dir))))
(if (> (point-max) (point-min))
(display-buffer (current-buffer))
(kill-buffer (current-buffer))
(message "No dir-local shadows found."))))
(defun dir-locals-class-name (class)
(if (stringp class)
class
(if (file-name-directory (symbol-name (cadr class)))
(concat (car class) dir-locals-file)
(format "%s%s (class %s)" (car class) dir-locals-file (cadr class)))))
(defun dir-locals-shadows-aux (dir locals)
(dolist (file (directory-files dir nil nil t))
(let ((subdir (expand-file-name file dir)))
(when (and (file-directory-p subdir)
(not (or (string-equal file ".")
(string-equal file "..")
(file-symlink-p subdir))))
(let ((subdir-locals (dir-locals-find-file (file-name-as-directory subdir))))
(and locals
(not (equal locals subdir-locals))
(insert (format "%s shadows %s\n"
(dir-locals-class-name subdir-locals)
(dir-locals-class-name locals))))
(dir-locals-shadows-aux subdir subdir-locals))))))
Regards,
/Johan
Johan Claesson <johanclaesson@bredband.net> writes:
> I did not think about that kind of shadowing. I agree that would also
> be nice to have reported. But i think it is a different thing. Also
> it could be that the user wants the lower dir-locals file to shadow the
> higher one. But i guess no user wants one lisp file to shadow another
> in the load-path.
>
> Maybe a separate command could search for dir-local files shadowing
> other dir-local files for a given directory or list of directories.
> (I could submit such a function.)
>
> I usually run list-load-path-shadows in the same go as compiling my
> elisp directory and just like it is nice to have no compiler warnings it
> is nice to have no shadow warnings.
>
> Regards,
>
> /Johan
>
>
> Glenn Morris <rgm@gnu.org> writes:
>
>> Johan Claesson wrote:
>>
>>> A minor suggestion for shadow.el. list-load-path-shadows will detect
>>> if there are two lisp files with the same name in the load-path. Such
>>> a clash could cause problems for normal lisp files. But i think it is
>>> normal to have multiple .dir-locals.el files spread across the
>>> load-path. In order to avoid false warnings list-load-path-shadows
>>> could ignore the special file name .dir-locals.el.
>>
>> I think you are right, but if any one given directory has more than one
>> dir-locals file above it in the directory tree, then the "lowest" one
>> does indeed shadow all the "higher" ones. So it might be good to still
>> report such cases?
next prev parent reply other threads:[~2012-09-16 18:56 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-05 13:38 bug#12357: 24.2; list-load-path-shadow should ignore .dir-locals.el Johan Claesson
2012-09-05 16:23 ` Johan Claesson
2012-09-08 1:13 ` Glenn Morris
2012-09-08 14:08 ` Johan Claesson
2012-09-16 18:56 ` Johan Claesson [this message]
2014-02-26 8:49 ` Xue Fuqiao
2014-03-02 22:14 ` Johan Claesson
2014-03-02 22:36 ` Xue Fuqiao
2014-03-04 22:29 ` Johan Claesson
2014-03-05 0:54 ` Leo Liu
2014-03-05 7:09 ` Johan Claesson
2014-03-06 2:07 ` Glenn Morris
2014-03-06 21:58 ` Johan Claesson
2014-03-05 7:25 ` Johan Claesson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871ui1lrtk.fsf@bredband.net \
--to=johanclaesson@bredband.net \
--cc=12357@debbugs.gnu.org \
--cc=rgm@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.