diff options
author | Alex Kost <alezost@gmail.com> | 2015-11-19 16:43:10 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2016-01-02 17:25:35 +0300 |
commit | 78fdbdc033a6e33076fd87bb612247e93e9ca935 (patch) | |
tree | 54d5da034135cc1677f0bc5a51b65c3678805964 | |
parent | 649df66705cdd6c842af22f1ed4ef6cfeec79874 (diff) | |
download | guix-78fdbdc033a6e33076fd87bb612247e93e9ca935.tar guix-78fdbdc033a6e33076fd87bb612247e93e9ca935.tar.gz |
emacs: list: Add 'guix-list-mode-initialize'.
* emacs/guix-list.el (guix-list-mode-initialize): New procedure.
(guix-list-define-entry-type): Use it.
-rw-r--r-- | emacs/guix-list.el | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/emacs/guix-list.el b/emacs/guix-list.el index aab3ef8fd7..947a54562d 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -429,6 +429,8 @@ Same as `tabulated-list-sort', but also restore marks after sorting." (guix-list-restore-marks)) +;;; Major mode and interface definer + (defvar guix-list-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent @@ -442,11 +444,18 @@ Same as `tabulated-list-sort', but also restore marks after sorting." (define-key map (kbd "DEL") 'guix-list-unmark-backward) (define-key map [remap tabulated-list-sort] 'guix-list-sort) map) - "Parent keymap for list buffers.") + "Keymap for `guix-list-mode' buffers.") (define-derived-mode guix-list-mode tabulated-list-mode "Guix-List" - "Parent mode for displaying information in list buffers." - (setq tabulated-list-padding 2)) + "Parent mode for displaying data in 'list' form.") + +(defun guix-list-mode-initialize (entry-type) + "Set up the current 'list' buffer for displaying ENTRY-TYPE entries." + (setq tabulated-list-padding 2 + tabulated-list-format (guix-list-tabulated-format entry-type) + tabulated-list-sort-key (guix-list-tabulated-sort-key entry-type)) + (setq-local guix-list-marks (guix-list-marks entry-type)) + (tabulated-list-init-header)) (defmacro guix-list-define-entry-type (entry-type &rest args) "Define common stuff for displaying ENTRY-TYPE entries in list buffers. @@ -515,12 +524,7 @@ See also `guix-list-describe'." (defun ,init-fun () ,(concat "Initial settings for `" mode-str "'.") - (setq tabulated-list-sort-key (guix-list-tabulated-sort-key - ',entry-type) - tabulated-list-format (guix-list-tabulated-format - ',entry-type)) - (setq-local guix-list-marks (guix-list-marks ',entry-type)) - (tabulated-list-init-header)) + (guix-list-mode-initialize ',entry-type)) (guix-alist-put! '((describe . ,describe-var) |