From ace1573dfe02fa5969692af545993ccf9475ccaf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Tue, 10 Aug 2021 20:28:35 +0100 Subject: [PATCH] Let eglot-flymake-backend be in flymake-d-functions even if eglot off This is useful when using eglot-stay-out-of and a pattern like: (defun my/js-mode-hook () (add-hook 'flymake-diagnostic-functions 'some-eslint-backend nil t)) (setq-local eglot-stay-out-of '(flymake)) (add-hook 'flymake-diagnostic-functions 'eglot-flymake-backend nil t)) (add-hook 'js-mode-hook 'my/js-mode-hook) Then, _both_ backends will run unconditionally, but Eglot backend only actually reports diagnostics if Eglot is on. * eglot.el (eglot-flymake-backend): If buffer isn't being managed by Eglot, behave as a noop. --- lisp/progmodes/eglot.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 0f367fd2208..71f7d7ea597 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -2089,10 +2089,13 @@ Calls REPORT-FN (or arranges for it to be called) when the server publishes diagnostics. Between calls to this function, REPORT-FN may be called multiple times (respecting the protocol of `flymake-backend-functions')." - (setq eglot--current-flymake-report-fn report-fn) - ;; Report anything unreported - (when eglot--unreported-diagnostics - (eglot--report-to-flymake (cdr eglot--unreported-diagnostics)))) + (cond (eglot--managed-mode + (setq eglot--current-flymake-report-fn report-fn) + ;; Report anything unreported + (when eglot--unreported-diagnostics + (eglot--report-to-flymake (cdr eglot--unreported-diagnostics)))) + (t + (funcall report-fn nil)))) (defun eglot--report-to-flymake (diags) "Internal helper for `eglot-flymake-backend'." -- 2.39.2