]> code.delx.au - gnu-emacs/commitdiff
Stop files with same basename messing up finder's package--builtins
authorGlenn Morris <rgm@gnu.org>
Fri, 14 Mar 2014 17:54:12 +0000 (13:54 -0400)
committerGlenn Morris <rgm@gnu.org>
Fri, 14 Mar 2014 17:54:12 +0000 (13:54 -0400)
* lisp/Makefile.in (setwins_finder): New, excluding leim.
(finder-data): Use setwins_finder.

* lisp/finder.el (finder-no-scan-regexp): Add leim-list.
(finder-compile-keywords): Don't skip files with same basename.

Fixes: debbugs:14010
lisp/ChangeLog
lisp/Makefile.in
lisp/finder.el

index 260a77fdca9d82b219bd20b7a6ba370a55be8672..e1d98e3f18a7243bfb4f1fe206bd7f4bab87286d 100644 (file)
@@ -1,5 +1,11 @@
 2014-03-14  Glenn Morris  <rgm@gnu.org>
 
+       * finder.el (finder-no-scan-regexp): Add leim-list.
+       (finder-compile-keywords):
+       Don't skip files with same basename.  (Bug#14010)
+       * Makefile.in (setwins_finder): New, excluding leim.
+       (finder-data): Use setwins_finder.
+
        * help-fns.el (help-split-fundoc, help-add-fundoc-usage)
        (help-function-arglist, help-make-usage): Move from here...
        * help.el (help-split-fundoc, help-add-fundoc-usage)
index ebd2432e10c928c25564fb2ac9899862e3e74b9f..a1cd6d19ce87885513393052f11e72915c50ff66 100644 (file)
@@ -124,6 +124,15 @@ setwins_almost=for file in `find ${srcdir} -type d -print`; do \
           esac; \
         done
 
+# Find all subdirectories except `obsolete', `term', and `leim' (and subdirs).
+# We don't want the leim files listed as packages, especially
+# since many share basenames with files in language/.
+setwins_finder=for file in `find ${srcdir} -type d -print`; do \
+          case $$file in ${srcdir}*/obsolete | ${srcdir}*/term | ${srcdir}*/leim* ) ;; \
+            *) wins="$$wins$${wins:+ }$$file" ;; \
+          esac; \
+        done
+
 # Find all subdirectories in which we might want to create subdirs.el.
 setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \
           case $$file in \
@@ -166,7 +175,7 @@ custom-deps: doit
 $(lisp)/finder-inf.el:
        $(MAKE) $(MFLAGS) finder-data
 finder-data: doit
-       $(setwins_almost); \
+       $(setwins_finder); \
        echo Directories: $$wins; \
        $(emacs) -l finder \
          --eval '(setq generated-finder-keywords-file (unmsys--file-name "$(srcdir)/finder-inf.el"))' \
index 4729389d89f153fe08e946ce3194c8f43c13d9dd..ad4fda355ec4063f11242b10a928037e91c7ccb4 100644 (file)
@@ -135,7 +135,7 @@ Keywords and package names both should be symbols.")
 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00469.html
 ;; ldefs-boot is not auto-generated, but has nothing useful.
 (defvar finder-no-scan-regexp "\\(^\\.#\\|\\(loaddefs\\|ldefs-boot\\|\
-cus-load\\|finder-inf\\|esh-groups\\|subdirs\\)\\.el$\\)"
+cus-load\\|finder-inf\\|esh-groups\\|subdirs\\|leim-list\\)\\.el$\\)"
   "Regexp matching file names not to scan for keywords.")
 
 (autoload 'autoload-rubric "autoload")
@@ -194,7 +194,16 @@ from; the default is `load-path'."
                                  (and (string-match el-file-regexp f)
                                       (intern (match-string 1 f)))))
                      (memq base-name processed))
-           (push base-name processed)
+;; There are multiple files in the tree with the same basename.
+;; So skipping files based on basename means you randomly (depending
+;; on which order the files are traversed in) miss some packages.
+;; http://debbugs.gnu.org/14010
+;; You might think this could lead to two files providing the same package,
+;; but it does not, because the duplicates are (at time of writing)
+;; all due to files in cedet, which end up with package-override set.
+;; FIXME this is obviously fragile.
+;; Make the (eq base-name package) case below issue a warning?
+;;         (push base-name processed)
            (with-temp-buffer
              (insert-file-contents (expand-file-name f d))
              (setq summary  (lm-synopsis)