mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-20 18:17:20 +00:00
Fix 'flymake-show-diagnostics-buffer' when line numbers are displayed
* lisp/progmodes/flymake.el (flymake--diagnostics-buffer-entries): Do nothing if 'flymake--diagnostics-buffer-source' is not a buffer. (Bug#40529)
This commit is contained in:
parent
63e8d0ea87
commit
ff09b4eeac
@ -1321,35 +1321,42 @@ POS can be a buffer position or a button"
|
||||
(flymake-show-diagnostic (if (button-type pos) (button-start pos) pos))))
|
||||
|
||||
(defun flymake--diagnostics-buffer-entries ()
|
||||
(with-current-buffer flymake--diagnostics-buffer-source
|
||||
(cl-loop for diag in
|
||||
(cl-sort (flymake-diagnostics) #'< :key #'flymake-diagnostic-beg)
|
||||
for (line . col) =
|
||||
(save-excursion
|
||||
(goto-char (flymake--diag-beg diag))
|
||||
(cons (line-number-at-pos)
|
||||
(- (point)
|
||||
(line-beginning-position))))
|
||||
for type = (flymake--diag-type diag)
|
||||
collect
|
||||
(list (list :diagnostic diag
|
||||
:line line
|
||||
:severity (flymake--lookup-type-property
|
||||
type
|
||||
'severity (warning-numeric-level :error)))
|
||||
`[,(format "%s" line)
|
||||
,(format "%s" col)
|
||||
,(propertize (format "%s"
|
||||
(flymake--lookup-type-property
|
||||
type 'flymake-type-name type))
|
||||
'face (flymake--lookup-type-property
|
||||
type 'mode-line-face 'flymake-error))
|
||||
(,(format "%s" (flymake--diag-text diag))
|
||||
mouse-face highlight
|
||||
help-echo "mouse-2: visit this diagnostic"
|
||||
face nil
|
||||
action flymake-goto-diagnostic
|
||||
mouse-action flymake-goto-diagnostic)]))))
|
||||
;; Do nothing if 'flymake--diagnostics-buffer-source' has not yet
|
||||
;; been set to a valid buffer. This could happen when this function
|
||||
;; is called too early. For example 'global-display-line-numbers-mode'
|
||||
;; calls us from its mode hook, when the diagnostic buffer has just
|
||||
;; been created by 'flymake-show-diagnostics-buffer', but is not yet
|
||||
;; set up properly.
|
||||
(when (bufferp flymake--diagnostics-buffer-source)
|
||||
(with-current-buffer flymake--diagnostics-buffer-source
|
||||
(cl-loop for diag in
|
||||
(cl-sort (flymake-diagnostics) #'< :key #'flymake-diagnostic-beg)
|
||||
for (line . col) =
|
||||
(save-excursion
|
||||
(goto-char (flymake--diag-beg diag))
|
||||
(cons (line-number-at-pos)
|
||||
(- (point)
|
||||
(line-beginning-position))))
|
||||
for type = (flymake--diag-type diag)
|
||||
collect
|
||||
(list (list :diagnostic diag
|
||||
:line line
|
||||
:severity (flymake--lookup-type-property
|
||||
type
|
||||
'severity (warning-numeric-level :error)))
|
||||
`[,(format "%s" line)
|
||||
,(format "%s" col)
|
||||
,(propertize (format "%s"
|
||||
(flymake--lookup-type-property
|
||||
type 'flymake-type-name type))
|
||||
'face (flymake--lookup-type-property
|
||||
type 'mode-line-face 'flymake-error))
|
||||
(,(format "%s" (flymake--diag-text diag))
|
||||
mouse-face highlight
|
||||
help-echo "mouse-2: visit this diagnostic"
|
||||
face nil
|
||||
action flymake-goto-diagnostic
|
||||
mouse-action flymake-goto-diagnostic)])))))
|
||||
|
||||
(define-derived-mode flymake-diagnostics-buffer-mode tabulated-list-mode
|
||||
"Flymake diagnostics"
|
||||
|
Loading…
Reference in New Issue
Block a user