diff options
author | Dmitry Gutov <dgutov@yandex.ru> | 2015-01-21 09:20:04 +0200 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2015-01-21 09:20:04 +0200 |
commit | e7697d9763982ffafd85407f4102fbf9b7760d57 (patch) | |
tree | 913b63ef1ce30118d3626cef02b7d96e09d61f85 | |
parent | 956b13c527dc6ac5443ea4d9706faa3a845b8562 (diff) | |
download | emacs-e7697d9763982ffafd85407f4102fbf9b7760d57.tar.gz |
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.
-rw-r--r-- | lisp/ChangeLog | 4 | ||||
-rw-r--r-- | 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 <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. 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) |