From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: [PATCH] emacs: Add 'guix-root-map'. Date: Wed, 24 Jun 2015 16:55:46 +0300 Message-ID: <87zj3pfbx9.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z7l9h-0003RN-CS for guix-devel@gnu.org; Wed, 24 Jun 2015 09:55:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z7l9b-0000K5-Po for guix-devel@gnu.org; Wed, 24 Jun 2015 09:55:57 -0400 Received: from mail-lb0-x22c.google.com ([2a00:1450:4010:c04::22c]:35597) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z7l9b-0000Jm-4f for guix-devel@gnu.org; Wed, 24 Jun 2015 09:55:51 -0400 Received: by lbbwc1 with SMTP id wc1so26869731lbb.2 for ; Wed, 24 Jun 2015 06:55:49 -0700 (PDT) Received: from leviafan ([217.107.192.189]) by mx.google.com with ESMTPSA id s10sm6403115lae.47.2015.06.24.06.55.45 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2015 06:55:48 -0700 (PDT) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org --=-=-= Content-Type: text/plain This patch does not modify the current interface in any way. I just realized that it is possible to make a root keymap instead of binding common keys in all other maps. It became possible after commit dfeb023 but it's better late than never :-) --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-emacs-Add-guix-root-map.patch >From 1888974254efc8b71d3a109926ec1a13660f3b9d Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 24 Jun 2015 10:36:18 +0300 Subject: [PATCH] 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. --- doc/emacs.texi | 3 +++ emacs/guix-base.el | 21 ++++++++++++--------- emacs/guix-info.el | 2 +- emacs/guix-list.el | 4 +++- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 0e89a11..180037a 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 587288e..fe89584 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 cbf8f46..bb21024 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 26dfeac..e84d60a 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) -- 2.4.3 --=-=-=--