From e7697d9763982ffafd85407f4102fbf9b7760d57 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Wed, 21 Jan 2015 09:20:04 +0200 Subject: [PATCH] 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 1c710086702..65c068425f9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2015-01-21 Dmitry Gutov + * 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 1174a605970..ee8125073aa 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) -- 2.11.4.GIT