mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
emacs: list: Split 'guix-list-format' variable.
* emacs/guix-list.el: Generate 'guix-ENTRY-TYPE-list-format' variables for 'package', 'output' and 'generation' entry types. (guix-list-format): Remove. (guix-list-define-entry-type): Add ':format' keyword. * doc/emacs.texi (Emacs Appearance): Adjust accordingly.
This commit is contained in:
parent
78fdbdc033
commit
cf910ceffc
2 changed files with 48 additions and 38 deletions
|
@ -475,10 +475,11 @@ Keymap with keys available when a point is placed on a button.
|
|||
@subsubsection Appearance
|
||||
|
||||
You can change almost any aspect of ``list'' / ``info'' buffers using
|
||||
the following variables:
|
||||
the following variables (@dfn{ENTRY-TYPE} means @code{package},
|
||||
@code{output} or @code{generation}):
|
||||
|
||||
@table @code
|
||||
@item guix-list-format
|
||||
@item guix-ENTRY-TYPE-list-format
|
||||
@itemx guix-list-column-titles
|
||||
Specify the columns, their names, what and how is displayed in ``list''
|
||||
buffers.
|
||||
|
|
|
@ -51,39 +51,6 @@
|
|||
"Face used for time stamps."
|
||||
:group 'guix-list-faces)
|
||||
|
||||
(defvar guix-list-format
|
||||
`((package
|
||||
(name guix-package-list-get-name 20 t)
|
||||
(version nil 10 nil)
|
||||
(outputs nil 13 t)
|
||||
(installed guix-package-list-get-installed-outputs 13 t)
|
||||
(synopsis guix-list-get-one-line 30 nil))
|
||||
(output
|
||||
(name guix-package-list-get-name 20 t)
|
||||
(version nil 10 nil)
|
||||
(output nil 9 t)
|
||||
(installed nil 12 t)
|
||||
(synopsis guix-list-get-one-line 30 nil))
|
||||
(generation
|
||||
(number nil 5 guix-list-sort-numerically-0 :right-align t)
|
||||
(current guix-generation-list-get-current 10 t)
|
||||
(time guix-list-get-time 20 t)
|
||||
(path guix-list-get-file-path 30 t)))
|
||||
"List of format values of the displayed columns.
|
||||
Each element of the list has a form:
|
||||
|
||||
(ENTRY-TYPE . ((PARAM VALUE-FUN WIDTH SORT . PROPS) ...))
|
||||
|
||||
PARAM is the name of an entry parameter of ENTRY-TYPE.
|
||||
|
||||
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
|
||||
'((generation
|
||||
(number . "N.")))
|
||||
|
@ -130,7 +97,7 @@ This alist is filled by `guix-list-define-entry-type' macro.")
|
|||
|
||||
(defun guix-list-format (entry-type)
|
||||
"Return column format for ENTRY-TYPE."
|
||||
(guix-assq-value guix-list-format entry-type))
|
||||
(guix-list-value entry-type 'format))
|
||||
|
||||
(defun guix-list-displayed-params (entry-type)
|
||||
"Return a list of ENTRY-TYPE parameters that should be displayed."
|
||||
|
@ -459,9 +426,14 @@ Same as `tabulated-list-sort', but also restore marks after sorting."
|
|||
|
||||
(defmacro guix-list-define-entry-type (entry-type &rest args)
|
||||
"Define common stuff for displaying ENTRY-TYPE entries in list buffers.
|
||||
Remaining arguments (ARGS) should have a form [KEYWORD VALUE] ...
|
||||
|
||||
Remaining argument (ARGS) should have a form [KEYWORD VALUE] ... The
|
||||
following keywords are available:
|
||||
Required keywords:
|
||||
|
||||
- `:format' - default value of the generated
|
||||
`guix-ENTRY-TYPE-list-format' variable.
|
||||
|
||||
Optional keywords:
|
||||
|
||||
- `:sort-key' - default value of the generated
|
||||
`guix-ENTRY-TYPE-list-sort-key' variable.
|
||||
|
@ -480,14 +452,36 @@ following keywords are available:
|
|||
(describe-var (intern (concat prefix "-describe-function")))
|
||||
(describe-count-var (intern (concat prefix
|
||||
"-describe-warning-count")))
|
||||
(format-var (intern (concat prefix "-format")))
|
||||
(sort-key-var (intern (concat prefix "-sort-key")))
|
||||
(marks-var (intern (concat prefix "-marks"))))
|
||||
(guix-keyword-args-let args
|
||||
((describe-val :describe-function)
|
||||
(describe-count-val :describe-count 10)
|
||||
(format-val :format)
|
||||
(sort-key-val :sort-key)
|
||||
(marks-val :marks))
|
||||
`(progn
|
||||
(defcustom ,format-var ,format-val
|
||||
,(format "\
|
||||
List of format values of the displayed columns.
|
||||
Each element of the list has a form:
|
||||
|
||||
(PARAM VALUE-FUN WIDTH SORT . PROPS)
|
||||
|
||||
PARAM is a name of '%s' entry parameter.
|
||||
|
||||
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'."
|
||||
entry-type-str)
|
||||
:type 'sexp
|
||||
:group ',group)
|
||||
|
||||
(defcustom ,sort-key-var ,sort-key-val
|
||||
,(format "\
|
||||
Default sort key for 'list' buffer with '%s' entries.
|
||||
|
@ -529,6 +523,7 @@ See also `guix-list-describe'."
|
|||
(guix-alist-put!
|
||||
'((describe . ,describe-var)
|
||||
(describe-count . ,describe-count-var)
|
||||
(format . ,format-var)
|
||||
(sort-key . ,sort-key-var)
|
||||
(marks . ,marks-var))
|
||||
'guix-list-data ',entry-type)))))
|
||||
|
@ -547,6 +542,11 @@ See also `guix-list-describe'."
|
|||
|
||||
(guix-list-define-entry-type package
|
||||
:describe-function 'guix-list-describe-ids
|
||||
:format '((name guix-package-list-get-name 20 t)
|
||||
(version nil 10 nil)
|
||||
(outputs nil 13 t)
|
||||
(installed guix-package-list-get-installed-outputs 13 t)
|
||||
(synopsis guix-list-get-one-line 30 nil))
|
||||
:sort-key '(name)
|
||||
:marks '((install . ?I)
|
||||
(upgrade . ?U)
|
||||
|
@ -731,6 +731,11 @@ The specification is suitable for `guix-process-package-actions'."
|
|||
|
||||
(guix-list-define-entry-type output
|
||||
:describe-function 'guix-output-list-describe
|
||||
:format '((name guix-package-list-get-name 20 t)
|
||||
(version nil 10 nil)
|
||||
(output nil 9 t)
|
||||
(installed nil 12 t)
|
||||
(synopsis guix-list-get-one-line 30 nil))
|
||||
:sort-key '(name)
|
||||
:marks '((install . ?I)
|
||||
(upgrade . ?U)
|
||||
|
@ -817,6 +822,10 @@ See `guix-package-info-type'."
|
|||
|
||||
(guix-list-define-entry-type generation
|
||||
:describe-function 'guix-list-describe-ids
|
||||
:format '((number nil 5 guix-list-sort-numerically-0 :right-align t)
|
||||
(current guix-generation-list-get-current 10 t)
|
||||
(time guix-list-get-time 20 t)
|
||||
(path guix-list-get-file-path 30 t))
|
||||
:sort-key '(number . t)
|
||||
:marks '((delete . ?D)))
|
||||
|
||||
|
|
Loading…
Reference in a new issue