diff options
author | João Távora <joaotavora@gmail.com> | 2017-08-23 02:23:41 +0100 |
---|---|---|
committer | João Távora <joaotavora@gmail.com> | 2017-10-03 13:49:04 +0100 |
commit | 6954270e87e3a9f829cd6e8c89febc2c0bc48845 (patch) | |
tree | f7290886640c847781e3fe7fb947f47015e9e373 /lisp/emacs-lisp/syntax.el | |
parent | f1601bef93a23ecd5092d9360a48e2288d835886 (diff) | |
download | emacs-6954270e87e3a9f829cd6e8c89febc2c0bc48845.tar.gz emacs-6954270e87e3a9f829cd6e8c89febc2c0bc48845.tar.bz2 emacs-6954270e87e3a9f829cd6e8c89febc2c0bc48845.zip |
Completely rewrite Flymake's subprocess output processing
Instead of parsing and matching regexps line-by-line, insert
subprocess output in a separate buffer and parse using
`search-forward-regexp'. This eventually enables multi-line error
patterns and simplifies code all around. Store per-check information
in the subprocess using `process-get' and `process-put'. Treat error
messages, warnings, etc. more generically as "diagnostics". Create
these objects as soon as possible, reusing existing `flymake-ler'
structure. Fix some whitespace.
* lisp/progmodes/flymake.el (cl-lib): Require also when
loading.
(flymake--fix-line-numbers): Rename from
flymake-fix-line-numbers. Simplify.
(flymake-report): Call flymake--fix-line-numbers. Rearrange
plain diagnostics list into alist format expected by
flymake-highlight-err-lines.
* lisp/progmodes/flymake-proc.el (flymake-process-filter): Insert
process output and parse in dedicated output buffer.
(flymake-proc--diagnostics-for-pattern): New helper function.
(flymake-process-sentinel): Call flymake-post-syntax-check with
collected diagnostics. Kill output buffer.
(flymake-post-syntax-check): Receive diagnostics as third argument.
(flymake-parse-output-and-residual, flymake-new-err-info)
(flymake-parse-residual, flymake-parse-err-lines)
(flymake-split-output, flymake-proc-parse-line)
(flymake-output-residual): Delete.
(flymake-start-syntax-check-process): Use make-process. Setup
dedicated an output buffer
Diffstat (limited to 'lisp/emacs-lisp/syntax.el')
0 files changed, 0 insertions, 0 deletions