emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v
Date: Thu, 22 Nov 2007 20:25:52 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/11/22 20:25:51

Index: check-declare.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/check-declare.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- check-declare.el    22 Nov 2007 06:53:24 -0000      1.7
+++ check-declare.el    22 Nov 2007 20:25:51 -0000      1.8
@@ -39,6 +39,23 @@
 (defconst check-declare-warning-buffer "*Check Declarations Warnings*"
   "Name of buffer used to display any `check-declare' warnings.")
 
+(defun check-declare-locate (file basefile)
+  "Return the full path of FILE.
+Expands files with a \".c\" extension relative to the Emacs
+\"src/\" directory.  Otherwise, `locate-library' searches for
+FILE.  If that fails, expands FILE relative to BASEFILE's
+directory part.  The returned file might not exist."
+  (if (string-equal "c" (file-name-extension file))
+      (expand-file-name file (expand-file-name "src" source-directory))
+    (let ((tfile (locate-library (file-name-nondirectory file))))
+      (if tfile
+          (replace-regexp-in-string "\\.elc\\'" ".el" tfile)
+        (setq tfile (expand-file-name file (file-name-directory basefile)))
+        (if (or (file-exists-p tfile)
+                (string-match "\\.el\\'" tfile))
+            tfile
+          (concat tfile ".el"))))))
+
 (defun check-declare-scan (file)
   "Scan FILE for `declare-function' calls.
 Return a list with elements of the form (FNFILE FN ARGLIST), where
@@ -52,18 +69,9 @@
               "^[ \t]*(declare-function[ \t]+\\(\\S-+\\)[ \t]+\
 \"\\(\\S-+\\)\"" nil t)
         (setq fn (match-string 1)
-              fnfile (match-string 2))
-        (or (file-name-absolute-p fnfile)
-            (setq fnfile
-                  (expand-file-name fnfile
-                                    ;; .c files are assumed to be
-                                    ;; relative to the Emacs src/ directory.
-                                    (if (string-equal
-                                         "c" (file-name-extension fnfile))
-                                        (expand-file-name "src"
-                                                          source-directory)
-                                      (file-name-directory file)))))
-        (setq alist (cons
+              fnfile (match-string 2)
+              fnfile (check-declare-locate fnfile (expand-file-name file))
+              alist (cons
                      (list fnfile fn
                            (progn
                              (skip-chars-forward " \t\n")
@@ -89,9 +97,6 @@
         (cflag (string-equal "c" (file-name-extension fnfile)))
         re fn sig siglist arglist type errlist minargs maxargs)
     (message "%s" m)
-    (or cflag
-        (file-exists-p fnfile)
-        (setq fnfile (concat fnfile ".el")))
     (if (file-exists-p fnfile)
         (with-temp-buffer
           (insert-file-contents fnfile)




reply via email to

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