diff options
| author | Dmitry Gutov | 2015-01-21 09:20:04 +0200 |
|---|---|---|
| committer | Dmitry Gutov | 2015-01-21 09:20:04 +0200 |
| commit | e7697d9763982ffafd85407f4102fbf9b7760d57 (patch) | |
| tree | 913b63ef1ce30118d3626cef02b7d96e09d61f85 | |
| parent | 956b13c527dc6ac5443ea4d9706faa3a845b8562 (diff) | |
| download | emacs-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/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 @@ | |||
| 1 | 2015-01-21 Dmitry Gutov <dgutov@yandex.ru> | 1 | 2015-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. |
| 441 | The cleanup consists of burying all temporarily displayed | 442 | The cleanup consists of burying all temporarily displayed |
| @@ -445,7 +446,7 @@ created in the process of showing xrefs. | |||
| 445 | Exceptions are made for buffers switched to by the user in the | 446 | Exceptions are made for buffers switched to by the user in the |
| 446 | meantime, and other window configuration changes. These are | 447 | meantime, and other window configuration changes. These are |
| 447 | preserved." | 448 | preserved." |
| 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) |