Don't duplicate autoload code in package.el

* 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.
This commit is contained in:
Glenn Morris 2017-05-09 13:03:04 -04:00
parent 4c08509b3a
commit d6d5020c25
2 changed files with 23 additions and 27 deletions

View 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"
" \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 \n"
(concat
;; This is used outside of autoload.el, eg cus-dep, finder.
" \n"
"(provide '"
(if (stringp feature)
feature
(file-name-sans-extension basename))
")\n"))
";; Local Variables:\n"
";; version-control: never\n"
";; no-byte-compile: t\n"