summaryrefslogtreecommitdiff
path: root/emacs/guix-ui.el
AgeCommit message (Collapse)Author
2016-02-04emacs: Add missing (require 'guix-profiles).Alex Kost
Reported by Christopher Allan Webber <cwebber@dustycloud.org> on #guix. Several modules use the code from 'guix-profiles' without requiring it. It was never noticed before commits e4e2154644ecf76ea02a50304c1405c00c9ffdd1 and 13fe4891fa247d306e203ee14c6886513bd86b52, because 'guix-emacs' required this module. But now, when 'site-start.el' loads 'guix-emacs', 'guix-profiles' may not exist yet, so it may not be required. This will lead to an error when some of "M-x guix-..." commands will be used. See <https://gnunet.org/bot/log/guix/2016-02-03#T898859>. * emacs/guix-base.el: Require 'guix-profiles'. * emacs/guix-ui.el: Likewise. * emacs/guix-ui-generation.el: Likewise. * emacs/guix-ui-package.el: Likewise.
2016-01-02emacs: Add 'guix-ui-read-profile'.Alex Kost
* emacs/guix-ui.el (guix-ui-read-profile): New procedure. * emacs/guix-ui-package.el (guix-search-by-name) (guix-search-by-regexp, guix-installed-packages) (guix-obsolete-packages, guix-all-available-packages) (guix-newest-available-packages): Use it. * emacs/guix-ui-generation.el (guix-generations) (guix-last-generations, guix-generations-by-time): Use it.
2016-01-02emacs: Add hierarchy of customization groups.Alex Kost
* emacs/guix-buffer.el (guix-define-groups, guix-define-entry-type) (guix-define-buffer-type): New macros. (guix-buffer-define-interface): Add parent groups for the generated custom groups. * emacs/guix-info.el: Use 'guix-define-buffer-type' to generate custom groups. * emacs/guix-list.el: Likewise. * emacs/guix-ui.el: Use 'guix-define-groups' to generate custom groups. (guix-ui-define-entry-type): New macro. * emacs/guix-ui-package.el: Use it. * emacs/guix-ui-generation.el: Use it.
2016-01-02emacs: Generalize buffer interface.Alex Kost
Extract the code for defining buffer interface from "guix-base.el", generalize it and move to "guix-buffer.el". * emacs.am (ELFILES): Add "emacs/guix-buffer.el". * emacs/guix-base.el (guix-profile, guix-entries, guix-buffer-type) (guix-entry-type, guix-search-type, guix-search-vals, guix-set-vars) (guix-get-symbol, guix-show-entries, guix-get-show-entries) (guix-set-buffer, guix-history-call, guix-make-history-item) (guix-get-params-for-receiving): Remove. (guix-switch-to-buffer): Rename to 'guix-buffer-display' and move to "guix-buffer.el". (guix-get-entries): Rename to 'guix-ui-get-entries' and move to "guix-ui.el". (guix-buffer-data, guix-buffer-value, guix-buffer-param-title) (guix-buffer-name, guix-buffer-history-size) (guix-buffer-revert-confirm?, guix-buffer-map, guix-buffer-revert) (guix-buffer-after-redisplay-hook, guix-buffer-redisplay) (guix-buffer-redisplay-goto-button): Move to... * emacs/guix-buffer.el: ... here. New file. (guix-buffer-item): New variable. (guix-buffer-with-item, guix-buffer-with-current-item) (guix-buffer-define-current-item-accessor) (guix-buffer-define-current-item-accessors) (guix-buffer-define-current-args-accessor) (guix-buffer-define-current-args-accessors): New macros. (guix-buffer-get-entries, guix-buffer-mode-enable) (guix-buffer-mode-initialize, guix-buffer-insert-entries) (guix-buffer-show-entries-default, guix-buffer-show-entries) (guix-buffer-message, guix-buffer-history-item, guix-buffer-set) (guix-buffer-display-entries-current) (guix-buffer-get-display-entries-current) (guix-buffer-display-entries, guix-buffer-get-display-entries): New procedures. * emacs/guix-info.el: Adjust for the procedures renaming. (guix-info-define-interface): Add ':show-entries-function' keyword. * emacs/guix-list.el: Likewise. * emacs/guix-ui.el (guix-ui-define-interface): Generate 'guix-ENTRY-TYPE-BUFFER-TYPE-get-entries' procedure based on 'guix-ui-get-entries'. * emacs/guix.el (guix-get-show-packages, guix-get-show-generations): Adjust for the procedures renaming.
2016-01-02emacs: Generalize buffer naming.Alex Kost
* emacs/guix-base.el (guix-buffer-name): New procedure. (guix-buffer-define-interface): Make ':buffer-name' a required keyword. (guix-update-after-operation, guix-buffer-name-function) (guix-buffer-name-simple, guix-buffer-name-default, guix-buffer-name) (guix-buffer-p, guix-buffers, guix-update-buffer) (guix-update-buffers-maybe-after-operation): Adjust, move and rename to... * emacs/guix-ui.el (guix-ui-update-after-operation) (guix-ui-buffer-name-function, guix-ui-buffer-name-simple) (guix-ui-buffer-name-default, guix-ui-buffer-name) (guix-ui-buffer?, guix-ui-buffers, guix-ui-update-buffer) (guix-ui-update-buffers-after-operation): ... this. (guix-ui-define-interface): Generate 'guix-ENTRY-TYPE-BUFFER-TYPE-buffer-name' procedure and pass it as ':buffer-name' argument. (guix-ui): New custom group. * emacs/guix-info.el: Specify ':buffer-name' for the defined interfaces. * emacs/guix-list.el: Likewise. * doc/emacs.texi (Emacs Appearance): Adjust accordingly.
2016-01-02emacs: Split 'guix-root-map' keymap.Alex Kost
* emacs/guix-base.el: (guix-root-map): Split into... (guix-buffer-map): ... this and... * emacs/guix-ui.el (guix-ui-map): ... this. (guix-ui-define-interface): Generate 'guix-ENTRY-TYPE-BUFFER-TYPE-mode-map' keymaps inheriting them from 'guix-ui-map' and 'guix-BUFFER-TYPE-mode-map'. * emacs/guix-info.el (guix-info-mode-map): Use 'guix-buffer-map'. * emacs/guix-list.el (guix-list-mode-map): Likewise. * doc/emacs.texi (Emacs Keymaps): Document new keymaps.
2016-01-02emacs: Factorize macros for defining interfaces.Alex Kost
Make a root 'guix-buffer-define-interface' macro. It should generate a common code for any type of interface. Inherit 'guix-info-define-interface' and 'guix-list-define-interface' from it. They should provide a general 'info'/'list' interface for any data. Finally, make 'guix-ui-define-interface' for the common code for interfaces to Guix packages and generations, and inherit 'guix-ui-info-define-interface' and 'guix-ui-list-define-interface' from it. * emacs/guix-base.el (guix-define-buffer-type): Rename to... (guix-buffer-define-interface): ... this. Rename internal variables ('buf-' -> 'buffer-'). Move ':required' keyword to 'guix-ui-define-interface'. * emacs/guix-info.el (guix-info-define-interface): New macro. (guix-info-font-lock-keywords): New variable. * emacs/guix-list.el (guix-list-define-entry-type): Rename to... (guix-list-define-interface): ... this. (guix-list-font-lock-keywords): New variable. (guix-list-describe-ids): Move and rename to... * emacs/guix-ui.el: New file. (guix-ui-list-describe): ... this. (guix-ui-define-interface, guix-ui-info-define-interface) (guix-ui-list-define-interface): New macros. (guix-ui-font-lock-keywords): New variable. * emacs.am (ELFILES): Add "emacs/guix-ui.el"