From db69aab106ed01d78c788f5961daed1888e91a24 Mon Sep 17 00:00:00 2001 From: Matei6942 Date: Sun, 2 Aug 2026 10:52:05 +0300 Subject: [PATCH 1/4] fix(syntax): avoid repeated log level scans --- assets/syntaxes/02_Extra/log.sublime-syntax | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/assets/syntaxes/02_Extra/log.sublime-syntax b/assets/syntaxes/02_Extra/log.sublime-syntax index 0ce01f10..acd14216 100644 --- a/assets/syntaxes/02_Extra/log.sublime-syntax +++ b/assets/syntaxes/02_Extra/log.sublime-syntax @@ -38,19 +38,20 @@ contexts: scope: markup.underline.link.scheme.log push: url-host log_level_lines: - - match: (?=.*{{error}}) + # Prevent retrying each lookahead at every position. + - match: \G(?=.*{{error}}) push: - error_line_meta - main_pop_at_eol - - match: (?=.*{{warning}}) + - match: \G(?=.*{{warning}}) push: - warning_line_meta - main_pop_at_eol - - match: (?=.*{{info}}) + - match: \G(?=.*{{info}}) push: - info_line_meta - main_pop_at_eol - - match: (?=.*{{debug}}) + - match: \G(?=.*{{debug}}) push: - debug_line_meta - main_pop_at_eol From 531d54b110d9b2311ab852e728ad1448d808ae03 Mon Sep 17 00:00:00 2001 From: Matei6942 Date: Sun, 2 Aug 2026 10:52:39 +0300 Subject: [PATCH 2/4] docs: add changelog entry for #3876 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) 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) From 3ca4a01be6bef5ba7c32c4cacc285e60bf66426e Mon Sep 17 00:00:00 2001 From: Matei6942 Date: Mon, 10 Aug 2026 20:00:44 +0300 Subject: [PATCH 3/4] fix(syntax): use start-of-line anchor for log levels --- assets/syntaxes/02_Extra/log.sublime-syntax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/syntaxes/02_Extra/log.sublime-syntax b/assets/syntaxes/02_Extra/log.sublime-syntax index acd14216..5a4a0e06 100644 --- a/assets/syntaxes/02_Extra/log.sublime-syntax +++ b/assets/syntaxes/02_Extra/log.sublime-syntax @@ -39,19 +39,19 @@ contexts: push: url-host log_level_lines: # Prevent retrying each lookahead at every position. - - match: \G(?=.*{{error}}) + - match: ^(?=.*{{error}}) push: - error_line_meta - main_pop_at_eol - - match: \G(?=.*{{warning}}) + - match: ^(?=.*{{warning}}) push: - warning_line_meta - main_pop_at_eol - - match: \G(?=.*{{info}}) + - match: ^(?=.*{{info}}) push: - info_line_meta - main_pop_at_eol - - match: \G(?=.*{{debug}}) + - match: ^(?=.*{{debug}}) push: - debug_line_meta - main_pop_at_eol From cecbb80093a42690f8f432c37b5c279af2214615 Mon Sep 17 00:00:00 2001 From: Matei6942 Date: Mon, 10 Aug 2026 20:56:35 +0300 Subject: [PATCH 4/4] fix(syntax): preserve log-level scopes in Syslog --- assets/syntaxes/02_Extra/log.sublime-syntax | 18 ++++++++++++++++++ assets/syntaxes/02_Extra/syslog.sublime-syntax | 12 +++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/assets/syntaxes/02_Extra/log.sublime-syntax b/assets/syntaxes/02_Extra/log.sublime-syntax index 5a4a0e06..329da39d 100644 --- a/assets/syntaxes/02_Extra/log.sublime-syntax +++ b/assets/syntaxes/02_Extra/log.sublime-syntax @@ -55,6 +55,24 @@ contexts: 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