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.
emacs: list: Add 'guix-list-mode-initialize'. * emacs/guix-list.el (guix-list-mode-initialize): New procedure. (guix-list-define-entry-type): Use it.
emacs: list: Generalize 'sort-key' code. * emacs/guix-list.el (guix-list-sort-key): New procedure. (guix-list-tabulated-sort-key): Use it. (guix-list-define-entry-type): Generate 'guix-ENTRY-TYPE-list-sort-key' variables.
emacs: list: Generalize 'describe' code. * emacs/guix-list.el (guix-list-describe-warning-count): Remove variable. (guix-list-define-entry-type): Generate 'guix-ENTRY-TYPE-list-describe-warning-count' and 'guix-ENTRY-TYPE-list-describe-function' variables. (guix-list-describe-maybe): Remove. Move the code... (guix-list-describe): ... here. (guix-list-describe-warning-count, guix-list-describe-entries) (guix-list-describe-ids): New procedures. (guix-output-list-describe): Adjust accordingly. (guix-list-mode-map): Bind "i" key to 'guix-list-describe'. (guix-generation-list-mode-map): Remove "i" key.
emacs: list: Generalize 'marks' code. * emacs/guix-list.el (guix-list-mark-alist): Rename to... (guix-list-marks): ... this (guix-list-data, guix-list-default-marks): New variables. (guix-list-value, guix-list-additional-marks, guix-list-marks): New procedures. (guix-list-define-entry-type): Adjust accordingly.
emacs: Add 'guix-alist-put'. * emacs/guix-utils.el (guix-alist-put, guix-alist-put-1) (guix-alist-put!): New procedures.
emacs: Add 'guix-keyword-args-let'. * emacs/guix-utils.el (guix-keyword-args-let): New macro. (guix-utils-font-lock-keywords): Add it. * emacs/guix-base.el (guix-define-buffer-type): Use it. * emacs/guix-list.el (guix-list-define-entry-type): Use it. * emacs/guix-read.el (guix-define-readers): Use it.
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.
emacs: Rename internal procedures. * emacs/guix-list.el (guix-list-get-param-title): Rename to... (guix-list-param-title): ... this. (guix-list-get-column-format): Rename to... (guix-list-format): ... this. (guix-list-get-displayed-params): Rename to... (guix-list-displayed-params): ... this. (guix-list-get-sort-key): Rename to... (guix-list-tabulated-sort-key): ... this. (guix-list-make-tabulated-vector): Rename to... (guix-list-tabulated-vector): ... this. (guix-list-get-list-format): Rename to... (guix-list-tabulated-format): ... this. (guix-list-get-tabulated-entries): Rename to... (guix-list-tabulated-entries): ... this. (guix-list-get-tabulated-entry): Rename to... (guix-list-tabulated-entry): ... this. * emacs/guix-info.el (guix-info-get-displayed-params): Rename to... (guix-info-displayed-params): ... this. * emacs/guix-base.el (guix-get-params-for-receiving): Adjust accordingly. (guix-get-name-spec): Rename to... (guix-package-name-specification): ... this. (guix-get-full-name): Merge this and... (guix-entry-to-specification): ... this into... (guix-package-entry->name-specification): ... this. (guix-get-installed-outputs): Rename to... (guix-package-installed-outputs): ... this. (guix-get-package-id-and-output-by-output-id): Rename to... (guix-package-id-and-output-by-output-id): ... this.
emacs: list: Generate numerical sort predicates. * emacs/guix-list.el: Generate predicates to sort tabulated list columns numerically. (guix-list-define-numerical-sorter) (guix-list-define-numerical-sorters): New macros (guix-list-column-format): Use 'guix-list-sort-numerically-0' for generation "Number" column.
emacs: Simplify defining parameter titles. * emacs/guix-utils.el (guix-symbol-title): New procedure. * emacs/guix-base.el (guix-get-param-title): Use it. (guix-param-titles): Remove most titles as they are automatically defined by 'guix-symbol-title'.
emacs: Add API for 'guix-entry'. * emacs/guix-info.el: Use new entry procedures. * emacs/guix-list.el: Likewise. * emacs/guix-base.el: Likewise. (guix-get-entry-by-id): Move and rename to ... * emacs/guix-entry.el (guix-entry-by-id): ...this. New file. (guix-entry-value, guix-entry-id, guix-entries-by-ids) (guix-replace-entry): New procedures. * emacs.am (ELFILES): Add new file.
emacs: Add 'guix-with-indent'. * emacs/guix-utils.el (guix-with-indent): New macro. (guix-memoized-font-lock-keywords): Rename to... (guix-utils-font-lock-keywords): ... this. Add it. * emacs/guix-info.el (guix-info-insert-entry-default): Use it.
emacs: Use "cl-list*" instead of "apply #'list". * emacs/guix-command.el (guix-run-view-build-log): Use cl-list*. (guix-run-view-size-map): Likewise. * emacs/guix-external.el (guix-dot-arguments): Likewise.
gnu: Add python-markdown. * gnu/packages/python.scm (python-markdown, python2-markdown): New variables. Signed-off-by: Leo Famulari <leo@famulari.name>
gnu: love: Update to 0.10.0. * gnu/packages/game-development.scm (love): Update to 0.10.0.
gnu: guile-ssh: Update to 0.9.0. * gnu/packages/ssh.scm (guile-ssh): Update to 0.9.0.
system: Allow the root file system to be named by UUID. * gnu/build/file-systems.scm (canonicalize-device-spec)[canonical-title]: Use 'string->uuid' to check whether SPEC is a UUID. When SPEC is a string and CANONICAL-TITLE is 'uuid, call 'string->uuid'. * gnu/system.scm (operating-system-grub.cfg): Add 'root-device' variable and use it for the "--root=" argument.
file-systems: Move 'string->uuid' to the build side. * gnu/system/file-systems.scm (%uuid-rx, string->uuid): Move to... * gnu/build/file-systems.scm (%uuid-rx, string->uuid): ... here. New variables.
system: Allow the root file system to have a UUID. This is a followup to ab64483. * gnu/system.scm (mapped-device-user): Check whether the title of FS is 'device before calling 'string=?'. * gnu/system/vm.scm (virtualized-operating-system)[user-file-systems]: Likewise.