1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-16 09:50:25 +00:00

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.
This commit is contained in:
Mark Oteiza 2017-10-08 22:42:31 +01:00 committed by João Távora
parent cf4a15b9b6
commit 0e83f5f279

View File

@ -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