[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
21/35: emacs: Split 'guix-root-map' keymap.
From: |
Alex Kost |
Subject: |
21/35: emacs: Split 'guix-root-map' keymap. |
Date: |
Fri, 11 Dec 2015 11:42:37 +0000 |
alezost pushed a commit to branch wip-refactor-emacs-ui
in repository guix.
commit c2e07fb53d8e9a2d3f4d5472f1d2aa18e17c1244
Author: Alex Kost <address@hidden>
Date: Sat Nov 21 12:25:19 2015 +0300
emacs: Split 'guix-root-map' keymap.
* 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.
---
doc/emacs.texi | 8 ++++++--
emacs/guix-base.el | 6 ++----
emacs/guix-info.el | 4 ++--
emacs/guix-list.el | 2 +-
emacs/guix-ui.el | 18 ++++++++++++++++++
5 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/doc/emacs.texi b/doc/emacs.texi
index e4608f0..a1024e9 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -439,8 +439,12 @@ If you want to change default key bindings, use the
following keymaps
(@pxref{Init Rebinding,,, emacs, The GNU Emacs Manual}):
@table @code
address@hidden guix-root-map
-Parent keymap with general keys for all guix modes.
address@hidden guix-buffer-map
+Parent keymap with general keys for any buffer type.
+
address@hidden guix-ui-map
+Parent keymap with general keys for buffers used for Guix package
+management (for packages, outputs and generations).
@item guix-list-mode-map
Parent keymap with general keys for ``list'' buffers.
diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 3aaa266..73c9404 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -283,16 +283,14 @@ This alist is filled by `guix-buffer-define-interface'
macro.")
"Return 'revert-confirm' value for BUFFER-TYPE/ENTRY-TYPE."
(guix-buffer-value buffer-type entry-type 'revert-confirm))
-(defvar guix-root-map
+(defvar guix-buffer-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "l") 'guix-history-back)
(define-key map (kbd "r") 'guix-history-forward)
(define-key map (kbd "g") 'revert-buffer)
(define-key map (kbd "R") 'guix-redisplay-buffer)
- (define-key map (kbd "M") 'guix-apply-manifest)
- (define-key map (kbd "C-c C-z") 'guix-switch-to-repl)
map)
- "Parent keymap for all guix modes.")
+ "Parent keymap for Guix buffer modes.")
(defvar-local guix-profile nil
"Profile used for the current buffer.")
diff --git a/emacs/guix-info.el b/emacs/guix-info.el
index 3111643..c988d9c 100644
--- a/emacs/guix-info.el
+++ b/emacs/guix-info.el
@@ -396,10 +396,10 @@ See `insert-text-button' for the meaning of PROPERTIES."
(defvar guix-info-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent
- map (make-composed-keymap (list guix-root-map button-buffer-map)
+ map (make-composed-keymap (list guix-buffer-map button-buffer-map)
special-mode-map))
map)
- "Parent keymap for info buffers.")
+ "Keymap for `guix-info-mode' buffers.")
(define-derived-mode guix-info-mode special-mode "Guix-Info"
"Parent mode for displaying information in info buffers.")
diff --git a/emacs/guix-list.el b/emacs/guix-list.el
index 9aed7dc..8a9c10f 100644
--- a/emacs/guix-list.el
+++ b/emacs/guix-list.el
@@ -380,7 +380,7 @@ Same as `tabulated-list-sort', but also restore marks after
sorting."
(defvar guix-list-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent
- map (make-composed-keymap guix-root-map
+ map (make-composed-keymap guix-buffer-map
tabulated-list-mode-map))
(define-key map (kbd "RET") 'guix-list-describe)
(define-key map (kbd "i") 'guix-list-describe)
diff --git a/emacs/guix-ui.el b/emacs/guix-ui.el
index 4f46882..25b110c 100644
--- a/emacs/guix-ui.el
+++ b/emacs/guix-ui.el
@@ -27,6 +27,13 @@
(require 'cl-lib)
(require 'guix-utils)
+(defvar guix-ui-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "M") 'guix-apply-manifest)
+ (define-key map (kbd "C-c C-z") 'guix-switch-to-repl)
+ map)
+ "Parent keymap for Guix package/generation buffers.")
+
(defun guix-ui-list-describe (ids)
"Describe 'ui' entries with IDS (list of identifiers)."
(apply #'guix-get-show-entries
@@ -52,12 +59,23 @@ The rest keyword arguments are passed to
(buffer-type-str (symbol-name buffer-type))
(prefix (concat "guix-" entry-type-str "-"
buffer-type-str))
+ (mode-str (concat prefix "-mode"))
+ (mode-map (intern (concat mode-str "-map")))
+ (parent-map (intern (format "guix-%s-mode-map"
+ buffer-type-str)))
(required-var (intern (concat prefix "-required-params")))
(definer (intern (format "guix-%s-define-interface"
buffer-type-str))))
(guix-keyword-args-let args
((required-val :required ''(id)))
`(progn
+ (defvar ,mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent
+ map (make-composed-keymap ,parent-map guix-ui-map))
+ map)
+ ,(format "Keymap for `%s' buffers." mode-str))
+
(defvar ,required-var ,required-val
,(format "\
List of the required '%s' parameters for '%s' buffer.
- 08/35: emacs: Add 'guix-keyword-args-let'., (continued)
- 08/35: emacs: Add 'guix-keyword-args-let'., Alex Kost, 2015/12/11
- 12/35: emacs: list: Generalize 'sort-key' code., Alex Kost, 2015/12/11
- 15/35: emacs: list: Factorize "edit package" commands., Alex Kost, 2015/12/11
- 10/35: emacs: list: Generalize 'marks' code., Alex Kost, 2015/12/11
- 11/35: emacs: list: Generalize 'describe' code., Alex Kost, 2015/12/11
- 14/35: emacs: list: Split 'guix-list-format' variable., Alex Kost, 2015/12/11
- 20/35: emacs: Add wrappers for 'history-size' and 'revert-confirm'., Alex Kost, 2015/12/11
- 03/35: emacs: Add API for 'guix-entry'., Alex Kost, 2015/12/11
- 19/35: emacs: Split 'guix-param-titles' variable., Alex Kost, 2015/12/11
- 24/35: emacs: Improve messages for packages found by ID., Alex Kost, 2015/12/11
- 21/35: emacs: Split 'guix-root-map' keymap.,
Alex Kost <=
- 23/35: emacs: Generalize buffer reverting., Alex Kost, 2015/12/11
- 25/35: emacs: info: Buttonize package name heading., Alex Kost, 2015/12/11
- 22/35: emacs: Generalize buffer redisplaying., Alex Kost, 2015/12/11
- 27/35: emacs: info: Get rid of syntactic fontification., Alex Kost, 2015/12/11
- 18/35: emacs: info: Split 'guix-info-format' variable., Alex Kost, 2015/12/11
- 17/35: emacs: Factorize macros for defining interfaces., Alex Kost, 2015/12/11
- 29/35: emacs: Reorganize 'readers' code., Alex Kost, 2015/12/11
- 31/35: emacs: Add 'list-single' variables., Alex Kost, 2015/12/11
- 33/35: emacs: Return nil instead of "" in completing readers., Alex Kost, 2015/12/11
- 26/35: emacs: Generalize buffer naming., Alex Kost, 2015/12/11