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 | @subsubsection Appearance | ||||||
| 
 | 
 | ||||||
| You can change almost any aspect of ``list'' / ``info'' buffers using | 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 | @table @code | ||||||
| @item guix-list-format | @item guix-ENTRY-TYPE-list-format | ||||||
| @itemx guix-list-column-titles | @itemx guix-list-column-titles | ||||||
| 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. | ||||||
|  |  | ||||||
|  | @ -51,39 +51,6 @@ | ||||||
|   "Face used for time stamps." |   "Face used for time stamps." | ||||||
|   :group 'guix-list-faces) |   :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 | (defvar guix-list-column-titles | ||||||
|   '((generation |   '((generation | ||||||
|      (number . "N."))) |      (number . "N."))) | ||||||
|  | @ -130,7 +97,7 @@ This alist is filled by `guix-list-define-entry-type' macro.") | ||||||
| 
 | 
 | ||||||
| (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-format entry-type)) |   (guix-list-value entry-type 'format)) | ||||||
| 
 | 
 | ||||||
| (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." | ||||||
|  | @ -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) | (defmacro guix-list-define-entry-type (entry-type &rest args) | ||||||
|   "Define common stuff for displaying ENTRY-TYPE entries in list buffers. |   "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 | Required keywords: | ||||||
| following keywords are available: | 
 | ||||||
|  |   - `:format' - default value of the generated | ||||||
|  |     `guix-ENTRY-TYPE-list-format' variable. | ||||||
|  | 
 | ||||||
|  | Optional keywords: | ||||||
| 
 | 
 | ||||||
|   - `:sort-key' - default value of the generated |   - `:sort-key' - default value of the generated | ||||||
|     `guix-ENTRY-TYPE-list-sort-key' variable. |     `guix-ENTRY-TYPE-list-sort-key' variable. | ||||||
|  | @ -480,14 +452,36 @@ following keywords are available: | ||||||
|          (describe-var       (intern (concat prefix "-describe-function"))) |          (describe-var       (intern (concat prefix "-describe-function"))) | ||||||
|          (describe-count-var (intern (concat prefix |          (describe-count-var (intern (concat prefix | ||||||
|                                              "-describe-warning-count"))) |                                              "-describe-warning-count"))) | ||||||
|  |          (format-var         (intern (concat prefix "-format"))) | ||||||
|          (sort-key-var       (intern (concat prefix "-sort-key"))) |          (sort-key-var       (intern (concat prefix "-sort-key"))) | ||||||
|          (marks-var          (intern (concat prefix "-marks")))) |          (marks-var          (intern (concat prefix "-marks")))) | ||||||
|     (guix-keyword-args-let args |     (guix-keyword-args-let args | ||||||
|         ((describe-val       :describe-function) |         ((describe-val       :describe-function) | ||||||
|          (describe-count-val :describe-count 10) |          (describe-count-val :describe-count 10) | ||||||
|  |          (format-val         :format) | ||||||
|          (sort-key-val       :sort-key) |          (sort-key-val       :sort-key) | ||||||
|          (marks-val          :marks)) |          (marks-val          :marks)) | ||||||
|       `(progn |       `(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 |          (defcustom ,sort-key-var ,sort-key-val | ||||||
|            ,(format "\ |            ,(format "\ | ||||||
| Default sort key for 'list' buffer with '%s' entries. | Default sort key for 'list' buffer with '%s' entries. | ||||||
|  | @ -529,6 +523,7 @@ See also `guix-list-describe'." | ||||||
|          (guix-alist-put! |          (guix-alist-put! | ||||||
|           '((describe       . ,describe-var) |           '((describe       . ,describe-var) | ||||||
|             (describe-count . ,describe-count-var) |             (describe-count . ,describe-count-var) | ||||||
|  |             (format         . ,format-var) | ||||||
|             (sort-key       . ,sort-key-var) |             (sort-key       . ,sort-key-var) | ||||||
|             (marks          . ,marks-var)) |             (marks          . ,marks-var)) | ||||||
|           'guix-list-data ',entry-type))))) |           'guix-list-data ',entry-type))))) | ||||||
|  | @ -547,6 +542,11 @@ See also `guix-list-describe'." | ||||||
| 
 | 
 | ||||||
| (guix-list-define-entry-type package | (guix-list-define-entry-type package | ||||||
|   :describe-function 'guix-list-describe-ids |   :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) |   :sort-key '(name) | ||||||
|   :marks '((install . ?I) |   :marks '((install . ?I) | ||||||
|            (upgrade . ?U) |            (upgrade . ?U) | ||||||
|  | @ -731,6 +731,11 @@ The specification is suitable for `guix-process-package-actions'." | ||||||
| 
 | 
 | ||||||
| (guix-list-define-entry-type output | (guix-list-define-entry-type output | ||||||
|   :describe-function 'guix-output-list-describe |   :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) |   :sort-key '(name) | ||||||
|   :marks '((install . ?I) |   :marks '((install . ?I) | ||||||
|            (upgrade . ?U) |            (upgrade . ?U) | ||||||
|  | @ -817,6 +822,10 @@ See `guix-package-info-type'." | ||||||
| 
 | 
 | ||||||
| (guix-list-define-entry-type generation | (guix-list-define-entry-type generation | ||||||
|   :describe-function 'guix-list-describe-ids |   :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) |   :sort-key '(number . t) | ||||||
|   :marks '((delete . ?D))) |   :marks '((delete . ?D))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Reference in a new issue