mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-25 20:19:18 -05:00
emacs: list: Configure format in one place.
* emacs/guix-list.el: (guix-list-column-format): Merge this and... (guix-list-column-value-methods): ... this into... (guix-list-format): ... this. New variable. (guix-list-tabulated-vector): Adjust accordingly. (guix-list-tabulated-format): Likewise. (guix-list-tabulated-entry): Likewise. * doc/emacs.texi (Emacs Appearance): Likewise.
This commit is contained in:
parent
0b9cd3206a
commit
376af769f9
2 changed files with 35 additions and 57 deletions
|
@ -478,9 +478,8 @@ You can change almost any aspect of ``list'' / ``info'' buffers using
|
||||||
the following variables:
|
the following variables:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item guix-list-column-format
|
@item guix-list-format
|
||||||
@itemx guix-list-column-titles
|
@itemx guix-list-column-titles
|
||||||
@itemx guix-list-column-value-methods
|
|
||||||
Specify the columns, their names, what and how is displayed in ``list''
|
Specify the columns, their names, what and how is displayed in ``list''
|
||||||
buffers.
|
buffers.
|
||||||
|
|
||||||
|
|
|
@ -58,31 +58,38 @@ entries, he will be prompted for confirmation."
|
||||||
:type 'integer
|
:type 'integer
|
||||||
:group 'guix-list)
|
:group 'guix-list)
|
||||||
|
|
||||||
(defvar guix-list-column-format
|
(defvar guix-list-format
|
||||||
`((package
|
`((package
|
||||||
(name 20 t)
|
(name guix-package-list-get-name 20 t)
|
||||||
(version 10 nil)
|
(version nil 10 nil)
|
||||||
(outputs 13 t)
|
(outputs nil 13 t)
|
||||||
(installed 13 t)
|
(installed guix-package-list-get-installed-outputs 13 t)
|
||||||
(synopsis 30 nil))
|
(synopsis guix-list-get-one-line 30 nil))
|
||||||
(output
|
(output
|
||||||
(name 20 t)
|
(name guix-package-list-get-name 20 t)
|
||||||
(version 10 nil)
|
(version nil 10 nil)
|
||||||
(output 9 t)
|
(output nil 9 t)
|
||||||
(installed 12 t)
|
(installed nil 12 t)
|
||||||
(synopsis 30 nil))
|
(synopsis guix-list-get-one-line 30 nil))
|
||||||
(generation
|
(generation
|
||||||
(number 5 guix-list-sort-numerically-0 :right-align t)
|
(number nil 5 guix-list-sort-numerically-0 :right-align t)
|
||||||
(current 10 t)
|
(current guix-generation-list-get-current 10 t)
|
||||||
(time 20 t)
|
(time guix-list-get-time 20 t)
|
||||||
(path 30 t)))
|
(path guix-list-get-file-path 30 t)))
|
||||||
"Columns displayed in list buffers.
|
"List of format values of the displayed columns.
|
||||||
Each element of the list has a form:
|
Each element of the list has a form:
|
||||||
|
|
||||||
(ENTRY-TYPE . ((PARAM WIDTH SORT . PROPS) ...))
|
(ENTRY-TYPE . ((PARAM VALUE-FUN WIDTH SORT . PROPS) ...))
|
||||||
|
|
||||||
PARAM is the name of an entry parameter of ENTRY-TYPE. For the
|
PARAM is the name of an entry parameter of ENTRY-TYPE.
|
||||||
meaning of WIDTH, SORT and PROPS, see `tabulated-list-format'.")
|
|
||||||
|
VALUE-FUN may be either nil or a function returning a value that
|
||||||
|
will be inserted. The function is called with 2 arguments: the
|
||||||
|
first one is the value of the parameter; the second one is an
|
||||||
|
entry (alist of parameter names and values).
|
||||||
|
|
||||||
|
For the meaning of WIDTH, SORT and PROPS, see
|
||||||
|
`tabulated-list-format'.")
|
||||||
|
|
||||||
(defvar guix-list-column-titles
|
(defvar guix-list-column-titles
|
||||||
'((generation
|
'((generation
|
||||||
|
@ -91,32 +98,6 @@ meaning of WIDTH, SORT and PROPS, see `tabulated-list-format'.")
|
||||||
Has the same structure as `guix-param-titles', but titles from
|
Has the same structure as `guix-param-titles', but titles from
|
||||||
this list have a priority.")
|
this list have a priority.")
|
||||||
|
|
||||||
(defvar guix-list-column-value-methods
|
|
||||||
'((package
|
|
||||||
(name . guix-package-list-get-name)
|
|
||||||
(synopsis . guix-list-get-one-line)
|
|
||||||
(description . guix-list-get-one-line)
|
|
||||||
(installed . guix-package-list-get-installed-outputs))
|
|
||||||
(output
|
|
||||||
(name . guix-package-list-get-name)
|
|
||||||
(synopsis . guix-list-get-one-line)
|
|
||||||
(description . guix-list-get-one-line))
|
|
||||||
(generation
|
|
||||||
(current . guix-generation-list-get-current)
|
|
||||||
(time . guix-list-get-time)
|
|
||||||
(path . guix-list-get-file-path)))
|
|
||||||
"Methods for inserting parameter values in columns.
|
|
||||||
Each element of the list has a form:
|
|
||||||
|
|
||||||
(ENTRY-TYPE . ((PARAM . FUN) ...))
|
|
||||||
|
|
||||||
PARAM is the name of an entry parameter of ENTRY-TYPE.
|
|
||||||
|
|
||||||
FUN is a function returning a value that will be inserted. The
|
|
||||||
function is called with 2 arguments: the first one is the value
|
|
||||||
of the parameter; the second argument is an entry info (alist of
|
|
||||||
parameters and their values).")
|
|
||||||
|
|
||||||
(defun guix-list-param-title (entry-type param)
|
(defun guix-list-param-title (entry-type param)
|
||||||
"Return column title of an ENTRY-TYPE parameter PARAM."
|
"Return column title of an ENTRY-TYPE parameter PARAM."
|
||||||
(or (guix-assq-value guix-list-column-titles
|
(or (guix-assq-value guix-list-column-titles
|
||||||
|
@ -125,7 +106,7 @@ parameters and their values).")
|
||||||
|
|
||||||
(defun guix-list-format (entry-type)
|
(defun guix-list-format (entry-type)
|
||||||
"Return column format for ENTRY-TYPE."
|
"Return column format for ENTRY-TYPE."
|
||||||
(guix-assq-value guix-list-column-format entry-type))
|
(guix-assq-value guix-list-format entry-type))
|
||||||
|
|
||||||
(defun guix-list-displayed-params (entry-type)
|
(defun guix-list-displayed-params (entry-type)
|
||||||
"Return a list of ENTRY-TYPE parameters that should be displayed."
|
"Return a list of ENTRY-TYPE parameters that should be displayed."
|
||||||
|
@ -171,22 +152,22 @@ non-nil, invert the sort."
|
||||||
(defun guix-list-tabulated-vector (entry-type fun)
|
(defun guix-list-tabulated-vector (entry-type fun)
|
||||||
"Call FUN on each column specification for ENTRY-TYPE.
|
"Call FUN on each column specification for ENTRY-TYPE.
|
||||||
|
|
||||||
FUN is called with 2 argument: parameter name and column
|
FUN is applied to column specification as arguments (see
|
||||||
specification (see `guix-list-column-format').
|
`guix-list-format').
|
||||||
|
|
||||||
Return a vector made of values of FUN calls."
|
Return a vector made of values of FUN calls."
|
||||||
(apply #'vector
|
(apply #'vector
|
||||||
(mapcar (lambda (col-spec)
|
(mapcar (lambda (col-spec)
|
||||||
(funcall fun (car col-spec) (cdr col-spec)))
|
(apply fun col-spec))
|
||||||
(guix-list-format entry-type))))
|
(guix-list-format entry-type))))
|
||||||
|
|
||||||
(defun guix-list-tabulated-format (entry-type)
|
(defun guix-list-tabulated-format (entry-type)
|
||||||
"Return ENTRY-TYPE list specification for `tabulated-list-format'."
|
"Return ENTRY-TYPE list specification for `tabulated-list-format'."
|
||||||
(guix-list-tabulated-vector
|
(guix-list-tabulated-vector
|
||||||
entry-type
|
entry-type
|
||||||
(lambda (param spec)
|
(lambda (param _ &rest rest-spec)
|
||||||
(cons (guix-list-param-title entry-type param)
|
(cons (guix-list-param-title entry-type param)
|
||||||
spec))))
|
rest-spec))))
|
||||||
|
|
||||||
(defun guix-list-insert-entries (entries entry-type)
|
(defun guix-list-insert-entries (entries entry-type)
|
||||||
"Display ENTRIES of ENTRY-TYPE in the current list buffer.
|
"Display ENTRIES of ENTRY-TYPE in the current list buffer.
|
||||||
|
@ -207,10 +188,8 @@ ENTRIES should have a form of `guix-entries'."
|
||||||
Parameters are taken from ENTRY-TYPE ENTRY."
|
Parameters are taken from ENTRY-TYPE ENTRY."
|
||||||
(guix-list-tabulated-vector
|
(guix-list-tabulated-vector
|
||||||
entry-type
|
entry-type
|
||||||
(lambda (param _)
|
(lambda (param fun &rest _)
|
||||||
(let ((val (guix-entry-value entry param))
|
(let ((val (guix-entry-value entry param)))
|
||||||
(fun (guix-assq-value guix-list-column-value-methods
|
|
||||||
entry-type param)))
|
|
||||||
(if fun
|
(if fun
|
||||||
(funcall fun val entry)
|
(funcall fun val entry)
|
||||||
(guix-get-string val))))))
|
(guix-get-string val))))))
|
||||||
|
|
Loading…
Reference in a new issue