Function: package-vc--main-file
package-vc--main-file is a byte-compiled function defined in
package-vc.el.gz.
Signature
(package-vc--main-file PKG-DESC)
Documentation
Return the name of the main file for PKG-DESC.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package-vc.el.gz
(defun package-vc--main-file (pkg-desc)
"Return the name of the main file for PKG-DESC."
(cl-assert (package-vc-p pkg-desc))
(let* ((pkg-spec (package-vc--desc->spec pkg-desc))
(name (symbol-name (package-desc-name pkg-desc)))
(directory (package-vc--checkout-dir pkg-desc 'lisp-dir))
(file (expand-file-name
(or (plist-get pkg-spec :main-file)
(concat name ".el"))
directory)))
(if (file-exists-p file) file
;; The following heuristic is only necessary when fetching a
;; repository with URL that would break the above assumptions.
;; Concrete example: https://github.com/sachac/waveform-el does
;; not have a file waveform-el.el, but a file waveform.el, so we
;; try and find the closest match.
(let ((distance most-positive-fixnum) (best nil))
(dolist (alt (directory-files directory t "\\.el\\'" t))
(let ((sd (string-distance file alt)))
(when (and (not (string-match-p (rx (or (: "-autoloads.el")
(: "-pkg.el"))
eos)
alt))
(< sd distance))
(when (< sd distance)
(setq distance (string-distance file alt)
best alt)))))
best))))