~ruther/guix-local

25a2839c9dfb72fc4eddf0621b80023f87fc2e2e — Alex Kost 10 years ago 43b40c4
emacs: Add 'guix-package-names'.

* emacs/guix-main.scm (package-names, package-names-lists): New procedures.
* emacs/guix-base.el (guix-package-names): New function.
2 files changed, 25 insertions(+), 0 deletions(-)

M emacs/guix-base.el
M emacs/guix-main.scm
M emacs/guix-base.el => emacs/guix-base.el +14 -0
@@ 191,6 191,20 @@ If PATH is relative, it is considered to be relative to
  "Return a list of names of available lint checkers."
  (guix-eval-read (guix-make-guile-expression 'lint-checker-names)))

(guix-memoized-defun guix-package-names ()
  "Return a list of names of available packages."
  (sort
   ;; Work around <https://github.com/jaor/geiser/issues/64>:
   ;; list of strings is parsed much slower than list of lists,
   ;; so we use 'package-names-lists' instead of 'package-names'.

   ;; (guix-eval-read (guix-make-guile-expression 'package-names))

   (mapcar #'car
           (guix-eval-read (guix-make-guile-expression
                            'package-names-lists)))
   #'string<))


;;; Buffers and auto updating.


M emacs/guix-main.scm => emacs/guix-main.scm +11 -0
@@ 942,3 942,14 @@ GENERATIONS is a list of generation numbers."
  (map (lambda (checker)
         (symbol->string (lint-checker-name checker)))
       %checkers))

(define (package-names)
  "Return a list of names of available packages."
  (delete-duplicates
   (fold-packages (lambda (pkg res)
                    (cons (package-name pkg) res))
                  '())))

;; See the comment to 'guix-package-names' function in "guix-popup.el".
(define (package-names-lists)
  (map list (package-names)))