bug#81650: [PATCH] Flymake diagnostics are not cleared in yaml-ts-mode when all errors are fixed
Eli Zaretskii <[email protected]>
| Newsgroups | gmane.emacs.bugs |
|---|---|
| Message-ID | <[email protected]> |
> Date: Tue, 18 Aug 2026 09:16:08 -0400 > From: James Cherti <[email protected]> > > When editing a file in yaml-ts-mode (emacs 31 and 32) with > Flymake enabled, resolving all linting errors does not clear > the diagnostic highlights. The previous error overlays > remain visible in the buffer despite the file being > completely valid and passing all yamllint checks. > > Steps to Reproduce: > > 1. Open a YAML file in Emacs using yaml-ts-mode. > 2. Ensure Flymake is active and yamllint is available in > your exec-path. > 3. Introduce a syntax or formatting error into the file. > 4. Wait for Flymake to run and highlight the error. > 5. Fix the error. > 6. Wait for Flymake to run again. > > The attached patch fixes the issue by moving the (funcall > report-fn diags) call outside of the while loop, ensuring > that Flymake receives the updated empty list and > successfully clears the obsolete diagnostics. Thanks. Spencer, any comments? > From ad437d1823cf2a3e88c802f725d59aab69c47bb4 Mon Sep 17 00:00:00 2001 > From: James Cherti <[email protected]> > Date: Tue, 18 Aug 2026 08:43:26 -0400 > Subject: [PATCH] Fix diagnostics clearing in yaml-ts-mode-flymake > > * lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode-flymake): Call > the 'report-fn' callback outside the 'while' loop. This change > ensures that Flymake receives an empty list of diagnostics and > clears old highlights when the YAML file has no linting errors. > --- > lisp/textmodes/yaml-ts-mode.el | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lisp/textmodes/yaml-ts-mode.el b/lisp/textmodes/yaml-ts-mode.el > index 95fd4b6a78a..a356027c271 100644 > --- a/lisp/textmodes/yaml-ts-mode.el > +++ b/lisp/textmodes/yaml-ts-mode.el > @@ -247,12 +247,12 @@ yaml-ts-mode-flymake > (type (if (string= "[warning]" (match-string 3)) > :warning > :error))) > (push (flymake-make-diagnostic > source beg end type msg) > - diags)) > - (funcall report-fn diags)))) > + diags))) > + (funcall report-fn diags))) > (flymake-log :warning "Canceling obsolete check %s" proc)) > (kill-buffer (process-buffer proc))))))) > (process-send-region yaml-ts-mode--flymake-process (point-min) (point-max)) > (process-send-eof yaml-ts-mode--flymake-process))))) > > -- > 2.54.0 >