~ruther/guix-local

ddf6948b2204fbb453df9bc2ade48454d3d6ee12 — Alex Kost 10 years ago e29d192
emacs: Add 'guix-list-get-display-entries'.

* emacs/guix-list.el (guix-list-get-display-entries): New procedure.
* emacs/guix-ui-generation.el (guix-generation-get-display): Use it.
2 files changed, 26 insertions(+), 10 deletions(-)

M emacs/guix-list.el
M emacs/guix-ui-generation.el
M emacs/guix-list.el => emacs/guix-list.el +22 -6
@@ 170,12 170,6 @@ Return a vector made of values of FUN calls."
     (cons (guix-list-param-title entry-type param)
           rest-spec))))

(defun guix-list-insert-entries (entries entry-type)
  "Print ENTRY-TYPE ENTRIES in the current buffer."
  (setq tabulated-list-entries
        (guix-list-tabulated-entries entries entry-type))
  (tabulated-list-print))

(defun guix-list-tabulated-entries (entries entry-type)
  "Return a list of ENTRY-TYPE values for `tabulated-list-entries'."
  (mapcar (lambda (entry)


@@ 194,6 188,28 @@ Parameters are taken from ENTRY-TYPE ENTRY."
           (funcall fun val entry)
         (guix-get-string val))))))


;;; Displaying entries

(defun guix-list-get-display-entries (entry-type &rest args)
  "Search for entries and show them in a 'list' buffer preferably."
  (let ((entries (guix-buffer-get-entries 'list entry-type args)))
    (if (or (null entries)      ; = 0
            (cdr entries)       ; > 1
            (guix-list-single-entry? entry-type)
            (null (guix-buffer-value 'info entry-type 'show-entries)))
        (guix-buffer-display-entries entries 'list entry-type args 'add)
      (if (equal (guix-buffer-value 'info entry-type 'get-entries)
                 (guix-buffer-value 'list entry-type 'get-entries))
          (guix-buffer-display-entries entries 'info entry-type args 'add)
        (guix-buffer-get-display-entries 'info entry-type args 'add)))))

(defun guix-list-insert-entries (entries entry-type)
  "Print ENTRY-TYPE ENTRIES in the current buffer."
  (setq tabulated-list-entries
        (guix-list-tabulated-entries entries entry-type))
  (tabulated-list-print))

(defun guix-list-get-one-line (val &optional _)
  "Return one-line string from a multi-line string VAL.
VAL may be nil."

M emacs/guix-ui-generation.el => emacs/guix-ui-generation.el +4 -4
@@ 47,10 47,10 @@ If PROFILE is nil, use `guix-current-profile'.

See `guix-ui-get-entries' for the meaning of SEARCH-TYPE and
SEARCH-VALUES."
  (let ((args (cl-list* (or profile guix-current-profile)
                        search-type search-values)))
    (guix-buffer-get-display-entries
     'list 'generation args 'add)))
  (apply #'guix-list-get-display-entries
         'generation
         (or profile guix-current-profile)
         search-type search-values))

(defun guix-delete-generations (profile generations
                                &optional operation-buffer)