summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Peter <sharkdp@users.noreply.github.com>2021-05-12 22:22:50 +0200
committerGitHub <noreply@github.com>2021-05-12 22:22:50 +0200
commit2904f24ea803ce3fd51cb4080949c8d53e14d06e (patch)
tree37a700738e2922bf284dab525b7a252c48080228
parent91a347bf6d549ba543f1b4bfdc2a05f269c975c8 (diff)
parent5db3c930576a8aa4705843dd512303059fc98771 (diff)
Merge pull request #1606 from sharkdp/syslog
Improve Syslog and general log file highlighting
-rw-r--r--.gitmodules4
-rw-r--r--CHANGELOG.md1
-rw-r--r--assets/patches/Monokai-Extended.tmTheme.patch18
m---------assets/syntaxes/02_Extra/Syslog0
-rw-r--r--assets/syntaxes/02_Extra/log.sublime-syntax116
-rw-r--r--assets/syntaxes/02_Extra/syslog.sublime-syntax63
-rw-r--r--tests/syntax-tests/highlighted/Log/example.log2
-rw-r--r--tests/syntax-tests/highlighted/Syslog/example.syslog11
-rw-r--r--tests/syntax-tests/source/Log/example.log2
-rw-r--r--tests/syntax-tests/source/Syslog/example.syslog11
10 files changed, 224 insertions, 4 deletions
diff --git a/.gitmodules b/.gitmodules
index db5c1b5d..4494055b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -94,10 +94,6 @@
[submodule "assets/syntaxes/Assembly (ARM)"]
path = assets/syntaxes/02_Extra/Assembly (ARM)
url = https://github.com/tvi/Sublime-ARM-Assembly
-[submodule "assets/syntaxes/syslog-syntax"]
- path = assets/syntaxes/02_Extra/Syslog
- url = https://github.com/caos21/syslog-syntax.git
- branch = master
[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
path = assets/syntaxes/02_Extra/Protobuf
url = https://github.com/VcamX/protobuf-syntax-highlighting.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d3341148..617f19b6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@
## Syntaxes
+- Improved the Syslog syntax highlighting, see #1606 (@keith-hall)
- Replaced "Advanced CSV" with a custom CSV syntax definition written especially for `bat`; see #1574 (@keith-hall)
## New themes
diff --git a/assets/patches/Monokai-Extended.tmTheme.patch b/assets/patches/Monokai-Extended.tmTheme.patch
index 16624d5f..106b584d 100644
--- a/assets/patches/Monokai-Extended.tmTheme.patch
+++ b/assets/patches/Monokai-Extended.tmTheme.patch
@@ -16,3 +16,21 @@ index 9c2aa3e..180cbbf 100644
</dict>
</dict>
<dict>
+@@ -1027,7 +1027,7 @@
+ <key>name</key>
+ <string>Invalid</string>
+ <key>scope</key>
+- <string>invalid</string>
++ <string>invalid, markup.error</string>
+ <key>settings</key>
+ <dict>
+ <key>background</key>
+@@ -1042,7 +1042,7 @@
+ <key>name</key>
+ <string>Invalid deprecated</string>
+ <key>scope</key>
+- <string>invalid.deprecated</string>
++ <string>invalid.deprecated, markup.warning</string>
+ <key>settings</key>
+ <dict>
+ <key>background</key>
diff --git a/assets/syntaxes/02_Extra/Syslog b/assets/syntaxes/02_Extra/Syslog
deleted file mode 160000
-Subproject 7628d4e0b89d3b4f0dcc014bfb4a3e3433f5133
diff --git a/assets/syntaxes/02_Extra/log.sublime-syntax b/assets/syntaxes/02_Extra/log.sublime-syntax
new file mode 100644
index 00000000..3c699d2e
--- /dev/null
+++ b/assets/syntaxes/02_Extra/log.sublime-syntax
@@ -0,0 +1,116 @@
+%YAML 1.2
+---
+# See http://www.sublimetext.com/docs/3/syntax.html
+file_extensions:
+ - log
+scope: text.log
+variables:
+ ipv4_part: (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
+contexts:
+ main:
+ - match: (\w+)(=)
+ captures:
+ 1: variable.parameter.log
+ 2: keyword.operator.assignment.log
+ - match: (')([^']*)(')
+ scope: string.quoted.single.log
+ captures:
+ 1: punctuation.definition.string.begin.log
+ 3: punctuation.definition.string.end.log
+ - match: (")([^"]*)(")
+ scope: string.quoted.double.log
+ captures:
+ 1: punctuation.definition.string.begin.log
+ 3: punctuation.definition.string.end.log
+ - include: dates
+ - include: ip_addresses
+ - include: numbers
+ - match: \b(?i:fail(?:ure|ed)?|error|exception)\b
+ scope: markup.error.log
+ - match: \b(?i:warn(?:ing)?)\b
+ scope: markup.warning.log
+ #- include: scope:text.html.markdown#autolink-inet
+ - match: \b\w+:/{2,3}
+ scope: markup.underline.link.scheme.log
+ push: url-host
+ dates:
+ - match: \b\d{4}-\d{2}-\d{2}\b
+ scope: meta.date.log meta.number.integer.decimal.log constant.numeric.value.log
+ - match: \b\d{4}/\d{2}/\d{2}\b
+ scope: meta.date.log meta.number.integer.decimal.log constant.numeric.value.log
+ - match: \b(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)(?:(\.)\d{3})?\b
+ scope: meta.time.log meta.number.integer.decimal.log constant.numeric.value.log
+ captures:
+ 1: punctuation.separator.decimal.log
+ ip_addresses:
+ - match: \b(?=(?:{{ipv4_part}}\.){3}{{ipv4_part}}\b)
+ push:
+ - meta_scope: meta.ipaddress.v4.log meta.number.integer.decimal.log
+ - match: \d+
+ scope: constant.numeric.value.log
+ - match: \.
+ scope: punctuation.separator.sequence.log
+ - match: ''
+ pop: true
+ - match: (?=(?:\h{0,4}:){2,6}\h{1,4}\b)
+ push:
+ - meta_scope: meta.ipaddress.v6.log meta.number.integer.hexadecimal.log
+ - match: \h{1,4}
+ scope: constant.numeric.value.log
+ - match: ':'
+ scope: punctuation.separator.sequence.log
+ - match: ''
+ pop: true
+ numbers:
+ - match: \b(0x)(\h+)(?:(\.)(\h+))?\b
+ scope: meta.number.float.hexadecimal.log
+ captures:
+ 1: constant.numeric.base.log
+ 2: constant.numeric.value.log
+ 3: constant.numeric.value.log punctuation.separator.decimal.log
+ 4: constant.numeric.value.log
+ - match: \b\d+(\.)\d+\b
+ scope: meta.number.float.log constant.numeric.value.log
+ captures:
+ 1: punctuation.separator.decimal.log
+ - match: \b\d+\b
+ scope: meta.number.integer.log constant.numeric.value.log
+ url-host:
+ - meta_content_scope: markup.underline.link.host.log
+ - match: \[
+ scope: punctuation.section.brackets.begin.log
+ push:
+ - match: \]
+ scope: punctuation.section.brackets.end.log
+ pop: true
+ - include: ip_addresses
+ - match: '[^:/\s]+'
+ - match: ''
+ set: url-after-host
+ url-after-host:
+ - match: (:)(\d+)
+ scope: markup.underline.link.port.log
+ captures:
+ 1: punctuation.separator.mapping.port.log
+ 2: constant.numeric.value.log
+ #- include: scope:text.html.markdown#url-escaped-chars
+ - match: (%)\h{2}
+ scope: markup.underline.link.path.log constant.character.escape.url.log
+ captures:
+ 1: punctuation.definition.escape.log
+ # After a valid domain, zero or more non-space non-< characters may follow
+ - match: (?=[?!.,:*_~]*[\s<]) # Trailing punctuation (specifically, ?, !, ., ,, :, *, _, and ~) will not be considered part of the autolink, though they may be included in the interior of the link
+ pop: true
+ - match: \( # When an autolink ends in ), we scan the entire autolink for the total number of parentheses. If there is a greater number of closing parentheses than opening ones, we don’t consider the last character part of the autolink, in order to facilitate including an autolink inside a parenthesis
+ push:
+ - meta_scope: markup.underline.link.path.log
+ - match: (?=[?!.,:*_~]*[\s<])
+ pop: true
+ - match: \)
+ pop: true
+ - match: (?=\)[?!.,:*_~]*[\s<])
+ pop: true
+ - match: '[^?!.,:*_~\s<&()%]+|\S'
+ scope: markup.underline.link.path.log
+ - match: ''
+ pop: true
diff --git a/assets/syntaxes/02_Extra/syslog.sublime-syntax b/assets/syntaxes/02_Extra/syslog.sublime-syntax
new file mode 100644
index 00000000..ce782e50
--- /dev/null
+++ b/assets/syntaxes/02_Extra/syslog.sublime-syntax
@@ -0,0 +1,63 @@
+%YAML 1.2
+---
+# http://www.sublimetext.com/docs/3/syntax.html
+name: syslog
+file_extensions:
+ - syslog
+scope: text.log.syslog
+contexts:
+ main:
+ - match: ^(\w+\s+\d+)\s+(\d{2}:\d{2}:\d{2})
+ scope: meta.datetime.syslog constant.numeric.syslog
+ captures:
+ 1: meta.date.syslog
+ 2: meta.time.syslog
+ push: loghost
+ - match: ^
+ push: text
+ loghost:
+ - match: '[\w-]+'
+ scope: entity.other.attribute-name.loghost.syslog
+ set: process
+ process:
+ - match: ([\w-]+)(?:(\[)(\d+)(\]))?(:)
+ captures:
+ 1: support.function.process.syslog
+ 2: punctuation.separator.pid.begin.syslog
+ 3: meta.pid.syslog meta.number.integer.syslog constant.numeric.value.syslog
+ 4: punctuation.separator.pid.end.syslog
+ 5: punctuation.separator.mapping.syslog
+ set: structured-data
+ structured-data:
+ - match: '\['
+ scope: punctuation.section.mapping.begin.syslog
+ push:
+ - match: \]
+ scope: punctuation.section.mapping.end.syslog
+ pop: true
+ - match: \w+
+ scope: variable.parameter.syslog
+ - match: =
+ scope: keyword.operator.assignment.syslog
+ push:
+ - match: '[^\s\]]+'
+ scope: constant.other.syslog
+ pop: true
+ - match: (?=\])
+ pop: true
+ - match: (?=\S)
+ set: text
+ text:
+ - match: $
+ pop: true
+ - match: '<\w+>'
+ scope: constant.language.syslog
+ - match: \b(CMD)\b\s+(\()
+ captures:
+ 1: entity.name.label.syslog
+ 2: punctuation.section.block.begin.syslog
+ embed: scope:source.shell.bash
+ escape: \)$
+ escape_captures:
+ 0: punctuation.section.block.end.syslog
+ - include: scope:text.log
diff --git a/tests/syntax-tests/highlighted/Log/example.log b/tests/syntax-tests/highlighted/Log/example.log
new file mode 100644
index 00000000..8387670c
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Log/example.log
@@ -0,0 +1,2 @@
+2021-03-06 23:22:21.392 https://[2001:db8:4006:812::200e]:8080/path/the%20page.html
+2021-03-06 23:22:21 https://example.com:8080/path/the%20page(with_parens).html
diff --git a/tests/syntax-tests/highlighted/Syslog/example.syslog b/tests/syntax-tests/highlighted/Syslog/example.syslog
new file mode 100644
index 00000000..35002a83
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Syslog/example.syslog
@@ -0,0 +1,11 @@
+Apr 4 00:00:01 hostname-here systemd[1]: logrotate.service: Succeeded.
+Apr 4 00:00:01 hostname-here systemd[1]: Finished Rotate log files.
+Apr 4 00:00:01 hostname-here colord[920]: failed to get session [pid 137485]: No data available
+Apr 4 00:00:21 hostname-here kernel: [55604.908232] audit: type=1400 audit(1617483621.094:28): apparmor="DENIED" operation="capable" profile="/usr/sbin/cups-browsed" pid=59311 comm="cups-browsed" capability=23 capname="sys_nice"
+Apr 4 00:01:38 hostname-here systemd-resolved[721]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
+Apr 4 00:04:46 hostname-here ntpd[952]: Soliciting pool server 255.76.59.37
+Apr 4 00:05:21 hostname-here ntpd[952]: ::1 local addr 0:0:0:0:0:0:0:1 -> <null>
+Apr 4 00:06:29 hostname-here ntpd[952]: receive: Unexpected origin timestamp 0xe414a8d1.82e825f5 does not match aorg 0xe414a8d5.82c50d8c from server@127.0.0.1 xmt 0xe414a8d1.e671d7c4
+Apr 4 09:30:01 hostname-here CRON[89278]: (root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)
+Apr 4 16:32:07 hostname-here NetworkManager[740]: <info> [1617629527.1101] manager: NetworkManager state is now CONNECTED_GLOBAL
+Apr 4 22:00:45 hostname-here dbus-daemon[1094]: [session uid=1000 pid=1094] Successfully activated service 'io.github.celluloid_player.Celluloid'
diff --git a/tests/syntax-tests/source/Log/example.log b/tests/syntax-tests/source/Log/example.log
new file mode 100644
index 00000000..35eb1c78
--- /dev/null
+++ b/tests/syntax-tests/source/Log/example.log
@@ -0,0 +1,2 @@
+2021-03-06 23:22:21.392 https://[2001:db8:4006:812::200e]:8080/path/the%20page.html
+2021-03-06 23:22:21 https://example.com:8080/path/the%20page(with_parens).html
diff --git a/tests/syntax-tests/source/Syslog/example.syslog b/tests/syntax-tests/source/Syslog/example.syslog
new file mode 100644
index 00000000..337f1434
--- /dev/null
+++ b/tests/syntax-tests/source/Syslog/example.syslog
@@ -0,0 +1,11 @@
+Apr 4 00:00:01 hostname-here systemd[1]: logrotate.service: Succeeded.
+Apr 4 00:00:01 hostname-here systemd[1]: Finished Rotate log files.
+Apr 4 00:00:01 hostname-here colord[920]: failed to get session [pid 137485]: No data available
+Apr 4 00:00:21 hostname-here kernel: [55604.908232] audit: type=1400 audit(1617483621.094:28): apparmor="DENIED" operation="capable" profile="/usr/sbin/cups-browsed" pid=59311 comm="cups-browsed" capability=23 capname="sys_nice"
+Apr 4 00:01:38 hostname-here systemd-resolved[721]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
+Apr 4 00:04:46 hostname-here ntpd[952]: Soliciting pool server 255.76.59.37
+Apr 4 00:05:21 hostname-here ntpd[952]: ::1 local addr 0:0:0:0:0:0:0:1 -> <null>
+Apr 4 00:06:29 hostname-here ntpd[952]: receive: Unexpected origin timestamp 0xe414a8d1.82e825f5 does not match aorg 0xe414a8d5.82c50d8c from server@127.0.0.1 xmt 0xe414a8d1.e671d7c4
+Apr 4 09:30:01 hostname-here CRON[89278]: (root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)
+Apr 4 16:32:07 hostname-here NetworkManager[740]: <info> [1617629527.1101] manager: NetworkManager state is now CONNECTED_GLOBAL
+Apr 4 22:00:45 hostname-here dbus-daemon[1094]: [session uid=1000 pid=1094] Successfully activated service 'io.github.celluloid_player.Celluloid'