diff options
Diffstat (limited to 'support/texlab/src/parser/build_log.rs')
-rw-r--r-- | support/texlab/src/parser/build_log.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/support/texlab/src/parser/build_log.rs b/support/texlab/src/parser/build_log.rs index 5f99129cdb..1e5eca26f8 100644 --- a/support/texlab/src/parser/build_log.rs +++ b/support/texlab/src/parser/build_log.rs @@ -17,8 +17,9 @@ static TEX_ERROR_REGEX: Lazy<Regex> = Lazy::new(|| { Regex::new("(?m)^! ((?P<msg1>(.|\r|\n)*?)\r?\nl\\.(?P<line>\\d+)( (\\.\\.\\.)?(?P<hint>[^\r\n]+))?|(?P<msg2>[^\r\n]*))").unwrap() }); -static WARNING_REGEX: Lazy<Regex> = - Lazy::new(|| Regex::new("(LaTeX|Package [a-zA-Z_\\-]+) Warning: (?P<msg>[^\r\n]*)").unwrap()); +static WARNING_REGEX: Lazy<Regex> = Lazy::new(|| { + Regex::new("(?P<msg>(LaTeX|Package [a-zA-Z_\\-]+) Warning: [^\r\n]*?(on input line (?P<line>\\d+))?\\.)[\r\n]").unwrap() +}); static BAD_BOX_REGEX: Lazy<Regex> = Lazy::new(|| { Regex::new("(?P<msg>(Ov|Und)erfull \\\\[hv]box[^\r\n]*lines? (?P<line>\\d+)[^\r\n]*)").unwrap() @@ -104,8 +105,11 @@ fn prepare_log(log: &str) -> String { } else if line.chars().count() == MAX_LINE_LENGTH { let mut new_line = String::new(); new_line.push_str(line); - if let Some(old_line) = old_lines.next() { - new_line.push_str(old_line); + while let Some(old_line) = old_lines.next() { + new_line.push_str(old_line); + if old_line.chars().count() != MAX_LINE_LENGTH { + break; + } } new_lines.push(new_line); } else { |