emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master e7697d9: Remap quit-window to xref-quit in xref buf


From: Dmitry Gutov
Subject: [Emacs-diffs] master e7697d9: Remap quit-window to xref-quit in xref buffers
Date: Wed, 21 Jan 2015 07:20:17 +0000

branch: master
commit e7697d9763982ffafd85407f4102fbf9b7760d57
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    Remap quit-window to xref-quit in xref buffers
    
    Fixes: debbugs:19466
    
    * lisp/progmodes/xref.el (xref--xref-buffer-mode-map): Define before
    the major mode.  Remap `quit-window' to `xref-quit'.
    (xref--xref-buffer-mode): Inherit from special-mode.
---
 lisp/ChangeLog         |    4 ++++
 lisp/progmodes/xref.el |   27 ++++++++++++++-------------
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1c71008..65c0684 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,9 @@
 2015-01-21  Dmitry Gutov  <address@hidden>
 
+       * progmodes/xref.el (xref--xref-buffer-mode-map): Define before
+       the major mode.  Remap `quit-window' to `xref-quit'.
+       (xref--xref-buffer-mode): Inherit from special-mode.
+
        xref: Keep track of temporary buffers  (bug#19466).
        * progmodes/xref.el (xref--temporary-buffers, xref--selected)
        (xref--inhibit-mark-selected): New variables.
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 1174a60..ee81250 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -421,21 +421,22 @@ Used for temporary buffers.")
     (xref-quit)
     (xref--pop-to-location loc window)))
 
-(define-derived-mode xref--xref-buffer-mode fundamental-mode "XREF"
+(defvar xref--xref-buffer-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap quit-window] #'xref-quit)
+    (define-key map (kbd "n") #'xref-next-line)
+    (define-key map (kbd "p") #'xref-prev-line)
+    (define-key map (kbd "RET") #'xref-goto-xref)
+    (define-key map (kbd "C-o") #'xref-show-location-at-point)
+    ;; suggested by Johan Claesson "to further reduce finger movement":
+    (define-key map (kbd ".") #'xref-next-line)
+    (define-key map (kbd ",") #'xref-prev-line)
+    map))
+
+(define-derived-mode xref--xref-buffer-mode special-mode "XREF"
   "Mode for displaying cross-references."
   (setq buffer-read-only t))
 
-(let ((map xref--xref-buffer-mode-map))
-  (define-key map (kbd "q") #'xref-quit)
-  (define-key map (kbd "n") #'xref-next-line)
-  (define-key map (kbd "p") #'xref-prev-line)
-  (define-key map (kbd "RET") #'xref-goto-xref)
-  (define-key map (kbd "C-o") #'xref-show-location-at-point)
-
-  ;; suggested by Johan Claesson "to further reduce finger movement":
-  (define-key map (kbd ".") #'xref-next-line)
-  (define-key map (kbd ",") #'xref-prev-line))
-
 (defun xref-quit (&optional kill)
   "Perform cleanup, then quit the current window.
 The cleanup consists of burying all temporarily displayed
@@ -445,7 +446,7 @@ created in the process of showing xrefs.
 Exceptions are made for buffers switched to by the user in the
 meantime, and other window configuration changes.  These are
 preserved."
-  (interactive "P")a
+  (interactive "P")
   (let ((window (selected-window))
         (history xref--display-history))
     (setq xref--display-history nil)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]