diff options
author | Dmitry Gutov <dgutov@yandex.ru> | 2015-01-05 02:45:30 +0300 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2015-01-05 02:45:30 +0300 |
commit | c477f2073018ed4deb3810059c1032c1709164fa (patch) | |
tree | 030e934d27d30c657c3a9d92c6fe4303c10a1b6f /lisp/progmodes/xref.el | |
parent | bf90e9ac7caec15b0f111e0bb67e311233f3a795 (diff) | |
download | emacs-c477f2073018ed4deb3810059c1032c1709164fa.tar.gz emacs-c477f2073018ed4deb3810059c1032c1709164fa.tar.bz2 emacs-c477f2073018ed4deb3810059c1032c1709164fa.zip |
Add mouse interaction to xref
* lisp/progmodes/xref.el (xref--button-map): New variable.
(xref--mouse-2): New command.
(xref--insert-xrefs): Add `mouse-face' and `keymap' properties to
the inserted references.
Diffstat (limited to 'lisp/progmodes/xref.el')
-rw-r--r-- | lisp/progmodes/xref.el | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 7bc6500a8de..41b70c7eff2 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -405,6 +405,21 @@ WINDOW controls how the buffer is displayed: (defconst xref-buffer-name "*xref*" "The name of the buffer to show xrefs.") +(defvar xref--button-map + (let ((map (make-sparse-keymap))) + (define-key map [(control ?m)] #'xref-goto-xref) + (define-key map [mouse-1] #'xref-goto-xref) + (define-key map [mouse-2] #'xref--mouse-2) + map)) + +(defun xref--mouse-2 (event) + "Move point to the button and show the xref definition." + (interactive "e") + (mouse-set-point event) + (forward-line 0) + (xref--search-property 'xref-location) + (xref-show-location-at-point)) + (defun xref--insert-xrefs (xref-alist) "Insert XREF-ALIST in the current-buffer. XREF-ALIST is of the form ((GROUP . (XREF ...)) ...). Where @@ -417,7 +432,9 @@ GROUP is a string for decoration purposes and XREF is an (with-slots (description location) xref (xref--insert-propertized (list 'xref-location location - 'face 'font-lock-keyword-face) + 'face 'font-lock-keyword-face + 'mouse-face 'highlight + 'keymap xref--button-map) description)) (when (or more1 more2) (insert "\n"))))) |