From: Dmitry Gutov <dgutov@yandex.ru>
To: "João Távora" <joaotavora@gmail.com>
Cc: Mark Oteiza <mvoteiza@udel.edu>,
Lele Gaifax <lele@metapensiero.it>,
Stefan Monnier <monnier@iro.umontreal.ca>,
emacs-devel@gnu.org
Subject: Re: Three Flymake backends Was Re: Two issues with the new Flymake
Date: Mon, 6 Nov 2017 01:56:22 +0200 [thread overview]
Message-ID: <dd137d9f-6aa8-fa0e-cddf-62563d1e1cb9@yandex.ru> (raw)
In-Reply-To: <87k1z4qvv5.fsf@gmail.com>
On 11/5/17 11:05 PM, João Távora wrote:
> FWIW I installed it and quickly hacked up this. It's the same
> boilerplate again, with the tiny exception that rubocop needs the file
> to be also saved for some reason (pure stdin doesn't work for some
> reason).
Thanks. Is there a place in the code where you are saving the file? I
don't see it.
The backend seems to work fine for me in this regard, but that might be
dependent on the version, see
https://github.com/bbatsov/rubocop/issues/2576.
That aside, it seems like it didn't pick up the project configuration
file. Here's what worked for me:
(defvar-local rubocop--flymake-proc nil)
(defvar rubocop-config-file ".rubocop.yml")
(defun rubocop-flymake (report-fn &rest _args)
"Rubocop backend"
(unless (executable-find "rubocop")
(error "Cannot find a suitable checker"))
(when (process-live-p rubocop--flymake-proc)
(kill-process rubocop--flymake-proc))
(let ((source (current-buffer))
(command (list "rubocop" "--stdin" buffer-file-name "--format"
"emacs"))
config-dir)
(when buffer-file-name
(setq config-dir (locate-dominating-file buffer-file-name
rubocop-config-file))
(when config-dir
(setq command (append command (list "--config"
(expand-file-name rubocop-config-file
config-dir)))))
(save-restriction
(widen)
(setq
rubocop--flymake-proc
(make-process
:name "rubocop-flymake" :noquery t :connection-type 'pipe
:buffer (generate-new-buffer " *rubocop-flymake*")
:command command
:sentinel
(lambda (proc _event)
(when (eq 'exit (process-status proc))
(unwind-protect
(if (with-current-buffer source (eq proc
rubocop--flymake-proc))
(with-current-buffer (process-buffer proc)
(goto-char (point-min))
(cl-loop
while (search-forward-regexp
"^\\(?:.*.rb\\|-\\):\\([0-9]+\\):\\([0-9]+\\): \\(.*\\)$"
nil t)
for msg = (match-string 3)
for (beg . end) = (flymake-diag-region
source
(string-to-number
(match-string 1))
(string-to-number
(match-string 2)))
for type = (if (string-match "^E: " msg)
:error
:note)
collect (flymake-make-diagnostic source
beg
end
type
msg)
into diags
finally (funcall report-fn diags)))
(flymake-log :debug "Canceling obsolete check %s"
proc))
(kill-buffer (process-buffer proc)))))))
(process-send-region rubocop--flymake-proc (point-min) (point-max))
(process-send-eof rubocop--flymake-proc)))))
next prev parent reply other threads:[~2017-11-05 23:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-03 9:50 Two issues with the new Flymake Lele Gaifax
2017-11-03 12:33 ` Stefan Monnier
2017-11-03 14:07 ` Lele Gaifax
2017-11-03 16:59 ` João Távora
2017-11-03 17:15 ` Stefan Monnier
2017-11-03 20:17 ` Three Flymake backends Was " João Távora
2017-11-04 15:30 ` Stefan Monnier
2017-11-04 23:17 ` João Távora
2017-11-05 12:50 ` Dmitry Gutov
2017-11-05 12:59 ` João Távora
2017-11-05 13:04 ` Dmitry Gutov
2017-11-05 13:22 ` João Távora
2017-11-05 20:14 ` Dmitry Gutov
2017-11-05 21:05 ` João Távora
2017-11-05 23:56 ` Dmitry Gutov [this message]
2017-11-06 9:48 ` João Távora
2017-11-06 10:35 ` Dmitry Gutov
2017-11-06 11:08 ` João Távora
2017-11-13 0:23 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dd137d9f-6aa8-fa0e-cddf-62563d1e1cb9@yandex.ru \
--to=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=joaotavora@gmail.com \
--cc=lele@metapensiero.it \
--cc=monnier@iro.umontreal.ca \
--cc=mvoteiza@udel.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.