From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Johan Claesson Newsgroups: gmane.emacs.bugs Subject: bug#12357: 24.2; list-load-path-shadow should ignore .dir-locals.el Date: Sun, 16 Sep 2012 20:56:39 +0200 Message-ID: <871ui1lrtk.fsf@bredband.net> References: <87harcsi6n.fsf@bredband.net> <87ipbor4jg.fsf@bredband.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1347821878 25416 80.91.229.3 (16 Sep 2012 18:57:58 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 16 Sep 2012 18:57:58 +0000 (UTC) Cc: 12357@debbugs.gnu.org To: Glenn Morris Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Sep 16 20:58:01 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TDK2b-0002f7-AQ for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 20:58:01 +0200 Original-Received: from localhost ([::1]:52100 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDK2X-0002Ln-B5 for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 14:57:57 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:56515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDK2U-0002Lf-9m for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 14:57:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TDK2T-0007yN-4a for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 14:57:54 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:56219) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDK2T-0007yG-0W for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 14:57:53 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TDK3a-00066S-Fs for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 14:59:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Johan Claesson Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 16 Sep 2012 18:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12357 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 12357-submit@debbugs.gnu.org id=B12357.134782188523391 (code B ref 12357); Sun, 16 Sep 2012 18:59:02 +0000 Original-Received: (at 12357) by debbugs.gnu.org; 16 Sep 2012 18:58:05 +0000 Original-Received: from localhost ([127.0.0.1]:37532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDK2f-00065E-30 for submit@debbugs.gnu.org; Sun, 16 Sep 2012 14:58:05 -0400 Original-Received: from smtprelay-b22.telenor.se ([195.54.99.213]:43087) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDK2b-00064o-Lb for 12357@debbugs.gnu.org; Sun, 16 Sep 2012 14:58:03 -0400 Original-Received: from ipb4.telenor.se (ipb4.telenor.se [195.54.127.167]) by smtprelay-b22.telenor.se (Postfix) with ESMTP id 637F1EA93B for <12357@debbugs.gnu.org>; Sun, 16 Sep 2012 20:56:50 +0200 (CEST) X-SMTPAUTH-B2: [b157288] X-SENDER-IP: [85.224.212.102] X-LISTENER: [smtp.bredband.net] X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlVPAMkgVlBV4NRmPGdsb2JhbABFhR6FI7FQGQEBAQE3NIIgAQEEAVYjBQsIAw4KCSUPAQQlChoTh3oKuVkUkXUDkjGWOg X-IronPort-AV: E=Sophos;i="4.80,431,1344204000"; d="scan'208";a="116181409" Original-Received: from c-66d4e055.1542-1-64736c20.cust.bredbandsbolaget.se (HELO goblin) ([85.224.212.102]) by ipb4.telenor.se with ESMTP; 16 Sep 2012 20:56:32 +0200 In-Reply-To: <87ipbor4jg.fsf@bredband.net> (Johan Claesson's message of "Sat, 08 Sep 2012 16:08:03 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:64441 Archived-At: 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 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 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?