]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't duplicate autoload code in package.el
authorGlenn Morris <rgm@gnu.org>
Tue, 9 May 2017 17:03:04 +0000 (13:03 -0400)
committerGlenn Morris <rgm@gnu.org>
Tue, 9 May 2017 17:03:04 +0000 (13:03 -0400)
* lisp/emacs-lisp/autoload.el (autoload-rubric): Add a package option.
* lisp/emacs-lisp/package.el (autoload-rubric): Declare.
(package-autoload-ensure-default-file): Use autoload-rubric.

lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/package.el

index 8ad5e6b823d856f217e4aea6e622ca996ffb3ca1..f6b09dcf31db7632980146aac490a24c89f4a2ea 100644 (file)
@@ -355,24 +355,32 @@ put the output in."
 (defun autoload-rubric (file &optional type feature)
   "Return a string giving the appropriate autoload rubric for FILE.
 TYPE (default \"autoloads\") is a string stating the type of
-information contained in FILE.  If FEATURE is non-nil, FILE
-will provide a feature.  FEATURE may be a string naming the
-feature, otherwise it will be based on FILE's name.
+information contained in FILE.  TYPE \"package\" acts like the default,
+but adds an extra line to the output to modify `load-path'.
+
+If FEATURE is non-nil, FILE will provide a feature.  FEATURE may
+be a string naming the feature, otherwise it will be based on
+FILE's name.
 
 At present, a feature is in fact always provided, but this should
 not be relied upon."
-  (let ((basename (file-name-nondirectory file)))
+  (let ((basename (file-name-nondirectory file))
+       (lp (if (equal type "package") (setq type "autoloads"))))
     (concat ";;; " basename
            " --- automatically extracted " (or type "autoloads") "\n"
            ";;\n"
            ";;; Code:\n\n"
-           "\f\n"
-           ;; This is used outside of autoload.el, eg cus-dep, finder.
-           "(provide '"
-           (if (stringp feature)
-               feature
-             (file-name-sans-extension basename))
-           ")\n"
+           (if lp
+               ;; `load-path' should contain only directory names.
+               "(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))\n\f\n"
+             (concat
+              ;; This is used outside of autoload.el, eg cus-dep, finder.
+              "\f\n"
+              "(provide '"
+              (if (stringp feature)
+                  feature
+                (file-name-sans-extension basename))
+              ")\n"))
            ";; Local Variables:\n"
            ";; version-control: never\n"
            ";; no-byte-compile: t\n"
index 7ae7ffff1a7b3ca3195bd9e076a1267203eaf377..c0ecb0447f3d03ee54cc7294bebbcfefe9c63947 100644 (file)
@@ -905,25 +905,13 @@ untar into a directory named DIR; otherwise, signal an error."
        nil pkg-file nil 'silent))))
 
 ;;;; Autoload
-;; From Emacs 22, but changed so it adds to load-path.
+(declare-function autoload-rubric "autoload" (file &optional type feature))
+
 (defun package-autoload-ensure-default-file (file)
   "Make sure that the autoload file FILE exists and if not create it."
   (unless (file-exists-p file)
-    (write-region
-     (concat ";;; " (file-name-nondirectory file)
-             " --- automatically extracted autoloads\n"
-             ";;\n"
-             ";;; Code:\n"
-             ;; `load-path' should contain only directory names
-             "(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))\n"
-             "\f\n;; Local Variables:\n"
-             ";; version-control: never\n"
-             ";; no-byte-compile: t\n"
-             ";; no-update-autoloads: t\n"
-             ";; End:\n"
-             ";;; " (file-name-nondirectory file)
-             " ends here\n")
-     nil file nil 'silent))
+    (require 'autoload)
+    (write-region (autoload-rubric file "package" nil) nil file nil 'silent))
   file)
 
 (defvar generated-autoload-file)