diff options
author | Alex Kost <alezost@gmail.com> | 2015-06-24 10:36:18 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2015-06-26 16:15:45 +0300 |
commit | 74cc67372ec3771b157c015da4ba7ed5d921799f (patch) | |
tree | 9a2190ee4cffbc8e0dd51aa0e50dd610335e20ba | |
parent | 1c080cb68a4c92f8b740d9daca4075f141f5b659 (diff) | |
download | guix-74cc67372ec3771b157c015da4ba7ed5d921799f.tar guix-74cc67372ec3771b157c015da4ba7ed5d921799f.tar.gz |
emacs: Add 'guix-root-map'.
* emacs/guix-base.el (guix-define-buffer-type): Move common key bindings
from here...
(guix-root-map): ... to here. New variable.
* emacs/guix-info.el (guix-info-mode-map): Use it.
* emacs/guix-list.el (guix-list-mode-map): Use it.
* doc/emacs.texi (Emacs Keymaps): Document it.
-rw-r--r-- | doc/emacs.texi | 3 | ||||
-rw-r--r-- | emacs/guix-base.el | 21 | ||||
-rw-r--r-- | emacs/guix-info.el | 2 | ||||
-rw-r--r-- | emacs/guix-list.el | 4 |
4 files changed, 19 insertions, 11 deletions
diff --git a/doc/emacs.texi b/doc/emacs.texi index 0e89a11668..180037a88f 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -426,6 +426,9 @@ If you want to change default key bindings, use the following keymaps (@pxref{Init Rebinding,,, emacs, The GNU Emacs Manual}): @table @code +@item guix-root-map +Parent keymap with general keys for all guix modes. + @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 587288eaf9..fe89584f18 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -295,6 +295,17 @@ See `guix-update-after-operation' for details." ;;; Common definitions for buffer types +(defvar guix-root-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.") + (defvar-local guix-profile nil "Profile used for the current buffer.") (put 'guix-profile 'permanent-local t) @@ -440,15 +451,7 @@ following keywords are available: "\\{" mode-map-str "}") (setq-local revert-buffer-function 'guix-revert-buffer) (setq-local guix-history-size ,history-var) - (and (fboundp ',mode-init-fun) (,mode-init-fun))) - - (let ((map ,mode-map)) - (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))))) + (and (fboundp ',mode-init-fun) (,mode-init-fun)))))) (put 'guix-define-buffer-type 'lisp-indent-function 'defun) diff --git a/emacs/guix-info.el b/emacs/guix-info.el index cbf8f46ad6..bb21024c0c 100644 --- a/emacs/guix-info.el +++ b/emacs/guix-info.el @@ -395,7 +395,7 @@ 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 button-buffer-map + map (make-composed-keymap (list guix-root-map button-buffer-map) special-mode-map)) map) "Parent keymap for info buffers.") diff --git a/emacs/guix-list.el b/emacs/guix-list.el index 26dfeacb8c..e84d60a0aa 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -371,7 +371,9 @@ 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 tabulated-list-mode-map) + (set-keymap-parent + map (make-composed-keymap guix-root-map + tabulated-list-mode-map)) (define-key map (kbd "RET") 'guix-list-describe) (define-key map (kbd "m") 'guix-list-mark) (define-key map (kbd "*") 'guix-list-mark) |