diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e0abc18..a2819429 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ - Syntax highlighting for Python files using uv as script runner in shebang #3689 (@janlarres) ## Bugfixes +- Avoid repeated scans of long lines in Log syntax highlighting, see #3876 (@Matei02355) - Fix `--list-languages` respecting `--paging=never`, see #3828 (@cyphercodes) - Fix `--sanitize` passing through the bidi control characters U+200E, U+200F and U+061C, see #3862 (@lenamonj) - `--strip-ansi`: also strip 8-bit C1 introducers (U+0090, U+0098, U+009B, U+009D, U+009E, U+009F) and DCS/SOS/PM/APC sequence bodies, which previously passed through. See #3729 (@curious-rabbit) diff --git a/assets/syntaxes/02_Extra/log.sublime-syntax b/assets/syntaxes/02_Extra/log.sublime-syntax index 0ce01f10..329da39d 100644 --- a/assets/syntaxes/02_Extra/log.sublime-syntax +++ b/assets/syntaxes/02_Extra/log.sublime-syntax @@ -38,22 +38,41 @@ contexts: scope: markup.underline.link.scheme.log push: url-host log_level_lines: - - match: (?=.*{{error}}) + # Prevent retrying each lookahead at every position. + - match: ^(?=.*{{error}}) push: - error_line_meta - main_pop_at_eol - - match: (?=.*{{warning}}) + - match: ^(?=.*{{warning}}) push: - warning_line_meta - main_pop_at_eol - - match: (?=.*{{info}}) + - match: ^(?=.*{{info}}) push: - info_line_meta - main_pop_at_eol - - match: (?=.*{{debug}}) + - match: ^(?=.*{{debug}}) push: - debug_line_meta - main_pop_at_eol + # For syntaxes that embed Log after consuming a prefix. Call this context once. + log_level_lines_at_current_position: + - match: (?=.*{{error}}) + set: + - error_line_meta + - main_pop_at_eol + - match: (?=.*{{warning}}) + set: + - warning_line_meta + - main_pop_at_eol + - match: (?=.*{{info}}) + set: + - info_line_meta + - main_pop_at_eol + - match: (?=.*{{debug}}) + set: + - debug_line_meta + - main_pop_at_eol log_levels: - match: '{{error}}' scope: markup.error.log diff --git a/assets/syntaxes/02_Extra/syslog.sublime-syntax b/assets/syntaxes/02_Extra/syslog.sublime-syntax index 01ed58db..7cc9580b 100644 --- a/assets/syntaxes/02_Extra/syslog.sublime-syntax +++ b/assets/syntaxes/02_Extra/syslog.sublime-syntax @@ -50,6 +50,17 @@ contexts: - match: (?=\]) pop: true text: + - include: text_special + - match: '' + set: classify_log_text + classify_log_text: + - include: scope:text.log#log_level_lines_at_current_position + - match: '' + set: text_body + text_body: + - include: text_special + - include: scope:text.log + text_special: - match: $ pop: true - match: '<\w+>' @@ -62,4 +73,3 @@ contexts: escape: \)$ escape_captures: 0: punctuation.section.block.end.syslog - - include: scope:text.log