summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Oteiza <mvoteiza@udel.edu>2017-10-08 22:42:31 +0100
committerJoão Távora <joaotavora@gmail.com>2017-10-10 17:20:01 +0100
commit0e83f5f279b1b2c42dc214c512c0fa0a9b27af35 (patch)
tree150479bc87fb7ffc832d8faa57be95085d10d40e
parentcf4a15b9b6be8201b53fff063a378b41ec44ede9 (diff)
downloademacs-0e83f5f279b1b2c42dc214c512c0fa0a9b27af35.tar.gz
Simplify Flymake diagnostics buffer UX
Don't create text-buttons unnecessarily, just bind RET and SPC in the diagnostics buffer to a command that figures out which diagnostic it was invoked on. * lisp/progmodes/flymake.el (flymake--diagnostics-buffer-mode-keymap): Renamed from flymake--diagnostics-buffer-button-keymap. (flymake-show-diagnostic-at-point): Don't take a button. (flymake-goto-diagnostic-at-point): Don't pass button to flymake-show-diagnostic-at-point. (flymake--diagnostics-buffer-entries): Simplify.
-rw-r--r--lisp/progmodes/flymake.el35
1 files changed, 14 insertions, 21 deletions
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 5581fd429a7..bdf784c7a11 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1077,17 +1077,19 @@ applied."
(defvar-local flymake--diagnostics-buffer-source nil)
-(defvar flymake--diagnostics-buffer-button-keymap
+(defvar flymake-diagnostics-buffer-mode-map
(let ((map (make-sparse-keymap)))
- (define-key map [mouse-1] 'push-button)
- (define-key map (kbd "RET") 'push-button)
+ (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)
map))
-(defun flymake-show-diagnostic-at-point (button)
- "Show location of diagnostic of BUTTON."
- (interactive (list (button-at (point))))
- (let* ((overlay (button-get button 'flymake-overlay)))
+(defun flymake-show-diagnostic-at-point ()
+ "Show location of diagnostic at point."
+ (interactive)
+ (let* ((id (or (tabulated-list-get-id)
+ (user-error "Nothing at point")))
+ (overlay (plist-get id :overlay)))
(with-current-buffer (overlay-buffer overlay)
(with-selected-window
(display-buffer (current-buffer))
@@ -1097,11 +1099,11 @@ applied."
'highlight))
(current-buffer))))
-(defun flymake-goto-diagnostic-at-point (button)
- "Show location of diagnostic of BUTTON."
- (interactive (list (button-at (point))))
+(defun flymake-goto-diagnostic-at-point ()
+ "Show location of diagnostic at point."
+ (interactive)
(pop-to-buffer
- (flymake-show-diagnostic-at-point button)))
+ (flymake-show-diagnostic-at-point)))
(defun flymake--diagnostics-buffer-entries ()
(with-current-buffer flymake--diagnostics-buffer-source
@@ -1121,16 +1123,7 @@ applied."
:severity (flymake--lookup-type-property
type
'severity (warning-numeric-level :error)))
- `[(,(format "%s" line)
- keymap ,flymake--diagnostics-buffer-button-keymap
- action flymake-goto-diagnostic-at-point
- mouse-action flymake-goto-diagnostic-at-point
- help-echo ,(mapconcat #'identity
- '("mouse-1, RET: goto location at point"
- "SPC: show location at point")
- "\n")
- flymake-diagnostic ,diag
- flymake-overlay ,ov)
+ `[,(format "%s" line)
,(format "%s" col)
,(propertize (format "%s" type)
'face (flymake--lookup-type-property