Make three new Flymake commands for debugging common problems

* lisp/progmodes/flymake.el (flymake-running-backends)
(flymake-disabled-backends)
(flymake-reporting-backends): Make interactive.
(flymake--collect): Take optional arg.
This commit is contained in:
João Távora 2017-10-09 21:33:09 +01:00
parent c9be9a3678
commit 21e7075781

View file

@ -622,24 +622,42 @@ different runs of the same backend."
(with-current-buffer buffer (with-current-buffer buffer
(apply #'flymake--handle-report backend token args)))))) (apply #'flymake--handle-report backend token args))))))
(defun flymake--collect (fn) (defun flymake--collect (fn &optional message-prefix)
"Collect Flymake backends matching FN.
If MESSAGE-PREFIX, echo a message using that prefix"
(unless flymake--backend-state
(user-error "Flymake is not initialized"))
(let (retval) (let (retval)
(maphash (lambda (backend state) (maphash (lambda (backend state)
(when (funcall fn state) (push backend retval))) (when (funcall fn state) (push backend retval)))
flymake--backend-state) flymake--backend-state)
(when message-prefix
(message "%s%s"
message-prefix
(mapconcat (lambda (s) (format "%s" s))
retval ", ")))
retval)) retval))
(defun flymake-running-backends () (defun flymake-running-backends ()
"Compute running Flymake backends in current buffer." "Compute running Flymake backends in current buffer."
(flymake--collect #'flymake--backend-state-running)) (interactive)
(flymake--collect #'flymake--backend-state-running
(and (called-interactively-p 'interactive)
"Running backends: ")))
(defun flymake-disabled-backends () (defun flymake-disabled-backends ()
"Compute disabled Flymake backends in current buffer." "Compute disabled Flymake backends in current buffer."
(flymake--collect #'flymake--backend-state-disabled)) (interactive)
(flymake--collect #'flymake--backend-state-disabled
(and (called-interactively-p 'interactive)
"Disabled backends: ")))
(defun flymake-reporting-backends () (defun flymake-reporting-backends ()
"Compute reporting Flymake backends in current buffer." "Compute reporting Flymake backends in current buffer."
(flymake--collect #'flymake--backend-state-reported-p)) (interactive)
(flymake--collect #'flymake--backend-state-reported-p
(and (called-interactively-p 'interactive)
"Reporting backends: ")))
(defun flymake--disable-backend (backend &optional explanation) (defun flymake--disable-backend (backend &optional explanation)
"Disable BACKEND because EXPLANATION. "Disable BACKEND because EXPLANATION.