aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2015-01-21 09:20:04 +0200
committerDmitry Gutov2015-01-21 09:20:04 +0200
commite7697d9763982ffafd85407f4102fbf9b7760d57 (patch)
tree913b63ef1ce30118d3626cef02b7d96e09d61f85
parent956b13c527dc6ac5443ea4d9706faa3a845b8562 (diff)
downloademacs-e7697d9763982ffafd85407f4102fbf9b7760d57.tar.gz
emacs-e7697d9763982ffafd85407f4102fbf9b7760d57.zip
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/ChangeLog4
-rw-r--r--lisp/progmodes/xref.el27
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 @@
12015-01-21 Dmitry Gutov <dgutov@yandex.ru> 12015-01-21 Dmitry Gutov <dgutov@yandex.ru>
2 2
3 * progmodes/xref.el (xref--xref-buffer-mode-map): Define before
4 the major mode. Remap `quit-window' to `xref-quit'.
5 (xref--xref-buffer-mode): Inherit from special-mode.
6
3 xref: Keep track of temporary buffers (bug#19466). 7 xref: Keep track of temporary buffers (bug#19466).
4 * progmodes/xref.el (xref--temporary-buffers, xref--selected) 8 * progmodes/xref.el (xref--temporary-buffers, xref--selected)
5 (xref--inhibit-mark-selected): New variables. 9 (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.")
421 (xref-quit) 421 (xref-quit)
422 (xref--pop-to-location loc window))) 422 (xref--pop-to-location loc window)))
423 423
424(define-derived-mode xref--xref-buffer-mode fundamental-mode "XREF" 424(defvar xref--xref-buffer-mode-map
425 (let ((map (make-sparse-keymap)))
426 (define-key map [remap quit-window] #'xref-quit)
427 (define-key map (kbd "n") #'xref-next-line)
428 (define-key map (kbd "p") #'xref-prev-line)
429 (define-key map (kbd "RET") #'xref-goto-xref)
430 (define-key map (kbd "C-o") #'xref-show-location-at-point)
431 ;; suggested by Johan Claesson "to further reduce finger movement":
432 (define-key map (kbd ".") #'xref-next-line)
433 (define-key map (kbd ",") #'xref-prev-line)
434 map))
435
436(define-derived-mode xref--xref-buffer-mode special-mode "XREF"
425 "Mode for displaying cross-references." 437 "Mode for displaying cross-references."
426 (setq buffer-read-only t)) 438 (setq buffer-read-only t))
427 439
428(let ((map xref--xref-buffer-mode-map))
429 (define-key map (kbd "q") #'xref-quit)
430 (define-key map (kbd "n") #'xref-next-line)
431 (define-key map (kbd "p") #'xref-prev-line)
432 (define-key map (kbd "RET") #'xref-goto-xref)
433 (define-key map (kbd "C-o") #'xref-show-location-at-point)
434
435 ;; suggested by Johan Claesson "to further reduce finger movement":
436 (define-key map (kbd ".") #'xref-next-line)
437 (define-key map (kbd ",") #'xref-prev-line))
438
439(defun xref-quit (&optional kill) 440(defun xref-quit (&optional kill)
440 "Perform cleanup, then quit the current window. 441 "Perform cleanup, then quit the current window.
441The cleanup consists of burying all temporarily displayed 442The cleanup consists of burying all temporarily displayed
@@ -445,7 +446,7 @@ created in the process of showing xrefs.
445Exceptions are made for buffers switched to by the user in the 446Exceptions are made for buffers switched to by the user in the
446meantime, and other window configuration changes. These are 447meantime, and other window configuration changes. These are
447preserved." 448preserved."
448 (interactive "P")a 449 (interactive "P")
449 (let ((window (selected-window)) 450 (let ((window (selected-window))
450 (history xref--display-history)) 451 (history xref--display-history))
451 (setq xref--display-history nil) 452 (setq xref--display-history nil)