]> git.eshelyaron.com Git - emacs.git/commitdiff
Remap quit-window to xref-quit in xref buffers
authorDmitry Gutov <dgutov@yandex.ru>
Wed, 21 Jan 2015 07:20:04 +0000 (09:20 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Wed, 21 Jan 2015 07:20:04 +0000 (09:20 +0200)
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
lisp/progmodes/xref.el

index 1c710086702ba5cc5cc972f3af47e9b6fbddd096..65c068425f906142240259fc141bc0c16307aed9 100644 (file)
@@ -1,5 +1,9 @@
 2015-01-21  Dmitry Gutov  <dgutov@yandex.ru>
 
+       * 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.
index 1174a6059706976561e9c388c0a2c2c518c87794..ee8125073aac3100da61cfa4133dd789f9ff11cf 100644 (file)
@@ -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)