]> git.eshelyaron.com Git - emacs.git/commitdiff
Tweak the Flymake diagnostics buffer again
authorJoão Távora <joaotavora@gmail.com>
Sun, 8 Oct 2017 23:12:48 +0000 (00:12 +0100)
committerJoão Távora <joaotavora@gmail.com>
Tue, 10 Oct 2017 16:20:01 +0000 (17:20 +0100)
* lisp/progmodes/flymake.el
(flymake-diagnostics-buffer-mode-map): Don't bind [mouse-1].
(flymake-show-diagnostic): Rename from
flymake-show-diagnostic-at-point.  Really use another window.
(flymake-goto-diagnostic): Rename from
flymake-goto-diagnostic-at-point.
(flymake--diagnostics-buffer-entries): Use a button just for
the message bit.

lisp/progmodes/flymake.el

index bdf784c7a117a55fc94e38ab2f924a6f9a1cfe25..6c2a37abd7dcaf0f02119152b7aaf2e8ad70e35c 100644 (file)
@@ -1079,31 +1079,31 @@ applied."
 
 (defvar flymake-diagnostics-buffer-mode-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [mouse-1] 'flymake-goto-diagnostic-at-point)
-    (define-key map (kbd "RET") 'flymake-goto-diagnostic-at-point)
-    (define-key map (kbd "SPC") 'flymake-show-diagnostic-at-point)
+    (define-key map (kbd "RET") 'flymake-goto-diagnostic)
+    (define-key map (kbd "SPC") 'flymake-show-diagnostic)
     map))
 
-(defun flymake-show-diagnostic-at-point ()
-  "Show location of diagnostic at point."
-  (interactive)
-  (let* ((id (or (tabulated-list-get-id)
+(defun flymake-show-diagnostic (pos &optional other-window)
+  "Show location of diagnostic at POS."
+  (interactive (list (point) t))
+  (let* ((id (or (tabulated-list-get-id pos)
                  (user-error "Nothing at point")))
          (overlay (plist-get id :overlay)))
     (with-current-buffer (overlay-buffer overlay)
       (with-selected-window
-          (display-buffer (current-buffer))
+          (display-buffer (current-buffer) other-window)
         (goto-char (overlay-start overlay))
         (pulse-momentary-highlight-region (overlay-start overlay)
                                           (overlay-end overlay)
                                           'highlight))
       (current-buffer))))
 
-(defun flymake-goto-diagnostic-at-point ()
-  "Show location of diagnostic at point."
-  (interactive)
+(defun flymake-goto-diagnostic (pos)
+  "Show location of diagnostic at POS.
+POS can be a buffer position or a button"
+  (interactive "d")
   (pop-to-buffer
-   (flymake-show-diagnostic-at-point)))
+   (flymake-show-diagnostic (if (button-type pos) (button-start pos) pos))))
 
 (defun flymake--diagnostics-buffer-entries ()
   (with-current-buffer flymake--diagnostics-buffer-source
@@ -1128,7 +1128,11 @@ applied."
                      ,(propertize (format "%s" type)
                                   'face (flymake--lookup-type-property
                                          type 'mode-line-face 'flymake-error))
-                     ,(format "%s" (flymake--diag-text diag))]))))
+                     (,(format "%s" (flymake--diag-text diag))
+                      mouse-face highlight
+                      help-echo "mouse-2: visit this diagnostic"
+                      face nil
+                      mouse-action flymake-goto-diagnostic)]))))
 
 (define-derived-mode flymake-diagnostics-buffer-mode tabulated-list-mode
   "Flymake diagnostics"