Function: package-buffer-info
package-buffer-info is a byte-compiled function defined in
package.el.gz.
Signature
(package-buffer-info)
Documentation
Return a package-desc describing the package in the current buffer.
If the buffer does not contain a conforming package, signal an error. If there is a package, narrow the buffer to the file's boundaries.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package-buffer-info ()
"Return a `package-desc' describing the package in the current buffer.
If the buffer does not contain a conforming package, signal an
error. If there is a package, narrow the buffer to the file's
boundaries."
(goto-char (point-min))
(unless (re-search-forward "^;;; \\([^ ]*\\)\\.el ---[ \t]*\\(.*?\\)[ \t]*\\(-\\*-.*-\\*-[ \t]*\\)?$" nil t)
(error "Package lacks a file header"))
(let ((file-name (match-string-no-properties 1))
(desc (match-string-no-properties 2)))
(require 'lisp-mnt)
(let* ((version-info (lm-package-version))
(pkg-version (package-strip-rcs-id version-info))
(keywords (lm-keywords-list))
(website (lm-website)))
(unless pkg-version
(if version-info
(error "Unrecognized package version: %s" version-info)
(error "Package lacks a \"Version\" or \"Package-Version\" header")))
(package-desc-from-define
file-name pkg-version desc
(lm-package-requires)
:kind 'single
:url website
:keywords keywords
:maintainer
;; For backward compatibility, use a single cons-cell if
;; there's only one maintainer (the most common case).
(let ((maints (lm-maintainers))) (if (cdr maints) maints (car maints)))
:authors (lm-authors)))))