on master help sign in
.github/.codecov.ymlnew file+1
since splitsnapshots
unifiedsplit
@@ -0,0 +1 @@
1+comment: false
.github/FUNDING.ymlnew file+1
@@ -0,0 +1 @@
1+github: [sharkdp, keith-hall, Enselic]
.github/ISSUE_TEMPLATE/bug_report.mdnew file+64
@@ -0,0 +1,64 @@
1+---
2+name: Bug Report
3+about: Report a bug.
4+title: ""
5+labels: bug
6+assignees: ''
7+
8+---
9+
10+<!--
11+
12+Hey there, thank you for reporting a bug!
13+
14+Please note that the following bugs have already been reported:
15+
16+* dpkg: error processing archive /some/path/some-program.deb (--unpack):
17+ trying to overwrite '/usr/.crates2.json'
18+
19+ See https://github.com/sharkdp/bat/issues/938
20+
21+-->
22+
23+**What steps will reproduce the bug?**
24+
25+1. step 1
26+2. step 2
27+3. ...
28+
29+**What happens?**
30+
31+...
32+
33+**What did you expect to happen instead?**
34+
35+...
36+
37+
38+**How did you install `bat`?**
39+
40+<!-- apt-get, homebrew, GitHub release, etc. -->
41+
42+---
43+
44+**bat version and environment**
45+
46+<!--
47+In order to reproduce your issue, please add some information about the environment
48+in which you're running bat. To do this, run the full `bat` command that demonstrates
49+the bug, and attach the `--diagnostic` option:
50+
51+ bat [other options and arguments…] --diagnostic
52+
53+Finally, paste the Markdown output here. Please make sure that it does not reveal any
54+personal information.
55+
56+
57+If you are running bat 0.17.1 or older (where --diagnostic is not available), please
58+run the script at
59+
60+ https://github.com/sharkdp/bat/blob/master/diagnostics/info.sh
61+
62+(click "Raw" to get the actual source code) and paste the Markdown output here. If you
63+are on Windows, please let us know your bat version and your Windows version.
64+-->
.github/ISSUE_TEMPLATE/config.ymlnew file+1
@@ -0,0 +1 @@
1+blank_issues_enabled: true
.github/ISSUE_TEMPLATE/feature_request.mdnew file+9
@@ -0,0 +1,9 @@
1+---
2+name: Feature Request
3+about: Suggest an idea for this project.
4+title: ''
5+labels: feature-request
6+assignees: ''
7+
8+---
9+
.github/ISSUE_TEMPLATE/question.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+name: Question
3+about: Ask a question about 'bat'.
4+title: ''
5+labels: question
6+assignees: ''
7+
8+---
9+
10+<!-- Using a normal ticket is still fine, but feel free to ask your
11+questions about bat on https://github.com/sharkdp/bat/discussions instead. -->
.github/ISSUE_TEMPLATE/syntax_request.mdnew file+29
@@ -0,0 +1,29 @@
1+---
2+name: Syntax Request
3+about: Request adding a new syntax to bat.
4+title: ""
5+labels: syntax-request
6+assignees: ''
7+
8+---
9+
10+<!--
11+BEFORE YOU MAKE A REQUEST:
12+
13+Are you looking to add a new syntax to use on one of your devices?
14+Bat supports locally-installed language definitions. See the link below:
15+
16+https://github.com/sharkdp/bat#adding-new-syntaxes--language-definitions
17+
18+If you think adding this syntax would help others as well, please make sure that it meets our
19+guidelines for adding new syntaxes:
20+
21+ - 10,000 downloads on packagecontrol.io
22+-->
23+
24+
25+**Syntax:**
26+[Name or description of the syntax/language here]
27+
28+**Guideline Criteria:**
29+[packagecontro.io link here]
.github/dependabot.ymlnew file+18
@@ -0,0 +1,18 @@
1+version: 2
2+updates:
3+- package-ecosystem: cargo
4+ directory: "/"
5+ schedule:
6+ interval: monthly
7+ time: "04:00"
8+ timezone: Europe/Berlin
9+ ignore:
10+ - dependency-name: git2
11+ versions:
12+ - 0.13.17
13+- package-ecosystem: gitsubmodule
14+ directory: "/"
15+ schedule:
16+ interval: monthly
17+ time: "04:00"
18+ timezone: Europe/Berlin
.github/workflows/CICD.ymlnew file+482
@@ -0,0 +1,482 @@
1+name: CICD
2+
3+env:
4+ MIN_SUPPORTED_RUST_VERSION: "1.51.0"
5+ CICD_INTERMEDIATES_DIR: "_cicd-intermediates"
6+
7+on:
8+ workflow_dispatch:
9+ pull_request:
10+ push:
11+ branches:
12+ - master
13+ tags:
14+ - '*'
15+
16+jobs:
17+ ensure_cargo_fmt:
18+ name: Ensure 'cargo fmt' has been run
19+ runs-on: ubuntu-20.04
20+ steps:
21+ - uses: actions-rs/toolchain@v1
22+ with:
23+ toolchain: stable
24+ default: true
25+ profile: minimal
26+ components: rustfmt
27+ - uses: actions/checkout@v2
28+ - run: cargo fmt -- --check
29+
30+ license_checks:
31+ name: License checks
32+ runs-on: ubuntu-20.04
33+ steps:
34+ - uses: actions/checkout@v2
35+ with:
36+ submodules: true # we especially want to perform license checks on submodules
37+ - run: tests/scripts/license-checks.sh
38+
39+ min_version:
40+ name: Minimum supported rust version
41+ runs-on: ubuntu-20.04
42+ steps:
43+ - name: Checkout source code
44+ uses: actions/checkout@v2
45+
46+ - name: Install rust toolchain (v${{ env.MIN_SUPPORTED_RUST_VERSION }})
47+ uses: actions-rs/toolchain@v1
48+ with:
49+ toolchain: ${{ env.MIN_SUPPORTED_RUST_VERSION }}
50+ default: true
51+ profile: minimal # minimal component installation (ie, no documentation)
52+ components: clippy
53+ - name: Run clippy (on minimum supported rust version to prevent warnings we can't fix)
54+ uses: actions-rs/cargo@v1
55+ with:
56+ command: clippy
57+ args: --locked --all-targets --all-features
58+ - name: Run tests
59+ uses: actions-rs/cargo@v1
60+ with:
61+ command: test
62+ args: --locked
63+
64+ test_with_new_syntaxes_and_themes:
65+ name: Run tests with updated syntaxes and themes
66+ runs-on: ubuntu-20.04
67+ steps:
68+ - name: Git checkout
69+ uses: actions/checkout@v2
70+ with:
71+ submodules: true # we need all syntax and theme submodules
72+ - name: Install Rust toolchain
73+ uses: actions-rs/toolchain@v1
74+ with:
75+ toolchain: stable
76+ default: true
77+ profile: minimal
78+ - name: Build and install bat
79+ uses: actions-rs/cargo@v1
80+ with:
81+ command: install
82+ args: --locked --path .
83+ - name: Rebuild binary assets (syntaxes and themes)
84+ run: bash assets/create.sh
85+ - name: Build and install bat with updated assets
86+ uses: actions-rs/cargo@v1
87+ with:
88+ command: install
89+ args: --locked --path .
90+ - name: Run unit tests with new syntaxes and themes
91+ uses: actions-rs/cargo@v1
92+ with:
93+ command: test
94+ args: --locked --release
95+ - name: Run ignored-by-default unit tests with new syntaxes and themes
96+ uses: actions-rs/cargo@v1
97+ with:
98+ command: test
99+ args: --locked --release -- --ignored
100+ - name: Syntax highlighting regression test
101+ run: tests/syntax-tests/regression_test.sh
102+ - name: List of languages
103+ run: bat --list-languages
104+ - name: List of themes
105+ run: bat --list-themes
106+ - name: Test custom assets
107+ run: tests/syntax-tests/test_custom_assets.sh
108+
109+ documentation:
110+ name: Documentation
111+ runs-on: ubuntu-20.04
112+ steps:
113+ - name: Git checkout
114+ uses: actions/checkout@v2
115+ - name: Install Rust toolchain
116+ uses: actions-rs/toolchain@v1
117+ with:
118+ toolchain: stable
119+ default: true
120+ profile: minimal
121+ - name: Print -h
122+ uses: actions-rs/cargo@v1
123+ with:
124+ command: run
125+ args: --locked -- -h
126+ - name: Print --help
127+ uses: actions-rs/cargo@v1
128+ with:
129+ command: run
130+ args: --locked -- --help
131+ - name: Show man page
132+ run: man $(find . -name bat.1)
133+ - name: Check documentation
134+ env:
135+ RUSTDOCFLAGS: -D warnings
136+ uses: actions-rs/cargo@v1
137+ with:
138+ command: doc
139+ args: --locked --no-deps --document-private-items --all-features
140+
141+ build:
142+ name: ${{ matrix.job.target }} (${{ matrix.job.os }})
143+ runs-on: ${{ matrix.job.os }}
144+ strategy:
145+ fail-fast: false
146+ matrix:
147+ job:
148+ - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
149+ - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
150+ - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
151+ - { target: i686-pc-windows-msvc , os: windows-2019 }
152+ - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
153+ - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
154+ - { target: x86_64-apple-darwin , os: macos-10.15 }
155+ - { target: x86_64-pc-windows-gnu , os: windows-2019 }
156+ - { target: x86_64-pc-windows-msvc , os: windows-2019 }
157+ - { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
158+ - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
159+ steps:
160+ - name: Checkout source code
161+ uses: actions/checkout@v2
162+
163+ - name: Install prerequisites
164+ shell: bash
165+ run: |
166+ case ${{ matrix.job.target }} in
167+ arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
168+ aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
169+ esac
170+
171+ - name: Extract crate information
172+ shell: bash
173+ run: |
174+ echo "PROJECT_NAME=$(sed -n 's/^name = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
175+ echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
176+ echo "PROJECT_MAINTAINER=$(sed -n 's/^authors = \["\(.*\)"\]/\1/p' Cargo.toml)" >> $GITHUB_ENV
177+ echo "PROJECT_HOMEPAGE=$(sed -n 's/^homepage = "\(.*\)"/\1/p' Cargo.toml)" >> $GITHUB_ENV
178+
179+ - name: Install Rust toolchain
180+ uses: actions-rs/toolchain@v1
181+ with:
182+ toolchain: stable
183+ target: ${{ matrix.job.target }}
184+ override: true
185+ profile: minimal # minimal component installation (ie, no documentation)
186+
187+ - name: Show version information (Rust, cargo, GCC)
188+ shell: bash
189+ run: |
190+ gcc --version || true
191+ rustup -V
192+ rustup toolchain list
193+ rustup default
194+ cargo -V
195+ rustc -V
196+
197+ - name: Build
198+ uses: actions-rs/cargo@v1
199+ with:
200+ use-cross: ${{ matrix.job.use-cross }}
201+ command: build
202+ args: --locked --release --target=${{ matrix.job.target }}
203+
204+ - name: Strip debug information from executable
205+ id: strip
206+ shell: bash
207+ run: |
208+ # Figure out suffix of binary
209+ EXE_suffix=""
210+ case ${{ matrix.job.target }} in
211+ *-pc-windows-*) EXE_suffix=".exe" ;;
212+ esac;
213+
214+ # Figure out what strip tool to use if any
215+ STRIP="strip"
216+ case ${{ matrix.job.target }} in
217+ arm-unknown-linux-*) STRIP="arm-linux-gnueabihf-strip" ;;
218+ aarch64-unknown-linux-gnu) STRIP="aarch64-linux-gnu-strip" ;;
219+ *-pc-windows-msvc) STRIP="" ;;
220+ esac;
221+
222+ # Setup paths
223+ BIN_DIR="${{ env.CICD_INTERMEDIATES_DIR }}/stripped-release-bin/"
224+ mkdir -p "${BIN_DIR}"
225+ BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
226+ BIN_PATH="${BIN_DIR}/${BIN_NAME}"
227+
228+ # Copy the release build binary to the result location
229+ cp "target/${{ matrix.job.target }}/release/${BIN_NAME}" "${BIN_DIR}"
230+
231+ # Also strip if possible
232+ if [ -n "${STRIP}" ]; then
233+ "${STRIP}" "${BIN_PATH}"
234+ fi
235+
236+ # Let subsequent steps know where to find the (stripped) bin
237+ echo ::set-output name=BIN_PATH::${BIN_PATH}
238+ echo ::set-output name=BIN_NAME::${BIN_NAME}
239+
240+ - name: Set testing options
241+ id: test-options
242+ shell: bash
243+ run: |
244+ # test only library unit tests and binary for arm-type targets
245+ unset CARGO_TEST_OPTIONS
246+ unset CARGO_TEST_OPTIONS ; case ${{ matrix.job.target }} in arm-* | aarch64-*) CARGO_TEST_OPTIONS="--lib --bin ${PROJECT_NAME}" ;; esac;
247+ echo ::set-output name=CARGO_TEST_OPTIONS::${CARGO_TEST_OPTIONS}
248+
249+ - name: Run tests
250+ uses: actions-rs/cargo@v1
251+ with:
252+ use-cross: ${{ matrix.job.use-cross }}
253+ command: test
254+ args: --locked --target=${{ matrix.job.target }} ${{ steps.test-options.outputs.CARGO_TEST_OPTIONS}}
255+
256+ - name: Run bat
257+ uses: actions-rs/cargo@v1
258+ with:
259+ use-cross: ${{ matrix.job.use-cross }}
260+ command: run
261+ args: --locked --target=${{ matrix.job.target }} -- --paging=never --color=always --theme=ansi Cargo.toml src/config.rs
262+
263+ - name: Show diagnostics (bat --diagnostic)
264+ uses: actions-rs/cargo@v1
265+ with:
266+ use-cross: ${{ matrix.job.use-cross }}
267+ command: run
268+ args: --locked --target=${{ matrix.job.target }} -- --paging=never --color=always --theme=ansi Cargo.toml src/config.rs --diagnostic
269+
270+ - name: "Feature check: regex-onig"
271+ uses: actions-rs/cargo@v1
272+ with:
273+ use-cross: ${{ matrix.job.use-cross }}
274+ command: check
275+ args: --locked --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig
276+
277+ - name: "Feature check: regex-onig,git"
278+ uses: actions-rs/cargo@v1
279+ with:
280+ use-cross: ${{ matrix.job.use-cross }}
281+ command: check
282+ args: --locked --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig,git
283+
284+ - name: "Feature check: regex-onig,paging"
285+ uses: actions-rs/cargo@v1
286+ with:
287+ use-cross: ${{ matrix.job.use-cross }}
288+ command: check
289+ args: --locked --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig,paging
290+
291+ - name: "Feature check: regex-onig,git,paging"
292+ uses: actions-rs/cargo@v1
293+ with:
294+ use-cross: ${{ matrix.job.use-cross }}
295+ command: check
296+ args: --locked --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig,git,paging
297+
298+ - name: "Feature check: minimal-application"
299+ uses: actions-rs/cargo@v1
300+ with:
301+ use-cross: ${{ matrix.job.use-cross }}
302+ command: check
303+ args: --locked --target=${{ matrix.job.target }} --verbose --no-default-features --features minimal-application
304+
305+ - name: Create tarball
306+ id: package
307+ shell: bash
308+ run: |
309+ PKG_suffix=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) PKG_suffix=".zip" ;; esac;
310+ PKG_BASENAME=${PROJECT_NAME}-v${PROJECT_VERSION}-${{ matrix.job.target }}
311+ PKG_NAME=${PKG_BASENAME}${PKG_suffix}
312+ echo ::set-output name=PKG_NAME::${PKG_NAME}
313+
314+ PKG_STAGING="${{ env.CICD_INTERMEDIATES_DIR }}/package"
315+ ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"
316+ mkdir -p "${ARCHIVE_DIR}"
317+ mkdir -p "${ARCHIVE_DIR}/autocomplete"
318+
319+ # Binary
320+ cp "${{ steps.strip.outputs.BIN_PATH }}" "$ARCHIVE_DIR"
321+
322+ # Man page
323+ cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/manual/bat.1 "$ARCHIVE_DIR"
324+
325+ # README, LICENSE and CHANGELOG files
326+ cp "README.md" "LICENSE-MIT" "LICENSE-APACHE" "CHANGELOG.md" "$ARCHIVE_DIR"
327+
328+ # Autocompletion files
329+ cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.bash "$ARCHIVE_DIR/autocomplete/${{ env.PROJECT_NAME }}.bash"
330+ cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.fish "$ARCHIVE_DIR/autocomplete/${{ env.PROJECT_NAME }}.fish"
331+ cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/_bat.ps1 "$ARCHIVE_DIR/autocomplete/_${{ env.PROJECT_NAME }}.ps1"
332+ cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "$ARCHIVE_DIR/autocomplete/${{ env.PROJECT_NAME }}.zsh"
333+
334+ # base compressed package
335+ pushd "${PKG_STAGING}/" >/dev/null
336+ case ${{ matrix.job.target }} in
337+ *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;
338+ *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;
339+ esac;
340+ popd >/dev/null
341+
342+ # Let subsequent steps know where to find the compressed package
343+ echo ::set-output name=PKG_PATH::"${PKG_STAGING}/${PKG_NAME}"
344+
345+ - name: Create Debian package
346+ id: debian-package
347+ shell: bash
348+ if: startsWith(matrix.job.os, 'ubuntu')
349+ run: |
350+ COPYRIGHT_YEARS="2018 - "$(date "+%Y")
351+ DPKG_STAGING="${{ env.CICD_INTERMEDIATES_DIR }}/debian-package"
352+ DPKG_DIR="${DPKG_STAGING}/dpkg"
353+ mkdir -p "${DPKG_DIR}"
354+
355+ DPKG_BASENAME=${PROJECT_NAME}
356+ DPKG_CONFLICTS=${PROJECT_NAME}-musl
357+ case ${{ matrix.job.target }} in *-musl) DPKG_BASENAME=${PROJECT_NAME}-musl ; DPKG_CONFLICTS=${PROJECT_NAME} ;; esac;
358+ DPKG_VERSION=${PROJECT_VERSION}
359+
360+ unset DPKG_ARCH
361+ case ${{ matrix.job.target }} in
362+ aarch64-*-linux-*) DPKG_ARCH=arm64 ;;
363+ arm-*-linux-*hf) DPKG_ARCH=armhf ;;
364+ i686-*-linux-*) DPKG_ARCH=i686 ;;
365+ x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
366+ *) DPKG_ARCH=notset ;;
367+ esac;
368+
369+ DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb"
370+ echo ::set-output name=DPKG_NAME::${DPKG_NAME}
371+
372+ # Binary
373+ install -Dm755 "${{ steps.strip.outputs.BIN_PATH }}" "${DPKG_DIR}/usr/bin/${{ steps.strip.outputs.BIN_NAME }}"
374+
375+ # Man page
376+ install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/manual/bat.1 "${DPKG_DIR}/usr/share/man/man1/${{ env.PROJECT_NAME }}.1"
377+ gzip -n --best "${DPKG_DIR}/usr/share/man/man1/${{ env.PROJECT_NAME }}.1"
378+
379+ # Autocompletion files
380+ install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.bash "${DPKG_DIR}/usr/share/bash-completion/completions/${{ env.PROJECT_NAME }}"
381+ install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.fish "${DPKG_DIR}/usr/share/fish/vendor_completions.d/${{ env.PROJECT_NAME }}.fish"
382+ install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "${DPKG_DIR}/usr/share/zsh/vendor-completions/_${{ env.PROJECT_NAME }}"
383+
384+ # README and LICENSE
385+ install -Dm644 "README.md" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/README.md"
386+ install -Dm644 "LICENSE-MIT" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/LICENSE-MIT"
387+ install -Dm644 "LICENSE-APACHE" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/LICENSE-APACHE"
388+ install -Dm644 "CHANGELOG.md" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/changelog"
389+ gzip -n --best "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/changelog"
390+
391+ cat > "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/copyright" <<EOF
392+ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
393+ Upstream-Name: ${{ env.PROJECT_NAME }}
394+ Source: ${{ env.PROJECT_HOMEPAGE }}
395+
396+ Files: *
397+ Copyright: ${{ env.PROJECT_MAINTAINER }}
398+ Copyright: $COPYRIGHT_YEARS ${{ env.PROJECT_MAINTAINER }}
399+ License: Apache-2.0 or MIT
400+
401+ License: Apache-2.0
402+ On Debian systems, the complete text of the Apache-2.0 can be found in the
403+ file /usr/share/common-licenses/Apache-2.0.
404+
405+ License: MIT
406+ Permission is hereby granted, free of charge, to any
407+ person obtaining a copy of this software and associated
408+ documentation files (the "Software"), to deal in the
409+ Software without restriction, including without
410+ limitation the rights to use, copy, modify, merge,
411+ publish, distribute, sublicense, and/or sell copies of
412+ the Software, and to permit persons to whom the Software
413+ is furnished to do so, subject to the following
414+ conditions:
415+ .
416+ The above copyright notice and this permission notice
417+ shall be included in all copies or substantial portions
418+ of the Software.
419+ .
420+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
421+ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
422+ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
423+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
424+ SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
425+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
426+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
427+ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
428+ DEALINGS IN THE SOFTWARE.
429+ EOF
430+ chmod 644 "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/copyright"
431+
432+ # control file
433+ mkdir -p "${DPKG_DIR}/DEBIAN"
434+ cat > "${DPKG_DIR}/DEBIAN/control" <<EOF
435+ Package: ${DPKG_BASENAME}
436+ Version: ${DPKG_VERSION}
437+ Section: utils
438+ Priority: optional
439+ Maintainer: ${{ env.PROJECT_MAINTAINER }}
440+ Homepage: ${{ env.PROJECT_HOMEPAGE }}
441+ Architecture: ${DPKG_ARCH}
442+ Provides: ${{ env.PROJECT_NAME }}
443+ Conflicts: ${DPKG_CONFLICTS}
444+ Description: cat(1) clone with wings.
445+ A cat(1) clone with syntax highlighting and Git integration.
446+ EOF
447+
448+ DPKG_PATH="${DPKG_STAGING}/${DPKG_NAME}"
449+ echo ::set-output name=DPKG_PATH::${DPKG_PATH}
450+
451+ # build dpkg
452+ fakeroot dpkg-deb --build "${DPKG_DIR}" "${DPKG_PATH}"
453+
454+ - name: "Artifact upload: tarball"
455+ uses: actions/upload-artifact@master
456+ with:
457+ name: ${{ steps.package.outputs.PKG_NAME }}
458+ path: ${{ steps.package.outputs.PKG_PATH }}
459+
460+ - name: "Artifact upload: Debian package"
461+ uses: actions/upload-artifact@master
462+ if: steps.debian-package.outputs.DPKG_NAME
463+ with:
464+ name: ${{ steps.debian-package.outputs.DPKG_NAME }}
465+ path: ${{ steps.debian-package.outputs.DPKG_PATH }}
466+
467+ - name: Check for release
468+ id: is-release
469+ shell: bash
470+ run: |
471+ unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
472+ echo ::set-output name=IS_RELEASE::${IS_RELEASE}
473+
474+ - name: Publish archives and packages
475+ uses: softprops/action-gh-release@v1
476+ if: steps.is-release.outputs.IS_RELEASE
477+ with:
478+ files: |
479+ ${{ steps.package.outputs.PKG_PATH }}
480+ ${{ steps.debian-package.outputs.DPKG_PATH }}
481+ env:
482+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
.gitignore+7−1
@@ -1,3 +1,9 @@
1−
2/target/
1/target/
3**/*.rs.bk
2**/*.rs.bk
3+
4+# Generated files
5+/assets/completions/bat.bash
6+/assets/completions/bat.fish
7+/assets/completions/bat.zsh
8+/assets/manual/bat.1
9+/assets/metadata.yaml
.gitmodules+163−48
@@ -1,32 +1,32 @@
1[submodule "assets/syntaxes/Elixir"]
1[submodule "assets/syntaxes/Elixir"]
2− path = assets/syntaxes/Elixir
2+ path = assets/syntaxes/02_Extra/Elixir
3 url = https://github.com/princemaple/elixir-sublime-syntax/
3 url = https://github.com/princemaple/elixir-sublime-syntax/
4[submodule "assets/syntaxes/Packages"]
4[submodule "assets/syntaxes/Packages"]
5− path = assets/syntaxes/Packages
5+ path = assets/syntaxes/01_Packages
6 url = https://github.com/sublimehq/Packages/
6 url = https://github.com/sublimehq/Packages/
7[submodule "assets/syntaxes/TOML"]
7[submodule "assets/syntaxes/TOML"]
8− path = assets/syntaxes/TOML
8+ path = assets/syntaxes/02_Extra/TOML
9 url = https://github.com/jasonwilliams/sublime_toml_highlighting
9 url = https://github.com/jasonwilliams/sublime_toml_highlighting
10[submodule "assets/syntaxes/Julia"]
10[submodule "assets/syntaxes/Julia"]
11− path = assets/syntaxes/Julia
11+ path = assets/syntaxes/02_Extra/Julia
12 url = https://github.com/JuliaEditorSupport/Julia-sublime
12 url = https://github.com/JuliaEditorSupport/Julia-sublime
13[submodule "assets/themes/sublime-monokai-extended"]
13[submodule "assets/themes/sublime-monokai-extended"]
14 path = assets/themes/sublime-monokai-extended
14 path = assets/themes/sublime-monokai-extended
15 url = https://github.com/jonschlinkert/sublime-monokai-extended
15 url = https://github.com/jonschlinkert/sublime-monokai-extended
16[submodule "assets/syntaxes/Docker"]
16[submodule "assets/syntaxes/Docker"]
17− path = assets/syntaxes/Docker
17+ path = assets/syntaxes/02_Extra/Docker
18 url = https://github.com/asbjornenge/Docker.tmbundle
18 url = https://github.com/asbjornenge/Docker.tmbundle
19[submodule "assets/syntaxes/VimL"]
19[submodule "assets/syntaxes/VimL"]
20− path = assets/syntaxes/VimL
20+ path = assets/syntaxes/02_Extra/VimL
21 url = https://github.com/SalGnt/Sublime-VimL
21 url = https://github.com/SalGnt/Sublime-VimL
22[submodule "assets/syntaxes/INI"]
22[submodule "assets/syntaxes/INI"]
23− path = assets/syntaxes/INI
23+ path = assets/syntaxes/02_Extra/INI
24 url = https://github.com/clintberry/sublime-text-2-ini
24 url = https://github.com/clintberry/sublime-text-2-ini
25[submodule "assets/syntaxes/CMake"]
25[submodule "assets/syntaxes/CMake"]
26− path = assets/syntaxes/CMake
26+ path = assets/syntaxes/02_Extra/CMake
27 url = https://github.com/zyxar/Sublime-CMakeLists
27 url = https://github.com/zyxar/Sublime-CMakeLists
28[submodule "assets/syntaxes/LESS"]
28[submodule "assets/syntaxes/LESS"]
29− path = assets/syntaxes/LESS
29+ path = assets/syntaxes/02_Extra/LESS
30 url = https://github.com/danro/LESS-sublime
30 url = https://github.com/danro/LESS-sublime
31[submodule "assets/themes/DarkNeon"]
31[submodule "assets/themes/DarkNeon"]
32 path = assets/themes/DarkNeon
32 path = assets/themes/DarkNeon
@@ -41,91 +41,206 @@
41 path = assets/themes/TwoDark
41 path = assets/themes/TwoDark
42 url = https://github.com/erremauro/TwoDark
42 url = https://github.com/erremauro/TwoDark
43[submodule "assets/syntaxes/AWK"]
43[submodule "assets/syntaxes/AWK"]
44− path = assets/syntaxes/AWK
44+ path = assets/syntaxes/02_Extra/AWK
45 url = https://github.com/JohnNilsson/awk-sublime
45 url = https://github.com/JohnNilsson/awk-sublime
46[submodule "assets/syntaxes/Nix"]
46[submodule "assets/syntaxes/Nix"]
47− path = assets/syntaxes/Nix
47+ path = assets/syntaxes/02_Extra/Nix
48 url = https://github.com/wmertens/sublime-nix
48 url = https://github.com/wmertens/sublime-nix
49[submodule "assets/themes/zenburn"]
49[submodule "assets/themes/zenburn"]
50 path = assets/themes/zenburn
50 path = assets/themes/zenburn
51 url = https://github.com/colinta/zenburn.git
51 url = https://github.com/colinta/zenburn.git
52[submodule "assets/syntaxes/Kotlin"]
52[submodule "assets/syntaxes/Kotlin"]
53− path = assets/syntaxes/Kotlin
53+ path = assets/syntaxes/02_Extra/Kotlin
54 url = https://github.com/vkostyukov/kotlin-sublime-package
54 url = https://github.com/vkostyukov/kotlin-sublime-package
55[submodule "assets/syntaxes/Elm"]
55[submodule "assets/syntaxes/Elm"]
56− path = assets/syntaxes/Elm
56+ path = assets/syntaxes/02_Extra/Elm
57 url = https://github.com/elm-community/SublimeElmLanguageSupport
57 url = https://github.com/elm-community/SublimeElmLanguageSupport
58[submodule "assets/syntaxes/TypeScript"]
58[submodule "assets/syntaxes/TypeScript"]
59− path = assets/syntaxes/TypeScript
59+ path = assets/syntaxes/02_Extra/TypeScript
60 url = https://github.com/Microsoft/TypeScript-Sublime-Plugin
60 url = https://github.com/Microsoft/TypeScript-Sublime-Plugin
61[submodule "assets/syntaxes/Puppet"]
61[submodule "assets/syntaxes/Puppet"]
62− path = assets/syntaxes/Puppet
62+ path = assets/syntaxes/02_Extra/Puppet
63 url = https://github.com/russCloak/SublimePuppet
63 url = https://github.com/russCloak/SublimePuppet
64−[submodule "assets/syntaxes/CSV"]
65− path = assets/syntaxes/CSV
66− url = https://github.com/wadetb/Sublime-Text-Advanced-CSV
67[submodule "assets/themes/onehalf"]
64[submodule "assets/themes/onehalf"]
68 path = assets/themes/onehalf
65 path = assets/themes/onehalf
69 url = https://github.com/sonph/onehalf
66 url = https://github.com/sonph/onehalf
70[submodule "assets/syntaxes/JavaScript (Babel)"]
67[submodule "assets/syntaxes/JavaScript (Babel)"]
71− path = assets/syntaxes/JavaScript (Babel)
68+ path = assets/syntaxes/02_Extra/JavaScript (Babel)
72 url = https://github.com/babel/babel-sublime
69 url = https://github.com/babel/babel-sublime
73−[submodule "assets/syntaxes/Cabal"]
74− path = assets/syntaxes/Cabal
75− url = https://github.com/SublimeHaskell/SublimeHaskell
76−[submodule "assets/syntaxes/Dart"]
77− path = assets/syntaxes/Dart
78− url = https://github.com/guillermooo/dart-sublime-bundle
79[submodule "assets/syntaxes/FSharp"]
70[submodule "assets/syntaxes/FSharp"]
80− path = assets/syntaxes/FSharp
71+ path = assets/syntaxes/02_Extra/FSharp
81 url = https://github.com/hoest/sublimetext-fsharp
72 url = https://github.com/hoest/sublimetext-fsharp
82[submodule "assets/syntaxes/PureScript"]
73[submodule "assets/syntaxes/PureScript"]
83− path = assets/syntaxes/PureScript
74+ path = assets/syntaxes/02_Extra/PureScript
84 url = https://github.com/tellnobody1/sublime-purescript-syntax
75 url = https://github.com/tellnobody1/sublime-purescript-syntax
85[submodule "assets/syntaxes/Swift"]
76[submodule "assets/syntaxes/Swift"]
86− path = assets/syntaxes/Swift
77+ path = assets/syntaxes/02_Extra/Swift
87 url = https://github.com/quiqueg/Swift-Sublime-Package
78 url = https://github.com/quiqueg/Swift-Sublime-Package
88[submodule "assets/syntaxes/Crystal"]
79[submodule "assets/syntaxes/Crystal"]
89− path = assets/syntaxes/Crystal
80+ path = assets/syntaxes/02_Extra/Crystal
90 url = https://github.com/crystal-lang-tools/sublime-crystal.git
81 url = https://github.com/crystal-lang-tools/sublime-crystal.git
91[submodule "assets/syntaxes/PowerShell"]
82[submodule "assets/syntaxes/PowerShell"]
92− path = assets/syntaxes/PowerShell
83+ path = assets/syntaxes/02_Extra/PowerShell
93 url = https://github.com/PowerShell/EditorSyntax
84 url = https://github.com/PowerShell/EditorSyntax
94[submodule "assets/syntaxes/Robot"]
85[submodule "assets/syntaxes/Robot"]
95− path = assets/syntaxes/Robot
86+ path = assets/syntaxes/02_Extra/Robot
96 url = https://github.com/andriyko/sublime-robot-framework-assistant.git
87 url = https://github.com/andriyko/sublime-robot-framework-assistant.git
97[submodule "assets/themes/sublime-snazzy"]
88[submodule "assets/themes/sublime-snazzy"]
98 path = assets/themes/sublime-snazzy
89 path = assets/themes/sublime-snazzy
99 url = https://github.com/greggb/sublime-snazzy
90 url = https://github.com/greggb/sublime-snazzy
100−[submodule "assets/syntaxes/HTML (Twig)"]
101− path = assets/syntaxes/HTML (Twig)
102− url = https://github.com/Anomareh/PHP-Twig.tmbundle.git
103−[submodule "assets/syntaxes/AsciiDoc"]
104− path = assets/syntaxes/AsciiDoc
105− url = https://github.com/SublimeText/AsciiDoc.git
106[submodule "assets/syntaxes/Assembly (ARM)"]
91[submodule "assets/syntaxes/Assembly (ARM)"]
107− path = assets/syntaxes/Assembly (ARM)
92+ path = assets/syntaxes/02_Extra/Assembly (ARM)
108 url = https://github.com/tvi/Sublime-ARM-Assembly
93 url = https://github.com/tvi/Sublime-ARM-Assembly
109−[submodule "assets/syntaxes/syslog-syntax"]
110− path = assets/syntaxes/Syslog
111− url = https://github.com/caos21/syslog-syntax.git
112− branch = master
113[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
94[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
114− path = assets/syntaxes/Protobuf
95+ path = assets/syntaxes/02_Extra/Protobuf
115 url = https://github.com/VcamX/protobuf-syntax-highlighting.git
96 url = https://github.com/VcamX/protobuf-syntax-highlighting.git
116 branch = master
97 branch = master
117[submodule "assets/syntaxes/Terraform"]
98[submodule "assets/syntaxes/Terraform"]
118− path = assets/syntaxes/Terraform
99+ path = assets/syntaxes/02_Extra/Terraform
119 url = https://github.com/alexlouden/Terraform.tmLanguage.git
100 url = https://github.com/alexlouden/Terraform.tmLanguage.git
120[submodule "assets/syntaxes/Jsonnet"]
101[submodule "assets/syntaxes/Jsonnet"]
121− path = assets/syntaxes/Jsonnet
102+ path = assets/syntaxes/02_Extra/Jsonnet
122 url = https://github.com/gburiola/sublime-jsonnet-syntax.git
103 url = https://github.com/gburiola/sublime-jsonnet-syntax.git
123[submodule "assets/syntaxes/varlink"]
104[submodule "assets/syntaxes/varlink"]
124− path = assets/syntaxes/varlink
105+ path = assets/syntaxes/02_Extra/varlink
125 url = https://github.com/varlink/syntax-highlight-varlink.git
106 url = https://github.com/varlink/syntax-highlight-varlink.git
126[submodule "assets/syntaxes/sublime-fish"]
107[submodule "assets/syntaxes/sublime-fish"]
127− path = assets/syntaxes/sublime-fish
108+ path = assets/syntaxes/02_Extra/Fish
128 url = https://github.com/Phidica/sublime-fish.git
109 url = https://github.com/Phidica/sublime-fish.git
129[submodule "assets/syntaxes/Org mode"]
110[submodule "assets/syntaxes/Org mode"]
130− path = assets/syntaxes/Org mode
111+ path = assets/syntaxes/02_Extra/Org mode
131 url = https://github.com/jezcope/Org.tmbundle.git
112 url = https://github.com/jezcope/Org.tmbundle.git
113+[submodule "assets/syntaxes/DotENV"]
114+ path = assets/syntaxes/02_Extra/DotENV
115+ url = https://github.com/zaynali53/DotENV
116+[submodule "assets/syntaxes/hosts"]
117+ path = assets/syntaxes/02_Extra/hosts
118+ url = https://github.com/brandonwamboldt/sublime-hosts
119+[submodule "assets/syntaxes/ssh-config"]
120+ path = assets/syntaxes/02_Extra/ssh-config
121+ url = https://github.com/robballou/sublimetext-sshconfig.git
122+[submodule "assets/syntaxes/GraphQL"]
123+ path = assets/syntaxes/02_Extra/GraphQL
124+ url = https://github.com/dncrews/GraphQL-SublimeText3.git
125+[submodule "assets/syntaxes/Verilog"]
126+ path = assets/syntaxes/02_Extra/Verilog
127+ url = https://github.com/pro711/sublime-verilog
128+[submodule "assets/syntaxes/SCSS_Sass"]
129+ path = assets/syntaxes/02_Extra/SCSS_Sass
130+ url = https://github.com/braver/SublimeSass
131+[submodule "assets/syntaxes/Strace"]
132+ path = assets/syntaxes/02_Extra/Strace
133+ url = https://github.com/djuretic/SublimeStrace
134+[submodule "assets/syntaxes/Jinja2"]
135+ path = assets/syntaxes/02_Extra/Jinja2
136+ url = https://github.com/Martin819/sublime-jinja2
137+[submodule "assets/syntaxes/SLS"]
138+ path = assets/syntaxes/02_Extra/SLS
139+ url = https://github.com/saltstack/sublime-text
140+ branch = master
141+[submodule "assets/themes/dracula-sublime"]
142+ path = assets/themes/dracula-sublime
143+ url = https://github.com/dracula/sublime.git
144+[submodule "assets/syntaxes/HTML (Twig)"]
145+ path = assets/syntaxes/02_Extra/HTML (Twig)
146+ url = https://github.com/Anomareh/PHP-Twig.tmbundle.git
147+[submodule "assets/themes/Nord-sublime"]
148+ path = assets/themes/Nord-sublime
149+ url = https://github.com/crabique/Nord-plist.git
150+[submodule "assets/syntaxes/Vue"]
151+ path = assets/syntaxes/02_Extra/Vue
152+ url = https://github.com/vuejs/vue-syntax-highlight.git
153+ branch = new
154+[submodule "assets/syntaxes/CoffeeScript"]
155+ path = assets/syntaxes/02_Extra/CoffeeScript
156+ url = https://github.com/sustained/CoffeeScript-Sublime-Plugin
157+[submodule "assets/syntaxes/02_Extra/Stylus"]
158+ path = assets/syntaxes/02_Extra/Stylus
159+ url = https://github.com/billymoon/Stylus
160+[submodule "assets/themes/Solarized"]
161+ path = assets/themes/Solarized
162+ url = https://github.com/braver/Solarized
163+[submodule "assets/syntaxes/02_Extra/Fortran"]
164+ path = assets/syntaxes/02_Extra/Fortran
165+ url = https://github.com/315234/SublimeFortran
166+[submodule "assets/syntaxes/02_Extra/Email"]
167+ path = assets/syntaxes/02_Extra/Email
168+ url = https://github.com/mariozaizar/email.sublime-syntax.git
169+[submodule "assets/syntaxes/02_Extra/QML"]
170+ path = assets/syntaxes/02_Extra/QML
171+ url = https://github.com/skozlovf/Sublime-QML
172+[submodule "assets/syntaxes/02_Extra/AsciiDoc"]
173+ path = assets/syntaxes/02_Extra/AsciiDoc
174+ url = https://github.com/asciidoctor/sublimetext-asciidoc.git
175+[submodule "assets/syntaxes/02_Extra/GLSL"]
176+ path = assets/syntaxes/02_Extra/GLSL
177+ url = https://github.com/euler0/sublime-glsl
178+[submodule "assets/syntaxes/02_Extra/Nginx"]
179+ path = assets/syntaxes/02_Extra/Nginx
180+ url = https://github.com/brandonwamboldt/sublime-nginx
181+[submodule "assets/syntaxes/02_Extra/Apache"]
182+ path = assets/syntaxes/02_Extra/Apache
183+ url = https://github.com/colinta/ApacheConf.tmLanguage
184+[submodule "assets/syntaxes/02_Extra/Ninja"]
185+ path = assets/syntaxes/02_Extra/Ninja
186+ url = https://github.com/pope/SublimeNinja.git
187+[submodule "assets/syntaxes/02_Extra/Svelte"]
188+ path = assets/syntaxes/02_Extra/Svelte
189+ url = https://github.com/corneliusio/svelte-sublime
190+[submodule "assets/themes/Coldark"]
191+ path = assets/themes/Coldark
192+ url = https://github.com/ArmandPhilippot/coldark-bat.git
193+[submodule "assets/themes/gruvbox"]
194+ path = assets/themes/gruvbox
195+ url = https://github.com/subnut/gruvbox-tmTheme.git
196+ branch = bat-source
197+[submodule "assets/syntaxes/02_Extra/Lean"]
198+ path = assets/syntaxes/02_Extra/Lean
199+ url = https://github.com/leanprover/vscode-lean.git
200+[submodule "assets/syntaxes/02_Extra/LiveScript"]
201+ path = assets/syntaxes/02_Extra/LiveScript
202+ url = https://github.com/paulmillr/LiveScript.tmbundle
203+[submodule "assets/syntaxes/02_Extra/Zig"]
204+ path = assets/syntaxes/02_Extra/Zig
205+ url = https://github.com/ziglang/sublime-zig-language.git
206+[submodule "assets/syntaxes/02_Extra/gnuplot"]
207+ path = assets/syntaxes/02_Extra/gnuplot
208+ url = https://github.com/hesstobi/sublime_gnuplot
209+[submodule "assets/syntaxes/02_Extra/SystemVerilog"]
210+ path = assets/syntaxes/02_Extra/SystemVerilog
211+ url = https://github.com/TheClams/SystemVerilog.git
212+[submodule "assets/themes/visual-studio-dark-plus"]
213+ path = assets/themes/visual-studio-dark-plus
214+ url = https://github.com/vidann1/visual-studio-dark-plus.git
215+[submodule "assets/syntaxes/02_Extra/SublimeEthereum"]
216+ path = assets/syntaxes/02_Extra/SublimeEthereum
217+ url = https://github.com/davidhq/SublimeEthereum.git
218+[submodule "assets/syntaxes/02_Extra/Groff"]
219+ path = assets/syntaxes/02_Extra/Groff
220+ url = https://github.com/carsonoid/sublime_man_page_support
221+[submodule "assets/syntaxes/02_Extra/http-request-response"]
222+ path = assets/syntaxes/02_Extra/http-request-response
223+ url = https://github.com/keith-hall/http-request-response-syntax.git
224+[submodule "assets/syntaxes/02_Extra/LLVM"]
225+ path = assets/syntaxes/02_Extra/LLVM
226+ url = https://github.com/ioncodes/LLVM.tmBundle
227+[submodule "assets/syntaxes/02_Extra/Slim"]
228+ path = assets/syntaxes/02_Extra/Slim
229+ url = https://github.com/slim-template/ruby-slim.tmbundle.git
230+[submodule "assets/syntaxes/02_Extra/Racket"]
231+ path = assets/syntaxes/02_Extra/Racket
232+ url = https://github.com/follesoe/sublime-racket.git
233+[submodule "assets/syntaxes/02_Extra/MediaWiki"]
234+ path = assets/syntaxes/02_Extra/MediaWiki
235+ url = https://github.com/tosher/Mediawiker.git
236+[submodule "assets/syntaxes/02_Extra/Dart"]
237+ path = assets/syntaxes/02_Extra/Dart
238+ url = https://github.com/elMuso/Dartlight.git
239+[submodule "assets/syntaxes/02_Extra/SublimeJQ"]
240+ path = assets/syntaxes/02_Extra/SublimeJQ
241+ url = https://github.com/zogwarg/SublimeJQ.git
242+[submodule "assets/syntaxes/02_Extra/cmd-help"]
243+ path = assets/syntaxes/02_Extra/cmd-help
244+ url = https://github.com/victor-gp/cmd-help-sublime-syntax.git
245+ branch = main
246+ shallow = true
.travis.ymldeleted−112
@@ -1,112 +0,0 @@
1−language: rust
2−
3−matrix:
4− include:
5− # Stable channel.
6− - os: linux
7− rust: stable
8− env: TARGET=x86_64-unknown-linux-gnu
9− - os: linux
10− rust: stable
11− env:
12− - TARGET=x86_64-unknown-linux-musl
13− - CC_x86_64_unknown_linux_musl=/usr/bin/musl-gcc
14− - os: linux
15− rust: stable
16− env: TARGET=i686-unknown-linux-gnu
17− - os: osx
18− rust: stable
19− env: TARGET=x86_64-apple-darwin
20− - os: linux
21− rust: stable
22− env:
23− - TARGET=arm-unknown-linux-gnueabihf
24− - CC_arm_unknown_linux_gnueabihf=/usr/bin/arm-linux-gnueabihf-gcc-4.8
25− - CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc-4.8
26− - os: linux
27− rust: stable
28− env:
29− - TARGET=aarch64-unknown-linux-gnu
30− - CC_aarch64-unknown-linux-gnu=/usr/bin/aarch64-linux-gnu-gcc-4.8
31− - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc-4.8
32−
33− # Minimum Rust supported channel.
34− - os: linux
35− rust: 1.31.0
36− env: TARGET=x86_64-unknown-linux-gnu
37− - os: linux
38− rust: 1.31.0
39− env:
40− - TARGET=x86_64-unknown-linux-musl
41− - CC_x86_64_unknown_linux_musl=/usr/bin/musl-gcc
42− - os: osx
43− rust: 1.31.0
44− env: TARGET=x86_64-apple-darwin
45−
46− # Code formatting check
47− - os: linux
48− rust: nightly
49− # skip the global install step
50− install:
51− - cargo install --debug --force rustfmt-nightly
52− script: cargo fmt -- --check
53−
54−sudo: required
55−
56−before_install:
57− - ci/before_install.bash
58−
59−env:
60− global:
61− # Default target on travis-ci.
62− # Used as conditional check in the install stage
63− - HOST=x86_64-unknown-linux-gnu
64− # Used on the deployment script
65− - PROJECT_NAME=bat
66−
67−install:
68− # prevent target re-add error from rustup
69− - if [[ $TRAVIS_OS_NAME = linux && $HOST != $TARGET ]]; then rustup target add $TARGET; fi
70−
71−script:
72− - ci/script.bash
73−
74−before_deploy:
75− - bash ci/before_deploy.bash
76−
77−deploy:
78− provider: releases
79− # NOTE updating the `api_key.secure`
80− # - go to: https://github.com/settings/tokens/new
81− # - generate new token using `public_repo` scope
82− # - encrypt it using: `travis encrypt API_KEY_HERE`
83− # - paste the output below
84− api_key:
85− secure: "GZL8nYk+/MZGEqejpP0UMMGVmwUEdxiF9CflFIGccu+/tznDyHnHOpyJmbH3M5IKWIxa7xFgqOE8pHuD4oQXt4mzyJGB0KMKKEFLW7ckbTYKya5bw0heKznaqGnS0Yz+vpfqYR25eiPFYCz7mDsGsCzH5QZqt3cdn9MDQGu1D0IaxPjuBNH3T9kBblR0ifBd3Diy0JYhiVcMSI3V1rkel18F1yBHO2GQ95hkWxVgjANQnefq5+zdzbx4ki539ewYENShA8N0w6ULJVY9LmWRWJIp90ggOD3JCH6Nz/fBpYBqwfABO6Dr7Csw7IRm7pM4IVkFZS1taiDYFX9thxZh3UTmI4YYtSTPxH9NGV47kxPipbf4vAXFwW+1VcHKMpBzz+5IVsHnk1Pfx9/GZsXbqXM3PUWCStec36Xtqh5vQapDKEg9khkEs4b1X7/E73gvpRuQl9gbnyufSVWgDsXIWqM+0aDbqQz1FpLmVxz6eij0cB9vR+8kbNoe/CEPHPO9ZllvAHseukOeHPzSBd8rILORXaaGmQausXz2wWgSsffUSYz4705P8joI0zFCfmkHjL+kA1ZUx5SxLCc1ID7CFFZChhAxHoPL7xc21snswwr8QeheERdwvuzKNaerBGZEw8dmMMx98YkjftIj65DDySr2mRZuufBQeQpmMhFyIT4="
86− # for uploading multiple files
87− file_glob: true
88− # NOTE explanation on each env variable
89− # - PROJECT_NAME: name of the project, set on the `env.global` above
90− # - TRAVIS_TAG: tag name that the build is being deployed for, usually the version number
91− # - TARGET: target triple of the build
92− file:
93− - $PROJECT_NAME-$TRAVIS_TAG-$TARGET.*
94− - $PROJECT_NAME*.deb
95− # don't delete artifacts from previous stage
96− skip_cleanup: true
97− on:
98− # deploy only if we push a tag
99− tags: true
100− # deploy only on stable channel that has TARGET env variable sets
101− condition: $TRAVIS_RUST_VERSION = stable && $TARGET != ""
102−
103−notifications:
104− email:
105− on_success: never
106−
107−# Caching
108−cache:
109− directories:
110− - /home/travis/.cargo
111−before_cache:
112− - rm -rf /home/travis/.cargo/registry
CHANGELOG.mdnew file+1020
@@ -0,0 +1,1020 @@
1+# unreleased
2+
3+## Features
4+
5+- Make the default macOS theme depend on Dark Mode. See #2197, #1746 (@Enselic)
6+
7+## Bugfixes
8+
9+## Other
10+
11+- Relaxed glibc requirements on amd64, see #2106 and #2194 (@sharkdp)
12+
13+## Syntaxes
14+
15+## Themes
16+
17+## `bat` as a library
18+
19+
20+# v0.21.0
21+
22+## Features
23+
24+- Correctly render tab stops in `--show-all`, see #2038 (@Synthetica9)
25+- Add a `--style=default` option and make it the default. It is less verbose than `full`, see #2061 (@IsaacHorvath)
26+- Enable BusyBox `less` as pager, see #2162 (@nfisher1226)
27+- File extensions are now matched case-insensitively. See #1854, #2181 (@Enselic)
28+
29+## Bugfixes
30+
31+- Bump `regex` dependency from 1.5.4 to 1.5.5 to fix [CVE-2022-24713](https://blog.rust-lang.org/2022/03/08/cve-2022-24713.html), see #2145, #2139 (@Enselic)
32+- `bat` no longer crashes when encountering files that references missing syntaxes. See #915, #2181 (@Enselic)
33+
34+## Performance
35+
36+- Skip syntax highlighting on long lines (> 16384 chars) to help improve performance. See #2165 (@keith-hall)
37+- Vastly improve startup time by lazy-loading syntaxes via syntect 5.0.0. This makes bat display small files ~75% faster than before. See #951, #2181 (@Enselic)
38+
39+## Other
40+
41+- Include info about custom assets in `--diagnostics` if used. See #2107, #2144 (@Enselic)
42+
43+## Syntaxes
44+
45+- Mapped clang-format config file (.clang-format) to YAML syntax (@TruncatedDinosour)
46+- log syntax: improved handling of escape characters in double quoted strings. See #2123 (@keith-hall)
47+- Associate `/var/spool/mail/*` and `/var/mail/*` with the `Email` syntax. See #2156 (@cyqsimon)
48+- Added cmd-help syntax to scope --help messages. See #2148 (@victor-gp)
49+- Slightly adjust Zig syntax. See #2136 (@Enselic)
50+- Associate `.inf` files with the `INI` syntax. See #2190 (@Enselic)
51+
52+## `bat` as a library
53+
54+- Allow configuration of `show_nonprintable` with `PrettyPrinter`, see #2142
55+- The binary format of syntaxes.bin has been changed due to syntaxes now being lazy-loaded via syntect 5.0.0. See #2181 (@Enselic)
56+- Mark `bat::error::Error` enum as `#[non_exhaustive]` to allow adding new variants without future semver breakage. See #2181 (@Enselic)
57+- Change `Error::SyntectError(syntect::LoadingError)` to `Error::SyntectError(syntect::Error)`. See #2181 (@Enselic)
58+- Add `Error::SyntectLoadingError(syntect::LoadingError)` enum variant. See #2181 (@Enselic)
59+
60+
61+# v0.20.0
62+
63+## Features
64+
65+- New style component `header-filesize` to show size of the displayed file in the header. See #1988 (@mdibaiee)
66+- Use underline for line highlighting on ANSI, see #1730 (@mdibaiee)
67+
68+## Bugfixes
69+
70+- Fix bash completion on bash 3.x and bash-completion 1.x. See #2066 (@joshpencheon)
71+
72+## Syntaxes
73+
74+- `GraphQL`: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000
75+- Associate `_vimrc` and `_gvimrc` files with the `VimL` syntax. See #2002
76+- Associate `poetry.lock` files with the `TOML` syntax. See #2049
77+- Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` with the `GLSL` syntax. See #2050
78+- Added support for `JQ` syntax, see #2072
79+- Properly associate global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/`. See #2067 (@cyqsimon)
80+
81+## `bat` as a library
82+
83+- Exposed `get_syntax_set` and `get_theme` methods on `HighlightingAssets`. See #2030 (@dandavison)
84+- Added `HeaderFilename` and `HeaderFilesize` to `StyleComponent` enum, and mark it `#[non_exhaustive]`. See #1988 (@mdibaiee)
85+
86+
87+# v0.19.0
88+
89+## Performance
90+
91+- Reduce startup time in loop-through mode (e.g. when redirecting output) by 90%. See #1747 (@Enselic)
92+- Load themes lazily to make bat start 25% faster when disregarding syntax load time. See #1969 (@Enselic)
93+- Python syntax highlighting no longer suffers from abysmal performance in specific scenarios. See #1688 (@keith-hall)
94+- Fix for poor performance when ANSI escape sequences are piped to `bat`, see #1596 (@eth-p)
95+- Fix for incorrect handling of ANSI escape sequences when using `--wrap=never`, see #1596 (@eth-p)
96+- Load custom assets as fast as integrated assets, see #1753 (@Enselic)
97+
98+## Features
99+
100+- Support for `x:-delta` (minus) syntax in line ranges (e.g. `20:-10`). See #1901 (@bojan88)
101+- Support for `--ignored-suffix` argument. See #1892 (@bojan88)
102+- `$BAT_CONFIG_DIR` is now a recognized environment variable. It has precedence over `$XDG_CONFIG_HOME`, see #1727 (@billrisher)
103+- Support for `x:+delta` syntax in line ranges (e.g. `20:+10`). See #1810 (@bojan88)
104+- Add new `--acknowledgements` option that gives credit to theme and syntax definition authors. See #1971 (@Enselic)
105+- Include git hash in `bat -V` and `bat --version` output if present. See #1921 (@Enselic)
106+
107+## Bugfixes
108+
109+- First line not shown in diff context. See #1891 (@divagant-martian)
110+- Do not ignore syntaxes that handle file names with a `*.conf` extension. See #1703 (@cbolgiano)
111+
112+## Other
113+
114+- Add PowerShell completion, see #1826 (@rashil2000)
115+- Minimum supported Rust version (MSRV) bumped to 1.51, see #1994 (@mdibaiee)
116+
117+## Syntaxes
118+
119+- Groff, see #1685 (@scop)
120+- HTTP Requests and Responses, see #1748 (@keith-hall)
121+- LLVM, see #1777 (@ioncodes)
122+- Highlight for `vimrc` and `gvimrc` files, see #1763 (@SuperSandro2000)
123+- Syslog highlighting improvements, see #1793 (@scop)
124+- Added support for `slim` syntax, see #1693 (@mfinelli)
125+- Racket, see #1884 (@jubnzv)
126+- LiveScript, see #1915 (@Enselic)
127+- MediaWiki, see #1925 (@sorairolake)
128+- The `requirements.txt` syntax has been removed due to incompatible license requirements.
129+- Dart, new highlighter, see #1959 (@Ersikan)
130+- SCSS and Sass syntaxes updated, see #1766 (@Enselic)
131+- PowerShell syntax updated, see #1935 (@Enselic)
132+- TypeScript syntax updated, see #1834 (@Enselic)
133+
134+## `bat` as a library
135+
136+- Deprecate `HighlightingAssets::syntaxes()` and `HighlightingAssets::syntax_for_file_name()`. Use `HighlightingAssets::get_syntaxes()` and `HighlightingAssets::get_syntax_for_path()` instead. They return a `Result` which is needed for upcoming lazy-loading work to improve startup performance. They also return which `SyntaxSet` the returned `SyntaxReference` belongs to. See #1747, #1755, #1776, #1862 (@Enselic)
137+- Remove `HighlightingAssets::from_files` and `HighlightingAssets::save_to_cache`. Instead of calling the former and then the latter you now make a single call to `bat::assets::build`. See #1802, #1971 (@Enselic)
138+- Replace the `error::Error(error::ErrorKind, _)` struct and enum with an `error::Error` enum. `Error(ErrorKind::UnknownSyntax, _)` becomes `Error::UnknownSyntax`, etc. Also remove the `error::ResultExt` trait. These changes stem from replacing `error-chain` with `thiserror`. See #1820 (@Enselic)
139+- Add new `MappingTarget` enum variant `MapExtensionToUnknown`. Refer to its documentation for more information. Also mark `MappingTarget` as `#[non_exhaustive]` since more enum variants might be added in the future. See #1703 (@cbolgiano), #2012 (@Enselic)
140+
141+
142+# v0.18.3
143+
144+## Bugfixes
145+
146+- Bump `git2` dependency to fix build with Rust 1.54, see #1761
147+
148+
149+# v0.18.2
150+
151+## Features
152+
153+- Ignore known backup/template filename suffixes when selecting the syntax, see #1687 (@scop)
154+
155+## Bugfixes
156+
157+- Fix for a security vulnerability on Windows. Prior to this release, `bat` would execute programs called `less`/`less.exe` from the current working directory (instead of the one from `PATH`) with priority. An attacker might be able to use this by placing a malicious program in a shared directory where the user would execute `bat`. `bat` users on Windows are advised to upgrade to this version. See #1724 and #1472 (@Ry0taK).
158+
159+## Other
160+
161+- Add bash completion, see #1678 (@scop)
162+- Fix Clippy lints, see #1661 (@mohamed-abdelnour)
163+- Add syntax highlighting test files, see #1213 and #1668 (@mohamed-abdelnour)
164+
165+## Syntaxes
166+
167+- Upgraded Julia syntax to fix a highlighting bug, see #1692
168+- Added support for `dash` syntax, see #1654 (@mohamed-abdelnour)
169+- Added support for `XAML` syntax, see #1590 and #1655 (@mohamed-abdelnour)
170+- Apply `DotENV` syntax also for `.env.default` and `.env.defaults` files, see #1669
171+
172+
173+# v0.18.1
174+
175+## Bugfixes
176+
177+- Mouse support and screen clearing broken for `less` versions with minor version number (581.2), see #1629 and #1639 (@aswild)
178+
179+## Other
180+
181+- `Input::ordinary_file` and `Input::with_name` now accept `Path` rather than `OsStr` see #1571 (@matklad)
182+- The `LESS` environment variable is now included in `bat --diagnostic`, see #1589 (@Enselic)
183+- Increased min. required Rust version to 1.45
184+
185+## Syntaxes
186+
187+- Improved the Syslog syntax highlighting, see #1606 (@keith-hall)
188+- Replaced "Advanced CSV" with a custom CSV syntax definition written especially for `bat`; see #1574 (@keith-hall)
189+- Added SystemVerilog file syntax, see #1580 (@SeanMcLoughlin)
190+- Added Solidity and Vyper syntax, see #1602 (@Ersikan)
191+
192+## New themes
193+
194+- Dark+ VS Code theme, see #1588 and #1598 (@PatriotRossii)
195+
196+
197+
198+# v0.18.0
199+
200+## Features
201+
202+- Use a pager when `bat --list-languages` is called, see #1394 (@stku1985)
203+
204+## Bugfixes
205+
206+- If the last line doesn't end with a newline character, don't add it if `--style=plain`, see #1438 (@Enselic)
207+- Only print themes hint in interactive mode (`bat --list-themes`), see #1439 (@rsteube)
208+- Make ./tests/syntax-tests/regression_test.sh work on recent versions of macOS, see #1443 (@Enselic)
209+- VimL syntax highlighting fix, see #1450 (@esensar)
210+- Print an 'Invalid syntax theme settings' error message if a custom theme is broken, see #614 (@Enselic)
211+- If plain mode is set and wrap is not explicitly opted in, long lines will no be truncated, see #1426
212+- If `PAGER` (but not `BAT_PAGER` or `--pager`) is `more` or `most`, silently use `less` instead to ensure support for colors, see #1063 (@Enselic)
213+- If `PAGER` is `bat`, silently use `less` to prevent recursion. For `BAT_PAGER` or `--pager`, exit with error, see #1413 (@Enselic)
214+- Manpage highlighting fix, see #1511 (@keith-hall)
215+- `BAT_CONFIG_PATH` ignored by `bat` if non-existent, see #1550 (@sharkdp)
216+
217+## Other
218+
219+- Performance improvements, see #1421 (@LovecraftianHorror)
220+- Added a new `--diagnostic` option to collect information for bug reports, see #1459 (@sharkdp)
221+- Modified default theme colors to differentiate between a JSON key and a string value, see #1400 (@keith-hall)
222+- Upped min required Rust version to 1.42
223+
224+## Syntaxes
225+
226+- Added Zig syntax, see #1470 (@paulsmith)
227+- Added Lean syntax, see #1446 (@Julian)
228+- Added `.resource` extension for Robot Framework files, see #1386
229+- Added `gnuplot` syntax, see #1431 (@sharkdp)
230+- Highlight *.pac (Proxy auto-config) files as JavaScript, see #1515 (@sharkdp)
231+
232+## New themes
233+
234+- `ansi` replaces `ansi-dark` and `ansi-light`, see #1104 and #1412 (@mk12). **Breaking change:** users that were previously using one of the `ansi-*` themes should switch to `ansi`.
235+- The Gruvbox theme has been updated, see #1291 (@j0hnmeow). **Breaking change:** users that were previously using `gruvbox` or `gruvbox-white` should update and use `gruvbox-dark`/`gruvbox-light` instead.
236+
237+## `bat` as a library
238+
239+- The following `PrettyPrinter` methods have been removed (they were previously deprecated):
240+ - `input_stdin_with_name`
241+ - `input_from_bytes_with_name`
242+ - `input_from_reader_with_name`
243+ - `vcs_modification_markers` (if the `git` feature is not enabled)
244+
245+
246+# v0.17.1
247+
248+## Bugfixes
249+
250+- Running `bat` without arguments fails ("output file is also an input"), see #1396
251+
252+
253+# v0.17.0
254+
255+## Features
256+
257+- Added a new `--style` value, `rule`, which adds a simple horizontal ruled line between files, see #1276 (@tommilligan)
258+- Pass `-S` ("chop long lines") to `less` if `--wrap=never` is set in `bat`, see #1255 (@gahag)
259+
260+## Bugfixes
261+
262+- Detect infinite loop when input and output are the same, see #1193 and #1197 (@niklasmohrin)
263+- Throw an error when `bat` is being used as `pager`, see #1343 (@adrian-rivera)
264+- Bash syntax highlighting not selected for `*.ebuild` and `*.eclass` files, see #1292 (@sharkdp)
265+- Fix `zsh` completion when using `-p`, see #1320 (@xzfc)
266+
267+## Other
268+
269+- Add note to refer to see detailed help with `--help` (and vice versa with `-h`), see #1215 (@henil)
270+- Add a `Contributors` section to `README`, see #1348 (@adrian-rivera)
271+
272+## Syntaxes
273+
274+- Manpage syntax highlighting has been improved, see #1315 (@keith-hall)
275+- Add Svelte file syntax, see #1285 (@kjmph)
276+
277+## New themes
278+
279+- Coldark, see #1329 (@armandphilippot)
280+
281+
282+# v0.16.0
283+
284+## Features
285+
286+- Added support for the `NO_COLOR` environment variable, see #1021 and #1031 (@eth-p)
287+- Added `-P` short flag to disable paging, see #1075 and #1082 (@LordFlashmeow)
288+- Added `--force-colorization`/`-f` flag to provide an alias for forced color and decoration output, see #1141 (@alexanderkarlis)
289+
290+## Bugfixes
291+
292+- Fixed non-printable characters display for redirected output, see #1061 (@gsomix)
293+- Handle file extension conflicts in `--list-languages`, see #1076 and #1135 (@Kienyew)
294+
295+## Other
296+
297+- Switched to "·" (U+00B7) Middle Dot from "•" (U+2022) Bullet for non-printing spaces, see #1056 and #1100 (@LordFlashmeow)
298+- Added zsh shell completion script, see #1136 (@Kienyew)
299+- Improved `--help` text (@sharkdp)
300+- Added custom languages/themes sections to manpage (@eth-p)
301+
302+## Syntaxes
303+
304+- Update AsciiDoc syntax, see #1034 (@rxt1077)
305+- GLSL (@caioalonso)
306+- Add Nginx and Apache config file syntax, see #1137 (@kjmph, @niklasmohrin)
307+- Use `fstab` syntax for `crypttab` files, see #1073 (@sharkdp)
308+- Support syntax highlighting for files in `$XDG_CONFIG_HOME/git/`, see #1191 (@ahmedelgabri)
309+
310+## New themes
311+
312+- Gruvbox, see #1069 (@kyleondy)
313+- base16-256 for [base16-shell](https://github.com/chriskempson/base16-shell) users, see #1111 (@mk12)
314+
315+## `bat` as a library
316+
317+- Add APIs to provide `Input` descriptions with `InputDescription` (@eth-p)
318+- Add function to directly provide `Input`s to `PrettyPrinter` (@eth-p)
319+- **Breaking:** `Input::theme_preview_file` is no longer available. (@eth-p)
320+
321+## Packaging
322+
323+- Removed build dependency on `liquid` (@sharkdp).
324+
325+# v0.15.4
326+
327+## Bugfixes
328+
329+- Added missing Solarized themes, see #1027
330+- Fixed highlighting bug in Haskell source files, see #1026
331+
332+# v0.15.3
333+
334+## Bugfixes
335+
336+- Cannot run `bat` with relative paths, see #1022
337+- bat mishighlights Users that start with digits in SSH config, see #984
338+
339+## New syntaxes
340+
341+- SML, see #1005 (@kopecs)
342+
343+## Other
344+
345+- Some syntaxes and themes have been updated to the latest version
346+
347+# v0.15.2
348+
349+## Bugfixes
350+
351+- Fix syntax detection for files called 'rails', see #1008
352+- Fix potential errors with syntax detection for symlinked files, see #1001
353+- `--map-syntax` doesn't work with names provided through `--file-name` (@eth-p)
354+
355+## Other
356+
357+- Add padding above headers when not using a grid, see #968 and #981 (@pt2121)
358+- bat now prints an error if an invalid syntax is specified via `-l` or `--map-syntax`, see #1004 (@eth-p)
359+
360+## `bat` as a library
361+
362+- `PrettyPrinter::vcs_modification_markers` has been marked deprecated when building without the `git` feature, see #997 and #1020 (@eth-p, @sharkdp)
363+
364+## Packaging
365+
366+- Compilation problems with `onig_sys` on various platforms have been resolved by upgrading to `syntect 4.2`, which includes a new `onig` version that allows to build `onig_sys` without the `bindgen` dependency. This removes the need for `libclang(-dev)` to be installed to compile `bat`. Package maintainers might want to remove `clang` as a build dependency. See #650 for more details.
367+
368+# v0.15.1
369+
370+## Bugfixes
371+
372+- Fix highlighting of Markdown files, see #963 and #977
373+- Fix `base16` theme (was broken since in v0.14), see #972, #934 and #979 (@mk12).
374+ Users suffering from #865 ("no color for bat in ssh from a Windows client") can use the `ansi-dark` and `ansi-light` themes from now on.
375+
376+## New syntaxes
377+
378+- Fortran, see #957
379+- Email (@mariozaizar)
380+- QML, see #962 (@pylipp)
381+
382+# v0.15.0
383+
384+## Features
385+
386+- Add a new `--diff`/`-d` option that can be used to only show lines surrounding
387+ Git changes, i.e. added, removed or modified lines. The amount of additional
388+ context can be controlled with `--diff-context=N`. See #23 and #940
389+
390+## Bugfixes
391+
392+- Error message printed in the middle of the output for another file, see #946
393+- Performance improvements when using custom caches (via `bat cache --build`): the `bat` startup time should now be twice as fast (@lzutao).
394+
395+## Themes
396+
397+- Updated version of the Solarized dark/light themes, see #941
398+
399+## `bat` as a library
400+
401+- There are a few changes in the "low level" API (the `Config` struct has changed and
402+ the error handler needs a new `&mut dyn Write` argument). The high-level API is not
403+ affected.
404+
405+# v0.14.0
406+
407+## Features
408+
409+- Added a new `--file-name <name>…` option to overwrite the displayed filename(s)
410+ in the header. This is useful when piping input into `bat`. See #654 and #892 (@neuronull).
411+- Added a new `--generate-config-file` option to create an initial configuration file
412+ at the right place. See #870 (@jmick414)
413+
414+## Bugfixes
415+
416+- Performance problems with C# source code have been fixed, see #677 (@keith-hall)
417+- Performance problems with Makefiles have been fixed, see #750 (@keith-hall)
418+- Fix bug when highlighting Ruby files with unindented heredocs, see #914 (@keith-hall)
419+- A highlighting problem with Rust source code has been fixed, see #924 (@keith-hall)
420+- Windows: short files that do not require paging are displayed and then lost, see #887
421+- `--highlight-line` did not work correctly in combination with `--tabs=0` and `--wrap=never`,
422+ see #937
423+
424+## Other
425+
426+- When saving/reading user-provided syntaxes or themes, `bat` will now maintain a
427+ `metadata.yaml` file which includes information about the `bat` version which was
428+ used to create the cached files. When loading cached files, we now print an error
429+ if they have been created with an incompatible version. See #882
430+- Updated `liquid` dependency to 0.20, see #880 (@ignatenkobrain)
431+
432+## `bat` as a library
433+
434+- A completely new "high level" API has been added that is much more convenient
435+ to use. See the `examples` folder for the updated code. The older "low level"
436+ API is still available (basically everything that is not in the root `bat`
437+ module), but has been refactored quite a bit. It is recommended to only use
438+ the new "high level" API, if possible. This will be much easier to keep stable.
439+ Note that this should still be considered a "beta" release of `bat`-as-a-library.
440+ For more details and some screenshots of the example programs, see #936.
441+- Stripped out a lot of binary-only dependencies, see #895 and #899 (@dtolnay)
442+
443+ This introduces a `features = ["application"]` which is enabled by default and pulls in
444+ everything required by `bat` the application. When depending on bat as a library, downstream
445+ `Cargo.toml` should disable this feature to cut out inapplicable heavy dependencies:
446+ ``` toml
447+ [dependencies]
448+ bat = { version = "0.14", default-features = false }
449+ ```
450+ Other optional functionality has also been put behind features: `paging` and `git` support.
451+- Allow using the library with older syntect, see #896 and #898 (@dtolnay)
452+
453+## New syntaxes
454+
455+- Rego, see #872 (@patrick-east)
456+- Stylo, see #917
457+
458+
459+# v0.13.0
460+
461+## `bat` as a library
462+
463+Beginning with this release, `bat` can be used as a library (#423).
464+
465+This was a huge effort and I want to thank all people who made this possible: @DrSensor, @mitsuhiko, @mre, @eth-p!
466+
467+- Initial attempt in #469 (@mitsuhiko)
468+- Second attempt, complete restructuring of the `bat` crate, see #679 (@DrSensor)
469+- Updates to example, public API, error handling, further refactoring: #693 #873 #875 (@sharkdp)
470+
471+I want to stress that this is the very first release of the library. Things are very likely to change. A lot of things are still missing (including the documentation).
472+
473+That being said, you can start using it! See the example programs in [`examples/`](https://github.com/sharkdp/bat/tree/master/examples).
474+
475+You can see the API documentation here: https://docs.rs/bat/
476+
477+## Features
478+
479+- (**Breaking change**) Glob-based syntax mapping, see #877 and #592. With this change,
480+ users need to update their bat config files (`bat --config-file`), if they have any `--map-syntax` settings
481+ present.
482+
483+ The option now works like this:
484+ ```bash
485+ --map-syntax <glob-pattern>:<syntax-name>
486+ ```
487+
488+ For more information, see the `--help` text, the man page or the README.
489+
490+ This new feature allows us to properly highlight files like:
491+ * `/etc/profile`
492+ * `~/.ssh/config`
493+
494+- `--highlight-line` now accepts line ranges, see #809 (@lkalir)
495+- Proper wrapping support for output with wide Unicode characters, see #811 #787 and #815 (@Kogia-sima)
496+- A lot of updates to existing syntaxes via #644 (@benwaffle, @keith-hall)
497+- `BAT_CACHE_PATH` can be used to place cached `bat` assets in a non-standard path, see #829 (@neuronull)
498+- Support combination of multiple styles at the same time, see #857 (@aslpavel)
499+
500+## Bugfixes
501+
502+- Do not pass '--no-init' on newer less versions, see #749 and #786 (@sharkdp)
503+- 'bat cache' still takes precedence over existing files, see #666 (@sharkdp)
504+- `.sc` files should be treated as scala files, see #443 (@benwaffle)
505+- Allow underscores and dashes in page names, see #670 (@LunarLambda)
506+- Keep empty lines empty, see #601 (@mbarbar)
507+- Wrapping does not work when piping, see #758 (@fusillicode, @allevo, @gildo)
508+- Allow for non-unicode filenames, see #225 (@sharkdp)
509+- Empty file without header produces incomplete grid, see #798 (@eth-p)
510+- Files named `build` don't respect shebang lines, see #685 (@sharkdp)
511+
512+## Other
513+
514+- Parametrizable names for man page and shell completion files, see #659 #673 #656 (@eth-p)
515+- Enabled LTO, making `bat` about 10% faster, see #719 (@bolinfest, @sharkdp)
516+- Suggestions non how to configure `bat` for MacOS dark mode, see README (@jerguslejko)
517+- Extended ["Integration with other tools"](https://github.com/sharkdp/bat#integration-with-other-tools) section (@eth-p)
518+- Updated [instrutions on how to use `bat` as a `man`-pager](https://github.com/sharkdp/bat#man), see #652, see #667 (@sharkdp)
519+- Add section concerning file encodings, see #688 and #568 (@sharkdp)
520+- Updated sort order of command-line options in `--help` text and manpage, see #653 and #700 (@hrlmartins)
521+- Updates to the man page syntax, see #718 (@sharkdp)
522+- Japanese documentation updates, see #863 (@k-ta-yamada, @sorairolake and @wt-l00)
523+- Accept "default" as a theme, see #757 (@fvictorio)
524+- Updated Windows installation instructions, see #852 (@sorenbug)
525+- Updated man page, see #573 (@sharkdp)
526+
527+## New syntaxes
528+
529+- Jinja2, see #648 (@Martin819)
530+- SaltStack SLS, see #658 (@Martin819)
531+- `/etc/fstab`, see #696 (@flopp and @eth-p)
532+- `/etc/group` and `/etc/passwd`, see #698 (@argentite)
533+- `/proc/cpuinfo` and `/proc/meminfo`, see #593 (@sharkdp)
534+- Nim, see #542 (@sharkdp)
535+- Vue, see #826 (@chaaaaarlotte)
536+- CoffeScript, see #833 (@sharkdp)
537+
538+## New themes
539+
540+- Dracula, see #687 (@clarfon)
541+- Nord, see #760 (@crabique)
542+- Solarized light and dark, see #768 (@hakamadare)
543+
544+## Packaging
545+
546+- `bat` is now in the official Ubuntu and Debian repositories, see #323 and #705 (@MarcoFalke)
547+- `bat` can now be installed via MacPorts, see #675 (@bn3t)
548+- Install fish completions into 'vendor_completions.d', see #651 (@sharkdp)
549+
550+## Thanks
551+
552+- To @eth-p for joining me as a maintainer! I'm very grateful for all the work you put into
553+ managing and responding to issues, improving our deployment, adding PR/issue templates (#837) as
554+ well as fixing bugs and implementing new features.
555+
556+# v0.12.1
557+
558+## Bugfixes
559+
560+- Fixes a bug for older Windows versions (*"The procedure entry point `CreateFile2` could not be located"*), see #643 (@rivy)
561+
562+# v0.12.0
563+
564+## Features
565+
566+- Binary file content can now be viewed with `bat -A`, see #623, #640 (@pjsier and @sharkdp)
567+- `bat` can now be used as a man pager. Take a look at the README and #523 for more details.
568+- Add new style component to separate multiple `--line-range`s, see #570 (@eth-p)
569+- Added `-L` as an alias for `--list-languages`
570+
571+## Bugfixes
572+
573+- Output looks unbalanced when using '--style=grid,numbers' without 'header', see #571 (@eth-p)
574+- issues with filenames starting with "cache", see #584
575+- Can't build cache with new theme without creating cache dir, see #576 (@frm)
576+- `--terminal-width -10` is parsed incorrectly, see #611
577+
578+## Other
579+
580+- Added fish completions to DEB package, see #554
581+
582+## New syntaxes
583+
584+- Emacs Org mode, see #36 (@bricewge)
585+- `requirements.txt`
586+- DotENV `.env`
587+- SSH config syntax (`-l ssh_config`), see #582 (@issmirnov)
588+- `/etc/hosts`, see #583 (@issmirnov)
589+- GraphQL, see #625 (@dandavison)
590+- Verilog, see #616
591+- SCSS and Sass, see #637
592+- `strace` syntax, see #599
593+
594+## Packaging
595+
596+- `bat` is now in the official Gentoo repositories, see #588 (@toku-sa-n)
597+- `bat` is now in the official Alpine Linux repositories, see #586 (@5paceToast)
598+- `bat` is in the official Fedora repositories, see #610 (@ignatenkobrain)
599+
600+# v0.11.0
601+
602+## Features
603+
604+- Three new special color themes are available: `ansi-light`, `ansi-dark` and `base16`. These
605+ are useful for people that often switch from dark to light themes in their terminal emulator
606+ or for people that want the colors to match their terminal theme colors. For more details,
607+ see #543 and #490 (@mk12, implementation idea by @trishume)
608+- Hand-written auto completion script for Fish shell, see #524 and #555 (@ev-dev and @eth-p)
609+- The `-p`/`--plain` option can now be used twice (typically `-pp`). The first `-p` switches the
610+ `--style` to "plain". The second `-p` disables the pager. See #560 and #552 (@eth-p)
611+
612+## Bugfixes
613+
614+- Do not replace arguments to `less` when using `--pager`, see #509
615+- Binary files will now be indicated by a warning in interactive mode, see #530 #466 #550 (@maxfilov)
616+- Empty files are (once again) printed with a single header line, see #504 and #566 (@reidwagner
617+ and @sharkdp)
618+- `--terminal-width=0` is now disallowed, see #559 (@eth-p)
619+- Accidental printing of files named `cache`, see #557
620+
621+## Other
622+
623+- New integration tests, see #500 and #502 (@reidwagner and @sharkdp)
624+- New ["Integration with other tools"](https://github.com/sharkdp/bat#integration-with-other-tools) section in the README.
625+- Migrated to Rust 2018 (@expobrain)
626+
627+## New syntaxes
628+
629+- F# syntax has been updated, see #531 (@stroborobo)
630+- Fish shell, see #548 (@sanga)
631+
632+## Packaging
633+
634+- `bat` is now available on Chocolatey, see #541 (@rasmuskriest)
635+
636+# v0.10.0
637+
638+## Features
639+
640+- Added new `--highlight-line <N>` option, see #453, #346 and #175 (@tskinn and @sharkdp)
641+
642+## Changes
643+
644+- **Change the default configuration directory on macOS** to `~/.config/bat`, see #442 (@lavifb). If you are on macOS, you need to copy your configuration directory from the previous place (`~/Library/Preferences/bat`) to the new place (`~/.config/bat`).
645+- Completely disabled the generation of shell completion files, see #372
646+- Properly set arguments to `less` if `PAGER` environment variable contains something like `less -F` (which is missing the `-R` option), see #430 (@majecty)
647+- Report the name of missing files, see #444 (@ufuji1984)
648+- Don't start pager if file doesn't exist, see #387
649+- Rename `bat cache --init` to `bat cache --build`, see #498
650+- Move the `--config-dir` and `--cache-dir` options from `bat cache` to `bat` and hide them from the help text.
651+
652+## Bugfixes
653+
654+- Blank line at the end of output when using `--style=plain`, see #379
655+- EOF must be sent twice on stdin if no other input is sent, see #477 (@reidwagner)
656+
657+## New syntaxes
658+
659+- Twig (@ahmedelgabri)
660+- `.desktop` files (@jleclanche)
661+- AsciiDoc (@markusthoemmes)
662+- Assembly (x86_64 and ARM)
663+- Log files (@caos21)
664+- Protobuf and ProtobufText (@caos21)
665+- Terraform (@caos21)
666+- Jsonnet (@hfm)
667+- Varlink (@haraldh)
668+
669+## Other
670+
671+- Added Japanese version of README (@sh-tech and @object1037)
672+- Code improvements (@barskern)
673+
674+# v0.9.0
675+
676+## Features
677+
678+- A new `-A`/`--show-all` option has been added to show and highlight non-printable characters (in analogy to GNU `cat`s option):
679+
680+ ![](https://camo.githubusercontent.com/c3e769482ef3184f6be6adaa34bdc8d19c378254/68747470733a2f2f692e696d6775722e636f6d2f324b54486859542e706e67)
681+
682+ see #395 and #381 for more details.
683+
684+- Added `--pager` option (to configure the pager from the configuration file), see #362 (@majecty)
685+
686+- Added `BAT_CONFIG_PATH` environment variable to set a non-default path for `bat`s configuration file, see #375 (@deg4uss3r)
687+
688+- Allow for multiple occurrences of `--style` to allow for the configuration
689+ of styles from the config file, see #367 (@sindreij)
690+
691+- Allow for multiple `--line-range` arguments, see #23
692+
693+- The `--terminal-width` option can now also accept offsets, see #376
694+
695+## Changes
696+
697+- Use of italics is now *disabled by default* (see #389 for details). They can be
698+ re-enabled by adding `--italic-text=always` to your configuration file.
699+
700+- The default tab-width has been set to 4.
701+
702+- Added new "Sublime Snazzy" theme.
703+
704+- Shell completions are currently *not* shipped anymore, see #372 for details.
705+
706+## Bugfixes
707+
708+- Avoid endless recursion when `PAGER="bat"`, see #383 (@rodorgas)
709+
710+## Other
711+
712+- `bat` is now available on openSUSE, see #405 (@dmarcoux)
713+
714+- Added section about the new configuration file in the README (@deg4uss3r)
715+
716+- Chinese translation of README (@chinanf-boy)
717+
718+- Re-written tests for `--tabs` (@choznerol)
719+
720+- Speed up integration tests, see #394
721+
722+# v0.8.0
723+
724+## Features
725+
726+- Support for a configuration file with the following simple format:
727+
728+ ```bash
729+ --tabs=4
730+ --theme="Sublime Snazzy"
731+
732+ # A line-comment
733+ --map-syntax .ignore:.gitignore
734+ --map-syntax PKGBUILD:bash
735+ --map-syntax Podfile:ruby
736+
737+ # Flags and options can also be on a single line:
738+ --wrap=never --paging=never
739+ ```
740+
741+ The configuration file path can be accessed via `bat --config-file`. On Linux,
742+ it is stored in `~/.config/bat/config`.
743+
744+- Support for the `BAT_OPTS` environment variable with the same format as specified
745+ above (in a single line). This takes precedence over the configuration file.
746+
747+ See also #310.
748+
749+- Support for custom syntax mappings via the `-m`/`--max-syntax` option.
750+
751+ This allows users to (re)map certain file extensions or file names to an existing syntax:
752+
753+ ``` bash
754+ bat --map-syntax .config:json ...
755+ ```
756+
757+ The option can be use multiple times. Note that you can easily make these mappings permanent by using bats new configuration file.
758+
759+ See #169
760+
761+- Support pager command-line arguments in `PAGER` and `BAT_PAGER`, see #352 (@Foxboron)
762+
763+- Add support for wildcards in Windows CMD, see #309 (@zxey)
764+
765+- First-line syntax detection for all input types, see #205
766+
767+- Encoding support for UTF-16LE and UTF-16BE, see #285
768+
769+- New syntaxes: Robot framework (@sanga)
770+
771+## Changes
772+
773+- Binary files are now detected and not displayed when the output goes to an interactive terminal, see #205
774+
775+## Bugfixes
776+
777+- JavaDoc comments break syntax highlighting in .java files, see #81
778+
779+- Bat Panics on Haskell Source Code, see #314
780+
781+## Other
782+
783+- Better `-h` and `--help` texts.
784+
785+- Updated documentation on how to configure `bat`s pager
786+
787+- Updated documentation for light backgrounds, see #328 (@russtaylor)
788+
789+- Generate shell completions during build, see #115 (@davideGiovannini)
790+
791+- A lot of new tests have been written
792+
793+- `bat` is now available via [Termux](https://termux.com/), see #341 (@fornwall)
794+
795+- `bat` is now available via [nix](https://nixos.org/nix), see #344 (@mgttlinger)
796+
797+- `bat` is now available via [Docker](https://hub.docker.com/r/danlynn/bat/), see #331 (@danlynn)
798+
799+# v0.7.1
800+
801+## Features
802+
803+- Use the `ansi_colours` package by @mina86 for better true-color approximation on 8 bit color terminals, see #319 and #202.
804+
805+## Bugfixes
806+
807+- Bat Panics on Haskell Source Code, see #314
808+- Disable wrapping when `--style=plain`/`-p` is used, see #289
809+
810+## Other
811+
812+- Added Ansible install instructions (@aeimer)
813+- Added section about Cygwin to the README (@eth-p)
814+
815+# v0.7.0
816+
817+## Features
818+
819+- Tabs are now (optionally) expanded to spaces. This can be controlled with the new
820+ `--tabs` command-line option or the `BAT_TABS` environment variable. The
821+ new feature also closes two bugs #166 and #184. For more information, see #302 (@eth-p).
822+
823+- Added support for the `BAT_STYLE` environment variable, see #208 (@ms2300)
824+
825+- Added `OneHalf` theme for terminals with a light-gray background, see #256
826+
827+- Added new syntaxes for CSV, JSX in JavaScript and TypeScript, Cabal, Dart,
828+ F#, PureScript, Swift, Crystal, PowerShell (Many Thanks to @tobenna and @mimadrid)
829+
830+## Changes
831+
832+- Query `git diff` only when needed, see #303 (@ShikChen)
833+
834+- Disable wrapping when `--plain` is used, see #289 (@eth-p)
835+
836+## Bugfixes
837+
838+- Can read files named `cache`, see #275 (@BK1603)
839+
840+- A lot of bugfixes for Windows, see #252, #264
841+
842+- Detect `less` reliably and in a portable way, see #271 and #290 (@Aankhen)
843+
844+- last decoration line is not formatted properly with `--wrap never`, see #299 (@Rogach)
845+
846+- Do not show file header for directories, see #292
847+
848+## Other
849+
850+- Enabled a new `aarch64` build target, see #258 (@rachitchokshi)
851+
852+- Provide Debian packages for `armhf`, see #280 (@rachitchokshi)
853+
854+- Added README section about "`bat` on Windows" (@Aankhen)
855+
856+- Windows installation via scoop (@meltinglava)
857+
858+# v0.6.1
859+
860+## Bugfixes
861+
862+- Fixed panic when running `bat --list-languages | head`, see #232 (@mchlrhw)
863+- Respect `--color` settings for `--list-themes` and `--list-languages`, see #233
864+- Git modifications now work on Windows
865+
866+## Other
867+
868+- There will be auto-generated Windows releases, starting with this version (@anykao)
869+
870+# v0.6.0
871+
872+## Features
873+
874+- The `--list-themes` option now shows a preview for each highlighting theme (@ms2300)
875+- Added `-p`/`--plain` as an alias for `--style=plain`, see #212 (@ms2300)
876+- Major refactorings, enabling some progress on #150. In non-interactive mode, `bat` will now copy input bytes 1:1.
877+- New languages: Elm, Kotlin, Puppet, TypeScript, see #215 #216 #217 #218
878+- New syntax highlighting theme: zenburn (@colindean)
879+
880+## Changes
881+
882+- New themes in `$BAT_CONFIG_DIR/themes` are now loaded *in addition* to
883+ the default themes (they may also override), see #172
884+- The `Default.tmTheme` symlink is not necessary anymore.
885+
886+## Bugfixes
887+
888+* Using `bat cache --init` leads to duplicated syntaxes, see #206
889+
890+## Other
891+
892+* Extended and cleaned-up `--help` text.
893+* Added initial version of a man page, see #52
894+* New README sections: *Development* and *Troubleshooting*, see #220
895+
896+# v0.5.0
897+
898+## Features
899+
900+- Added `--line-range n:m` option to print a range of lines, see #159 (@tskinn)
901+- The syntax highlighting theme can now be controlled by the `BAT_THEME` environment variable, see [README](https://github.com/sharkdp/bat#highlighting-theme) and #177 (@mandx)
902+- The `PAGER` and `BAT_PAGER` environment variables can be used to control the pager that `bat` uses, see #158 and the [new README section](https://github.com/sharkdp/bat#using-a-different-pager)
903+- Added syntax highlighting for Nix, see #180
904+- Added syntax highlighting for AWK (Gert Hulselmans)
905+
906+## Changes
907+
908+- The customization of syntax sets and theme sets is now separated. Syntax definitions are now loaded *in addition* to the ones that are stored in the `bat` binary by default. Please refer to these new sections in the README: [Adding new syntaxes](https://github.com/sharkdp/bat#adding-new-syntaxes--language-definitions), [Adding new themes](https://github.com/sharkdp/bat#adding-new-themes), also see #172
909+- The color for the filename is now the default foreground color. The colors for the grid and the line numbers is now determined from the syntax highlighting theme, which now also works for light backgrounds, see #178.
910+
911+## Bugfixes
912+
913+- Escape Sequences get partially stripped, see #182 (@eth-p)
914+- Use separate Git repository for snapshot testing, see #165 and #161
915+- Markdown breaking on JavaScript, see #183
916+
917+## Other
918+
919+- Binaries for armv7 are now provided, see #196
920+- `bat` is now in the official [Arch package repositories](https://www.archlinux.org/packages/community/x86_64/bat/).
921+- Optimizations in the RGB => 8-bit conversion (@mina86)
922+
923+# v0.4.1
924+
925+(this is just a small bugfix release, see 0.4.0 for all features and changes)
926+
927+## Bugfixes
928+
929+- Fix problem with `cargo test` when `bat` is not checked out in a Git repository, see #161
930+
931+# v0.4.0
932+
933+## Features
934+
935+* Support for line-wrapping, see #54 and #102 (@eth-p)
936+* New and updated `--style` parameter, see #74 and README (@pitkley)
937+* Added `--theme` and `--list-themes` options, see #89 (@rleungx)
938+* Added syntax highlighting for: Julia (@iamed2), Dockerfiles, VimL, CMake, INI, Less
939+* Added a few popular Sublime Text highlighting themes, see #133
940+* Support for bold, italic and underline font styles, see #96
941+* Support for 32bit systems is now available, see #84
942+* Added `-u` and `-n` options, see #134
943+* ANSI color support on Windows 10
944+
945+## Changes
946+
947+* The customization folder for own syntaxes has been renamed from `syntax` to `syntaxes`, see README.
948+* Changed Markdown syntax to the default Sublime Text syntax, see #157
949+* Sorted language listing (@rleungx)
950+* Command line arguments like `--theme` or `--color` can now override themselves.
951+* Improved `--help` text.
952+
953+## Bugfixes
954+
955+- Fixed crash for (really) small terminal sizes, see #117 (@eth-p)
956+- Syntax detection for `.bashrc`, `CMakeLists.txt` etc., see #100
957+- Properly handle lines with invalid UTF-8, see #7 (@BrainMaestro)
958+- Better error handling, see #17 (@rleungx and @sharkdp)
959+- Proper handling of UTF-8 characters in `less`, see #98 (@ghuls)
960+- Build fix on nightly, see #148 (@tathanhdinh)
961+
962+## Other
963+
964+- [Comparison with alternative projects](https://github.com/sharkdp/bat/blob/master/doc/alternatives.md).
965+- New "bat" logo in the README, see #119 (@jraulhernandezi)
966+- Output test cases (@BrainMaestro)
967+- Lots of great refactoring work (@BrainMaestro)
968+
969+# v0.3.0
970+
971+## Features
972+
973+* Automatic paging by integrating with `less`, see #29 (@BrainMaestro)
974+* Added support for reading from standard input, see #2
975+* Added support for writing to non-interactive terminals (pipes, files, ..); new
976+ `--color=auto/always/never` option, see #26 (@BrainMaestro)
977+* Added `--list-languages` option to print all available syntaxes, see #69 (@connorkuehl)
978+* New option to specify the syntax via `-l`/`--language`, see #19 (@BrainMaestro)
979+* New option to control the output style (`--style`), see #5 (@nakulcg)
980+* Added syntax highlighting support for TOML files, see #37
981+
982+## Changes
983+
984+* The `init-cache` sub-command has been removed. The cache can now be controlled via
985+ `bat cache`. See `bat cache -h` for all available commands.
986+
987+## Bug fixes
988+
989+* Get git repository from file path instead of current directory, see #22 (@nakulcg)
990+* Process substitution can now be used with bat (`bat <(echo a) <(echo b)`), see #80
991+
992+## Thanks
993+
994+I'd like to say a big THANK YOU to all contributors and everyone that has given us
995+some form of feedback.
996+
997+Special thanks go to @BrainMaestro for his huge support with new features, bug reports
998+and code reviews!
999+
1000+# v0.2.3
1001+
1002+- Added a new statically linked version of bat (`..-musl-..`)
1003+
1004+# v0.2.2
1005+
1006+- Remove openssl dependency completely, see #30.
1007+
1008+# v0.2.1
1009+
1010+- Added Elixir syntax, see #25.
1011+- Use libcurl-openssl instead of libcurl-gnutls, see #30.
1012+
1013+# v0.2.0
1014+
1015+- Support for custom syntaxes, add 'Markdown extended' theme
1016+- Bugfix: Git modifications not shown from child folder
1017+
1018+# v0.1.0
1019+
1020+Initial release
CONTRIBUTING.mdnew file+70
@@ -0,0 +1,70 @@
1+# Contributing
2+
3+Thank you for considering to contribute to `bat`!
4+
5+
6+
7+## Add an entry to the changelog
8+
9+If your contribution changes the behavior of `bat` (as opposed to a typo-fix
10+in the documentation), please update the [`CHANGELOG.md`](CHANGELOG.md) file
11+and describe your changes. This makes the release process much easier and
12+therefore helps to get your changes into a new `bat` release faster.
13+
14+The top of the `CHANGELOG` contains a *"unreleased"* section with a few
15+subsections (Features, Bugfixes, …). Please add your entry to the subsection
16+that best describes your change.
17+
18+Entries follow this format:
19+```
20+- Short description of what has been changed, see #123 (@user)
21+```
22+Here, `#123` is the number of the original issue and/or your pull request.
23+Please replace `@user` by your GitHub username.
24+
25+
26+## Development
27+
28+Please check out the [Development](https://github.com/sharkdp/bat#development)
29+section in the README.
30+
31+
32+## Adding a new feature
33+
34+Please consider opening a
35+[feature request ticket](https://github.com/sharkdp/bat/issues/new?assignees=&labels=feature-request&template=feature_request.md)
36+first in order to give us a chance to discuss the feature first.
37+
38+
39+## Adding new syntaxes/languages or themes
40+
41+Before you make a pull request that adds a new syntax or theme, please read
42+the [Customization](https://github.com/sharkdp/bat#customization) section
43+in the README first.
44+
45+If you really think that a particular syntax or theme should be added for all
46+users, please read the corresponding
47+[documentation](https://github.com/sharkdp/bat/blob/master/doc/assets.md)
48+first.
49+
50+
51+## Regression tests
52+
53+You are strongly encouraged to add regression tests. Regression tests are great,
54+not least because they:
55+
56+* ensure that your contribution will never completely stop working,
57+
58+* makes code review easier, because it becomes very clear what the code is
59+ supposed to do.
60+
61+For functional changes, you most likely want to add a test to
62+[`tests/integration_tests.rs`](https://github.com/sharkdp/bat/blob/master/tests/integration_tests.rs).
63+Look at existing tests to know how to write a new test. In short, you will
64+invoke the `bat` binary with a certain set of arguments, and then assert on
65+stdout/stderr.
66+
67+To learn how to write regression tests for theme and syntax changes, read the
68+[Syntax
69+tests](https://github.com/sharkdp/bat/blob/master/doc/assets.md#syntax-tests)
70+section in `assets.md`.
Cargo.lock+716−700
@@ -1,1324 +1,1340 @@
1# This file is automatically @generated by Cargo.
1# This file is automatically @generated by Cargo.
2# It is not intended for manual editing.
2# It is not intended for manual editing.
3+version = 3
4+
3[[package]]
5[[package]]
4−name = "adler32"
6+name = "adler"
5−version = "1.0.3"
7+version = "1.0.2"
6source = "registry+https://github.com/rust-lang/crates.io-index"
8source = "registry+https://github.com/rust-lang/crates.io-index"
9+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
7
10
8[[package]]
11[[package]]
9name = "aho-corasick"
12name = "aho-corasick"
10−version = "0.7.3"
13+version = "0.7.18"
11source = "registry+https://github.com/rust-lang/crates.io-index"
14source = "registry+https://github.com/rust-lang/crates.io-index"
15+checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
12dependencies = [
16dependencies = [
13− "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
17+ "memchr",
14]
18]
15
19
16[[package]]
20[[package]]
17name = "ansi_colours"
21name = "ansi_colours"
18−version = "1.0.1"
22+version = "1.1.1"
19source = "registry+https://github.com/rust-lang/crates.io-index"
23source = "registry+https://github.com/rust-lang/crates.io-index"
24+checksum = "32678233b67f9056b0c144b39d46dc3218637e8d84ad6038ded339e08b19620d"
20dependencies = [
25dependencies = [
21− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
26+ "rgb",
22]
27]
23
28
24[[package]]
29[[package]]
25name = "ansi_term"
30name = "ansi_term"
26−version = "0.11.0"
31+version = "0.12.1"
27−source = "registry+https://github.com/rust-lang/crates.io-index"
28−dependencies = [
29− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
30−]
31−
32−[[package]]
33−name = "argon2rs"
34−version = "0.2.5"
35−source = "registry+https://github.com/rust-lang/crates.io-index"
36−dependencies = [
37− "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
38− "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
39−]
40−
41−[[package]]
42−name = "arrayvec"
43−version = "0.4.10"
44source = "registry+https://github.com/rust-lang/crates.io-index"
32source = "registry+https://github.com/rust-lang/crates.io-index"
33+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
45dependencies = [
34dependencies = [
46− "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
35+ "winapi",
47]
36]
48
37
49[[package]]
38[[package]]
50name = "assert_cmd"
39name = "assert_cmd"
51−version = "0.11.1"
40+version = "2.0.4"
52source = "registry+https://github.com/rust-lang/crates.io-index"
41source = "registry+https://github.com/rust-lang/crates.io-index"
42+checksum = "93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e"
53dependencies = [
43dependencies = [
54− "escargot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
44+ "bstr",
55− "predicates 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
45+ "doc-comment",
56− "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
46+ "predicates",
57− "predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
47+ "predicates-core",
48+ "predicates-tree",
49+ "wait-timeout",
58]
50]
59
51
60[[package]]
52[[package]]
61name = "atty"
53name = "atty"
62−version = "0.2.11"
54+version = "0.2.14"
63source = "registry+https://github.com/rust-lang/crates.io-index"
55source = "registry+https://github.com/rust-lang/crates.io-index"
56+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
64dependencies = [
57dependencies = [
65− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
58+ "hermit-abi",
66− "termion 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
59+ "libc",
67− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
60+ "winapi",
68]
61]
69
62
70[[package]]
63[[package]]
71name = "autocfg"
64name = "autocfg"
72−version = "0.1.2"
65+version = "1.0.1"
73source = "registry+https://github.com/rust-lang/crates.io-index"
66source = "registry+https://github.com/rust-lang/crates.io-index"
67+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
74
68
75[[package]]
69[[package]]
76−name = "backtrace"
70+name = "base64"
77−version = "0.3.16"
71+version = "0.13.0"
78source = "registry+https://github.com/rust-lang/crates.io-index"
72source = "registry+https://github.com/rust-lang/crates.io-index"
79−dependencies = [
73+checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
80− "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
81− "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
82− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
83− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
84− "rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
85−]
86
74
87[[package]]
75[[package]]
88−name = "backtrace-sys"
76+name = "bat"
89−version = "0.1.28"
77+version = "0.21.0"
90−source = "registry+https://github.com/rust-lang/crates.io-index"
91−dependencies = [
78+dependencies = [
92− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
79+ "ansi_colours",
93− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
80+ "ansi_term",
81+ "assert_cmd",
82+ "atty",
83+ "bincode",
84+ "bugreport",
85+ "bytesize",
86+ "clap",
87+ "clircle",
88+ "console",
89+ "content_inspector",
90+ "dirs-next",
91+ "encoding",
92+ "flate2",
93+ "git2",
94+ "globset",
95+ "grep-cli",
96+ "nix",
97+ "once_cell",
98+ "path_abs",
99+ "predicates",
100+ "regex",
101+ "semver",
102+ "serde",
103+ "serde_yaml",
104+ "serial_test",
105+ "shell-words",
106+ "syntect",
107+ "tempfile",
108+ "thiserror",
109+ "unicode-width",
110+ "wait-timeout",
111+ "walkdir",
112+ "wild",
94]
113]
95
114
96[[package]]
115[[package]]
97−name = "base64"
116+name = "bincode"
98−version = "0.10.1"
117+version = "1.3.3"
99source = "registry+https://github.com/rust-lang/crates.io-index"
118source = "registry+https://github.com/rust-lang/crates.io-index"
119+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
100dependencies = [
120dependencies = [
101− "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
121+ "serde",
102]
122]
103
123
104[[package]]
124[[package]]
105−name = "bat"
125+name = "bit-set"
106−version = "0.11.0"
126+version = "0.5.2"
127+source = "registry+https://github.com/rust-lang/crates.io-index"
128+checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
107dependencies = [
129dependencies = [
108− "ansi_colours 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
130+ "bit-vec",
109− "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
110− "assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
111− "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
112− "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
113− "console 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
114− "content_inspector 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
115− "dirs 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
116− "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
117− "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
118− "escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
119− "git2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
120− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
121− "shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
122− "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
123− "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
124− "wild 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
125]
131]
126
132
127[[package]]
133[[package]]
128−name = "bincode"
134+name = "bit-vec"
129−version = "1.1.4"
135+version = "0.6.3"
130source = "registry+https://github.com/rust-lang/crates.io-index"
136source = "registry+https://github.com/rust-lang/crates.io-index"
131−dependencies = [
137+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
132− "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
133− "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
134− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
135−]
136
138
137[[package]]
139[[package]]
138name = "bitflags"
140name = "bitflags"
139−version = "1.0.4"
141+version = "1.3.2"
140source = "registry+https://github.com/rust-lang/crates.io-index"
142source = "registry+https://github.com/rust-lang/crates.io-index"
143+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
141
144
142[[package]]
145[[package]]
143−name = "blake2-rfc"
146+name = "bstr"
144−version = "0.2.18"
147+version = "0.2.17"
145source = "registry+https://github.com/rust-lang/crates.io-index"
148source = "registry+https://github.com/rust-lang/crates.io-index"
149+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
146dependencies = [
150dependencies = [
147− "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
151+ "lazy_static",
148− "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
152+ "memchr",
153+ "regex-automata",
149]
154]
150
155
151[[package]]
156[[package]]
152−name = "build_const"
157+name = "bugreport"
153−version = "0.2.1"
158+version = "0.5.0"
154−source = "registry+https://github.com/rust-lang/crates.io-index"
155−
156−[[package]]
157−name = "byteorder"
158−version = "1.3.1"
159source = "registry+https://github.com/rust-lang/crates.io-index"
159source = "registry+https://github.com/rust-lang/crates.io-index"
160+checksum = "535120b8182547808081a66f1f77a64533c780b23da26763e0ee34dfb94f98c9"
161+dependencies = [
162+ "git-version",
163+ "shell-escape",
164+ "sys-info",
165+]
160
166
161[[package]]
167[[package]]
162−name = "cc"
168+name = "bytemuck"
163−version = "1.0.37"
169+version = "1.7.3"
164source = "registry+https://github.com/rust-lang/crates.io-index"
170source = "registry+https://github.com/rust-lang/crates.io-index"
171+checksum = "439989e6b8c38d1b6570a384ef1e49c8848128f5a97f3914baef02920842712f"
165
172
166[[package]]
173[[package]]
167−name = "cfg-if"
174+name = "bytesize"
168−version = "0.1.9"
175+version = "1.1.0"
169source = "registry+https://github.com/rust-lang/crates.io-index"
176source = "registry+https://github.com/rust-lang/crates.io-index"
177+checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70"
170
178
171[[package]]
179[[package]]
172−name = "clap"
180+name = "cc"
173−version = "2.33.0"
181+version = "1.0.72"
174source = "registry+https://github.com/rust-lang/crates.io-index"
182source = "registry+https://github.com/rust-lang/crates.io-index"
183+checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
175dependencies = [
184dependencies = [
176− "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
185+ "jobserver",
177− "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
178− "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
179− "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
180− "term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
181− "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
182− "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
183− "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
184]
186]
185
187
186[[package]]
188[[package]]
187−name = "clicolors-control"
189+name = "cfg-if"
188version = "1.0.0"
190version = "1.0.0"
189source = "registry+https://github.com/rust-lang/crates.io-index"
191source = "registry+https://github.com/rust-lang/crates.io-index"
190−dependencies = [
192+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
191− "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
192− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
193− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
194− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
195−]
196
193
197[[package]]
194[[package]]
198−name = "cloudabi"
195+name = "clap"
199−version = "0.0.3"
196+version = "2.34.0"
200source = "registry+https://github.com/rust-lang/crates.io-index"
197source = "registry+https://github.com/rust-lang/crates.io-index"
198+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
201dependencies = [
199dependencies = [
202− "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
200+ "ansi_term",
201+ "atty",
202+ "bitflags",
203+ "strsim",
204+ "term_size",
205+ "textwrap",
206+ "unicode-width",
207+ "vec_map",
203]
208]
204
209
205[[package]]
210[[package]]
206−name = "console"
211+name = "clircle"
207−version = "0.7.5"
212+version = "0.3.0"
208source = "registry+https://github.com/rust-lang/crates.io-index"
213source = "registry+https://github.com/rust-lang/crates.io-index"
214+checksum = "e68bbd985a63de680ab4d1ad77b6306611a8f961b282c8b5ab513e6de934e396"
209dependencies = [
215dependencies = [
210− "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
216+ "cfg-if",
211− "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
217+ "libc",
212− "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
218+ "serde",
213− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
219+ "winapi",
214− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
215− "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
216− "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
217− "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
218− "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
219− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
220]
220]
221
221
222[[package]]
222[[package]]
223−name = "constant_time_eq"
223+name = "console"
224−version = "0.1.3"
224+version = "0.15.0"
225−source = "registry+https://github.com/rust-lang/crates.io-index"
226−
227−[[package]]
228−name = "content_inspector"
229−version = "0.2.4"
230source = "registry+https://github.com/rust-lang/crates.io-index"
225source = "registry+https://github.com/rust-lang/crates.io-index"
226+checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31"
231dependencies = [
227dependencies = [
232− "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
228+ "encode_unicode",
229+ "libc",
230+ "once_cell",
231+ "regex",
232+ "terminal_size",
233+ "unicode-width",
234+ "winapi",
233]
235]
234
236
235[[package]]
237[[package]]
236−name = "crc"
238+name = "content_inspector"
237−version = "1.8.1"
239+version = "0.2.4"
238source = "registry+https://github.com/rust-lang/crates.io-index"
240source = "registry+https://github.com/rust-lang/crates.io-index"
241+checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
239dependencies = [
242dependencies = [
240− "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
243+ "memchr",
241]
244]
242
245
243[[package]]
246[[package]]
244name = "crc32fast"
247name = "crc32fast"
245−version = "1.2.0"
248+version = "1.3.0"
246source = "registry+https://github.com/rust-lang/crates.io-index"
249source = "registry+https://github.com/rust-lang/crates.io-index"
250+checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836"
247dependencies = [
251dependencies = [
248− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
252+ "cfg-if",
249]
253]
250
254
251[[package]]
255[[package]]
252−name = "difference"
256+name = "difflib"
253−version = "2.0.0"
257+version = "0.4.0"
254source = "registry+https://github.com/rust-lang/crates.io-index"
258source = "registry+https://github.com/rust-lang/crates.io-index"
259+checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
255
260
256[[package]]
261[[package]]
257−name = "dirs"
262+name = "dirs-next"
258version = "2.0.0"
263version = "2.0.0"
259source = "registry+https://github.com/rust-lang/crates.io-index"
264source = "registry+https://github.com/rust-lang/crates.io-index"
265+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
260dependencies = [
266dependencies = [
261− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
267+ "cfg-if",
262− "dirs-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
268+ "dirs-sys-next",
263]
269]
264
270
265[[package]]
271[[package]]
266−name = "dirs-sys"
272+name = "dirs-sys-next"
267−version = "0.3.1"
273+version = "0.1.2"
268source = "registry+https://github.com/rust-lang/crates.io-index"
274source = "registry+https://github.com/rust-lang/crates.io-index"
275+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
269dependencies = [
276dependencies = [
270− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
277+ "libc",
271− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
278+ "redox_users",
272− "redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
279+ "winapi",
273− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
274]
280]
275
281
282+[[package]]
283+name = "doc-comment"
284+version = "0.3.3"
285+source = "registry+https://github.com/rust-lang/crates.io-index"
286+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
287+
288+[[package]]
289+name = "either"
290+version = "1.6.1"
291+source = "registry+https://github.com/rust-lang/crates.io-index"
292+checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
293+
276[[package]]
294[[package]]
277name = "encode_unicode"
295name = "encode_unicode"
278−version = "0.3.5"
296+version = "0.3.6"
279source = "registry+https://github.com/rust-lang/crates.io-index"
297source = "registry+https://github.com/rust-lang/crates.io-index"
298+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
280
299
281[[package]]
300[[package]]
282name = "encoding"
301name = "encoding"
283version = "0.2.33"
302version = "0.2.33"
284source = "registry+https://github.com/rust-lang/crates.io-index"
303source = "registry+https://github.com/rust-lang/crates.io-index"
304+checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
285dependencies = [
305dependencies = [
286− "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
306+ "encoding-index-japanese",
287− "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
307+ "encoding-index-korean",
288− "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
308+ "encoding-index-simpchinese",
289− "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
309+ "encoding-index-singlebyte",
290− "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)",
310+ "encoding-index-tradchinese",
291]
311]
292
312
293[[package]]
313[[package]]
294name = "encoding-index-japanese"
314name = "encoding-index-japanese"
295version = "1.20141219.5"
315version = "1.20141219.5"
296source = "registry+https://github.com/rust-lang/crates.io-index"
316source = "registry+https://github.com/rust-lang/crates.io-index"
317+checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
297dependencies = [
318dependencies = [
298− "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
319+ "encoding_index_tests",
299]
320]
300
321
301[[package]]
322[[package]]
302name = "encoding-index-korean"
323name = "encoding-index-korean"
303version = "1.20141219.5"
324version = "1.20141219.5"
304source = "registry+https://github.com/rust-lang/crates.io-index"
325source = "registry+https://github.com/rust-lang/crates.io-index"
326+checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
305dependencies = [
327dependencies = [
306− "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
328+ "encoding_index_tests",
307]
329]
308
330
309[[package]]
331[[package]]
310name = "encoding-index-simpchinese"
332name = "encoding-index-simpchinese"
311version = "1.20141219.5"
333version = "1.20141219.5"
312source = "registry+https://github.com/rust-lang/crates.io-index"
334source = "registry+https://github.com/rust-lang/crates.io-index"
335+checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
313dependencies = [
336dependencies = [
314− "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
337+ "encoding_index_tests",
315]
338]
316
339
317[[package]]
340[[package]]
318name = "encoding-index-singlebyte"
341name = "encoding-index-singlebyte"
319version = "1.20141219.5"
342version = "1.20141219.5"
320source = "registry+https://github.com/rust-lang/crates.io-index"
343source = "registry+https://github.com/rust-lang/crates.io-index"
344+checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
321dependencies = [
345dependencies = [
322− "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
346+ "encoding_index_tests",
323]
347]
324
348
325[[package]]
349[[package]]
326name = "encoding-index-tradchinese"
350name = "encoding-index-tradchinese"
327version = "1.20141219.5"
351version = "1.20141219.5"
328source = "registry+https://github.com/rust-lang/crates.io-index"
352source = "registry+https://github.com/rust-lang/crates.io-index"
353+checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
329dependencies = [
354dependencies = [
330− "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
355+ "encoding_index_tests",
331]
356]
332
357
333[[package]]
358[[package]]
334name = "encoding_index_tests"
359name = "encoding_index_tests"
335version = "0.1.4"
360version = "0.1.4"
336source = "registry+https://github.com/rust-lang/crates.io-index"
361source = "registry+https://github.com/rust-lang/crates.io-index"
362+checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
337
363
338[[package]]
364[[package]]
339−name = "error-chain"
365+name = "fancy-regex"
340−version = "0.12.1"
366+version = "0.7.1"
341source = "registry+https://github.com/rust-lang/crates.io-index"
367source = "registry+https://github.com/rust-lang/crates.io-index"
368+checksum = "9d6b8560a05112eb52f04b00e5d3790c0dd75d9d980eb8a122fb23b92a623ccf"
342dependencies = [
369dependencies = [
343− "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
370+ "bit-set",
371+ "regex",
344]
372]
345
373
346[[package]]
374[[package]]
347−name = "escargot"
375+name = "fastrand"
348−version = "0.4.0"
376+version = "1.7.0"
349source = "registry+https://github.com/rust-lang/crates.io-index"
377source = "registry+https://github.com/rust-lang/crates.io-index"
378+checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
350dependencies = [
379dependencies = [
351− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
380+ "instant",
352− "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
353− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
354− "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
355]
381]
356
382
357[[package]]
383[[package]]
358−name = "escargot"
384+name = "flate2"
359−version = "0.5.0"
385+version = "1.0.23"
360source = "registry+https://github.com/rust-lang/crates.io-index"
386source = "registry+https://github.com/rust-lang/crates.io-index"
387+checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af"
361dependencies = [
388dependencies = [
362− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
389+ "cfg-if",
363− "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
390+ "crc32fast",
364− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
391+ "libc",
365− "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
392+ "miniz_oxide",
366]
393]
367
394
368[[package]]
395[[package]]
369−name = "failure"
396+name = "float-cmp"
370−version = "0.1.5"
397+version = "0.9.0"
371source = "registry+https://github.com/rust-lang/crates.io-index"
398source = "registry+https://github.com/rust-lang/crates.io-index"
399+checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
372dependencies = [
400dependencies = [
373− "backtrace 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
401+ "num-traits",
374− "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
375]
402]
376
403
377[[package]]
404[[package]]
378−name = "failure_derive"
405+name = "fnv"
379−version = "0.1.5"
406+version = "1.0.7"
407+source = "registry+https://github.com/rust-lang/crates.io-index"
408+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
409+
410+[[package]]
411+name = "form_urlencoded"
412+version = "1.0.1"
380source = "registry+https://github.com/rust-lang/crates.io-index"
413source = "registry+https://github.com/rust-lang/crates.io-index"
414+checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
381dependencies = [
415dependencies = [
382− "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
416+ "matches",
383− "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
417+ "percent-encoding",
384− "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)",
385− "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
386]
418]
387
419
388[[package]]
420[[package]]
389−name = "flate2"
421+name = "getrandom"
390−version = "1.0.7"
422+version = "0.2.3"
391source = "registry+https://github.com/rust-lang/crates.io-index"
423source = "registry+https://github.com/rust-lang/crates.io-index"
424+checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
392dependencies = [
425dependencies = [
393− "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
426+ "cfg-if",
394− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
427+ "libc",
395− "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
428+ "wasi",
396− "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
397]
429]
398
430
399[[package]]
431[[package]]
400−name = "fnv"
432+name = "git-version"
401−version = "1.0.6"
433+version = "0.3.5"
402source = "registry+https://github.com/rust-lang/crates.io-index"
434source = "registry+https://github.com/rust-lang/crates.io-index"
435+checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899"
436+dependencies = [
437+ "git-version-macro",
438+ "proc-macro-hack",
439+]
403
440
404[[package]]
441[[package]]
405−name = "fuchsia-cprng"
442+name = "git-version-macro"
406−version = "0.1.1"
443+version = "0.3.5"
407source = "registry+https://github.com/rust-lang/crates.io-index"
444source = "registry+https://github.com/rust-lang/crates.io-index"
445+checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"
446+dependencies = [
447+ "proc-macro-hack",
448+ "proc-macro2",
449+ "quote",
450+ "syn",
451+]
408
452
409[[package]]
453[[package]]
410name = "git2"
454name = "git2"
411−version = "0.8.0"
455+version = "0.14.2"
412source = "registry+https://github.com/rust-lang/crates.io-index"
456source = "registry+https://github.com/rust-lang/crates.io-index"
457+checksum = "3826a6e0e2215d7a41c2bfc7c9244123969273f3476b939a226aac0ab56e9e3c"
413dependencies = [
458dependencies = [
414− "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
459+ "bitflags",
415− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
460+ "libc",
416− "libgit2-sys 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)",
461+ "libgit2-sys",
417− "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
462+ "log",
418− "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
463+ "url",
419]
464]
420
465
421[[package]]
466[[package]]
422name = "glob"
467name = "glob"
423−version = "0.2.11"
468+version = "0.3.0"
469+source = "registry+https://github.com/rust-lang/crates.io-index"
470+checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
471+
472+[[package]]
473+name = "globset"
474+version = "0.4.8"
424source = "registry+https://github.com/rust-lang/crates.io-index"
475source = "registry+https://github.com/rust-lang/crates.io-index"
476+checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd"
477+dependencies = [
478+ "aho-corasick",
479+ "bstr",
480+ "fnv",
481+ "log",
482+ "regex",
483+]
425
484
426[[package]]
485[[package]]
427−name = "humantime"
486+name = "grep-cli"
428−version = "1.2.0"
487+version = "0.1.6"
429source = "registry+https://github.com/rust-lang/crates.io-index"
488source = "registry+https://github.com/rust-lang/crates.io-index"
489+checksum = "2dd110c34bb4460d0de5062413b773e385cbf8a85a63fc535590110a09e79e8a"
430dependencies = [
490dependencies = [
491+ "atty",
492+ "bstr",
493+ "globset",
494+ "lazy_static",
495+ "log",
496+ "regex",
497+ "same-file",
498+ "termcolor",
499+ "winapi-util",
500+]
501+
502+[[package]]
503+name = "hashbrown"
504+version = "0.11.2"
505+source = "registry+https://github.com/rust-lang/crates.io-index"
506+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
507+
508+[[package]]
509+name = "hermit-abi"
510+version = "0.1.19"
431− "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
511+source = "registry+https://github.com/rust-lang/crates.io-index"
512+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
513+dependencies = [
514+ "libc",
432]
515]
433
516
434[[package]]
517[[package]]
435name = "idna"
518name = "idna"
436−version = "0.1.5"
519+version = "0.2.3"
437source = "registry+https://github.com/rust-lang/crates.io-index"
520source = "registry+https://github.com/rust-lang/crates.io-index"
521+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
438dependencies = [
522dependencies = [
439− "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
523+ "matches",
440− "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
524+ "unicode-bidi",
441− "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
525+ "unicode-normalization",
442]
526]
443
527
444[[package]]
528[[package]]
445−name = "itoa"
529+name = "indexmap"
446−version = "0.4.4"
530+version = "1.7.0"
531+source = "registry+https://github.com/rust-lang/crates.io-index"
532+checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
533+dependencies = [
534+ "autocfg",
535+ "hashbrown",
536+]
537+
538+[[package]]
539+name = "instant"
540+version = "0.1.12"
447source = "registry+https://github.com/rust-lang/crates.io-index"
541source = "registry+https://github.com/rust-lang/crates.io-index"
542+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
543+dependencies = [
544+ "cfg-if",
545+]
448
546
449[[package]]
547[[package]]
450−name = "kernel32-sys"
548+name = "itertools"
451−version = "0.2.2"
549+version = "0.10.3"
452source = "registry+https://github.com/rust-lang/crates.io-index"
550source = "registry+https://github.com/rust-lang/crates.io-index"
551+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
453dependencies = [
552dependencies = [
454− "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
553+ "either",
455− "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
456]
554]
457
555
458[[package]]
556[[package]]
459−name = "lazy_static"
557+name = "itoa"
460−version = "1.3.0"
558+version = "0.4.8"
461source = "registry+https://github.com/rust-lang/crates.io-index"
559source = "registry+https://github.com/rust-lang/crates.io-index"
560+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
561+
562+[[package]]
563+name = "itoa"
564+version = "1.0.1"
565+source = "registry+https://github.com/rust-lang/crates.io-index"
566+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
567+
568+[[package]]
569+name = "jobserver"
570+version = "0.1.24"
571+source = "registry+https://github.com/rust-lang/crates.io-index"
572+checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
573+dependencies = [
574+ "libc",
575+]
462
576
463[[package]]
577[[package]]
464−name = "lazycell"
578+name = "lazy_static"
465−version = "1.2.1"
579+version = "1.4.0"
466source = "registry+https://github.com/rust-lang/crates.io-index"
580source = "registry+https://github.com/rust-lang/crates.io-index"
581+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
467
582
468[[package]]
583[[package]]
469name = "libc"
584name = "libc"
470−version = "0.2.54"
585+version = "0.2.125"
471source = "registry+https://github.com/rust-lang/crates.io-index"
586source = "registry+https://github.com/rust-lang/crates.io-index"
587+checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
472
588
473[[package]]
589[[package]]
474name = "libgit2-sys"
590name = "libgit2-sys"
475−version = "0.7.11"
591+version = "0.13.2+1.4.2"
476source = "registry+https://github.com/rust-lang/crates.io-index"
592source = "registry+https://github.com/rust-lang/crates.io-index"
593+checksum = "3a42de9a51a5c12e00fc0e4ca6bc2ea43582fc6418488e8f615e905d886f258b"
477dependencies = [
594dependencies = [
478− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
595+ "cc",
479− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
596+ "libc",
480− "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
597+ "libz-sys",
481− "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
598+ "pkg-config",
482]
599]
483
600
484[[package]]
601[[package]]
485name = "libz-sys"
602name = "libz-sys"
486−version = "1.0.25"
603+version = "1.1.3"
487source = "registry+https://github.com/rust-lang/crates.io-index"
604source = "registry+https://github.com/rust-lang/crates.io-index"
605+checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66"
488dependencies = [
606dependencies = [
489− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
607+ "cc",
490− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
608+ "libc",
491− "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
609+ "pkg-config",
492− "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
610+ "vcpkg",
493]
611]
494
612
495[[package]]
613[[package]]
496name = "line-wrap"
614name = "line-wrap"
497version = "0.1.1"
615version = "0.1.1"
498source = "registry+https://github.com/rust-lang/crates.io-index"
616source = "registry+https://github.com/rust-lang/crates.io-index"
617+checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
499dependencies = [
618dependencies = [
500− "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
619+ "safemem",
501]
620]
502
621
503[[package]]
622[[package]]
504name = "linked-hash-map"
623name = "linked-hash-map"
505−version = "0.5.2"
624+version = "0.5.4"
506source = "registry+https://github.com/rust-lang/crates.io-index"
625source = "registry+https://github.com/rust-lang/crates.io-index"
626+checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
507
627
508[[package]]
628[[package]]
509name = "lock_api"
629name = "lock_api"
510−version = "0.2.0"
630+version = "0.4.5"
511source = "registry+https://github.com/rust-lang/crates.io-index"
631source = "registry+https://github.com/rust-lang/crates.io-index"
632+checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109"
512dependencies = [
633dependencies = [
513− "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
634+ "scopeguard",
514]
635]
515
636
516[[package]]
637[[package]]
517name = "log"
638name = "log"
518−version = "0.4.6"
639+version = "0.4.14"
519source = "registry+https://github.com/rust-lang/crates.io-index"
640source = "registry+https://github.com/rust-lang/crates.io-index"
641+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
520dependencies = [
642dependencies = [
521− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
643+ "cfg-if",
522]
644]
523
645
524[[package]]
646[[package]]
525name = "matches"
647name = "matches"
526−version = "0.1.8"
648+version = "0.1.9"
527source = "registry+https://github.com/rust-lang/crates.io-index"
649source = "registry+https://github.com/rust-lang/crates.io-index"
650+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
528
651
529[[package]]
652[[package]]
530name = "memchr"
653name = "memchr"
531−version = "2.2.0"
654+version = "2.4.1"
532source = "registry+https://github.com/rust-lang/crates.io-index"
655source = "registry+https://github.com/rust-lang/crates.io-index"
656+checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
533
657
534[[package]]
658[[package]]
535−name = "miniz-sys"
659+name = "miniz_oxide"
536−version = "0.1.11"
660+version = "0.5.1"
537source = "registry+https://github.com/rust-lang/crates.io-index"
661source = "registry+https://github.com/rust-lang/crates.io-index"
662+checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
538dependencies = [
663dependencies = [
539− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
664+ "adler",
540− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
541]
665]
542
666
543[[package]]
667[[package]]
544−name = "miniz_oxide"
668+name = "nix"
545−version = "0.2.1"
669+version = "0.24.1"
546source = "registry+https://github.com/rust-lang/crates.io-index"
670source = "registry+https://github.com/rust-lang/crates.io-index"
671+checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9"
547dependencies = [
672dependencies = [
548− "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
673+ "bitflags",
674+ "cfg-if",
675+ "libc",
549]
676]
550
677
551[[package]]
678[[package]]
552−name = "miniz_oxide_c_api"
679+name = "normalize-line-endings"
553−version = "0.2.1"
680+version = "0.3.0"
554source = "registry+https://github.com/rust-lang/crates.io-index"
681source = "registry+https://github.com/rust-lang/crates.io-index"
555−dependencies = [
682+checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
556− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
557− "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
558− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
559− "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
560−]
561
683
562[[package]]
684[[package]]
563−name = "nodrop"
685+name = "num-traits"
564−version = "0.1.13"
686+version = "0.2.14"
565source = "registry+https://github.com/rust-lang/crates.io-index"
687source = "registry+https://github.com/rust-lang/crates.io-index"
688+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
689+dependencies = [
690+ "autocfg",
691+]
566
692
567[[package]]
693[[package]]
568−name = "numtoa"
694+name = "once_cell"
569−version = "0.1.0"
695+version = "1.10.0"
570source = "registry+https://github.com/rust-lang/crates.io-index"
696source = "registry+https://github.com/rust-lang/crates.io-index"
697+checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
571
698
572[[package]]
699[[package]]
573name = "onig"
700name = "onig"
574−version = "4.3.2"
701+version = "6.3.1"
575source = "registry+https://github.com/rust-lang/crates.io-index"
702source = "registry+https://github.com/rust-lang/crates.io-index"
703+checksum = "67ddfe2c93bb389eea6e6d713306880c7f6dcc99a75b659ce145d962c861b225"
576dependencies = [
704dependencies = [
577− "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
705+ "bitflags",
578− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
706+ "lazy_static",
579− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
707+ "libc",
580− "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
708+ "onig_sys",
581]
709]
582
710
583[[package]]
711[[package]]
584name = "onig_sys"
712name = "onig_sys"
585−version = "69.1.0"
713+version = "69.7.1"
586source = "registry+https://github.com/rust-lang/crates.io-index"
714source = "registry+https://github.com/rust-lang/crates.io-index"
715+checksum = "5dd3eee045c84695b53b20255bb7317063df090b68e18bfac0abb6c39cf7f33e"
587dependencies = [
716dependencies = [
588− "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
717+ "cc",
589− "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
718+ "pkg-config",
590]
719]
591
720
592[[package]]
721[[package]]
593name = "parking_lot"
722name = "parking_lot"
594−version = "0.8.0"
723+version = "0.11.2"
595source = "registry+https://github.com/rust-lang/crates.io-index"
724source = "registry+https://github.com/rust-lang/crates.io-index"
725+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
596dependencies = [
726dependencies = [
597− "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
727+ "instant",
728+ "lock_api",
598− "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
729+ "parking_lot_core",
599− "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
600]
730]
601
731
602[[package]]
732[[package]]
603name = "parking_lot_core"
733name = "parking_lot_core"
604−version = "0.5.0"
734+version = "0.8.5"
735+source = "registry+https://github.com/rust-lang/crates.io-index"
736+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
737+dependencies = [
738+ "cfg-if",
739+ "instant",
740+ "libc",
741+ "redox_syscall",
742+ "smallvec",
743+ "winapi",
744+]
745+
746+[[package]]
747+name = "path_abs"
748+version = "0.5.1"
605source = "registry+https://github.com/rust-lang/crates.io-index"
749source = "registry+https://github.com/rust-lang/crates.io-index"
750+checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3"
606dependencies = [
751dependencies = [
607− "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
752+ "std_prelude",
608− "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
609− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
610− "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
611− "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)",
612− "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
613− "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
614− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
615]
753]
616
754
617[[package]]
755[[package]]
618name = "percent-encoding"
756name = "percent-encoding"
619−version = "1.0.1"
757+version = "2.1.0"
620source = "registry+https://github.com/rust-lang/crates.io-index"
758source = "registry+https://github.com/rust-lang/crates.io-index"
759+checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
621
760
622[[package]]
761[[package]]
623name = "pkg-config"
762name = "pkg-config"
624−version = "0.3.14"
763+version = "0.3.24"
625source = "registry+https://github.com/rust-lang/crates.io-index"
764source = "registry+https://github.com/rust-lang/crates.io-index"
765+checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
626
766
627[[package]]
767[[package]]
628name = "plist"
768name = "plist"
629−version = "0.4.1"
769+version = "1.3.1"
630source = "registry+https://github.com/rust-lang/crates.io-index"
770source = "registry+https://github.com/rust-lang/crates.io-index"
771+checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225"
631dependencies = [
772dependencies = [
632− "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
773+ "base64",
633− "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
774+ "indexmap",
634− "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
775+ "line-wrap",
635− "line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
776+ "serde",
636− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
777+ "time",
637− "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
778+ "xml-rs",
638]
779]
639
780
640[[package]]
781[[package]]
641name = "predicates"
782name = "predicates"
642−version = "1.0.1"
783+version = "2.1.1"
643source = "registry+https://github.com/rust-lang/crates.io-index"
784source = "registry+https://github.com/rust-lang/crates.io-index"
785+checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c"
644dependencies = [
786dependencies = [
645− "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
787+ "difflib",
646− "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
788+ "float-cmp",
789+ "itertools",
790+ "normalize-line-endings",
791+ "predicates-core",
792+ "regex",
647]
793]
648
794
649[[package]]
795[[package]]
650name = "predicates-core"
796name = "predicates-core"
651−version = "1.0.0"
797+version = "1.0.2"
652source = "registry+https://github.com/rust-lang/crates.io-index"
798source = "registry+https://github.com/rust-lang/crates.io-index"
799+checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451"
653
800
654[[package]]
801[[package]]
655name = "predicates-tree"
802name = "predicates-tree"
656−version = "1.0.0"
803+version = "1.0.4"
657source = "registry+https://github.com/rust-lang/crates.io-index"
804source = "registry+https://github.com/rust-lang/crates.io-index"
805+checksum = "338c7be2905b732ae3984a2f40032b5e94fd8f52505b186c7d4d68d193445df7"
658dependencies = [
806dependencies = [
659− "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
807+ "predicates-core",
660− "treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
808+ "termtree",
661]
809]
662
810
663[[package]]
811[[package]]
664−name = "proc-macro2"
812+name = "proc-macro-error"
813+version = "1.0.4"
814+source = "registry+https://github.com/rust-lang/crates.io-index"
815+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
816+dependencies = [
817+ "proc-macro-error-attr",
818+ "proc-macro2",
819+ "quote",
820+ "syn",
821+ "version_check",
822+]
823+
824+[[package]]
825+name = "proc-macro-error-attr"
665−version = "0.4.30"
826+version = "1.0.4"
666source = "registry+https://github.com/rust-lang/crates.io-index"
827source = "registry+https://github.com/rust-lang/crates.io-index"
828+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
667dependencies = [
829dependencies = [
668− "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
830+ "proc-macro2",
831+ "quote",
832+ "version_check",
669]
833]
670
834
671[[package]]
835[[package]]
672−name = "quick-error"
836+name = "proc-macro-hack"
673−version = "1.2.2"
837+version = "0.5.19"
674source = "registry+https://github.com/rust-lang/crates.io-index"
838source = "registry+https://github.com/rust-lang/crates.io-index"
839+checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
675
840
676[[package]]
841[[package]]
677−name = "quote"
842+name = "proc-macro2"
678−version = "0.6.12"
843+version = "1.0.36"
679source = "registry+https://github.com/rust-lang/crates.io-index"
844source = "registry+https://github.com/rust-lang/crates.io-index"
845+checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
680dependencies = [
846dependencies = [
681− "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
847+ "unicode-xid",
682]
848]
683
849
684[[package]]
850[[package]]
685−name = "rand"
851+name = "quote"
686−version = "0.4.6"
852+version = "1.0.14"
687source = "registry+https://github.com/rust-lang/crates.io-index"
853source = "registry+https://github.com/rust-lang/crates.io-index"
854+checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d"
688dependencies = [
855dependencies = [
689− "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
856+ "proc-macro2",
690− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
691− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
692− "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
693− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
694]
857]
695
858
696[[package]]
859[[package]]
697−name = "rand"
860+name = "redox_syscall"
698−version = "0.6.5"
861+version = "0.2.10"
699source = "registry+https://github.com/rust-lang/crates.io-index"
862source = "registry+https://github.com/rust-lang/crates.io-index"
863+checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
700dependencies = [
864dependencies = [
701− "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
865+ "bitflags",
702− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
703− "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
704− "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
705− "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
706− "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
707− "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
708− "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
709− "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
710− "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
711− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
712]
866]
713
867
714[[package]]
868[[package]]
715−name = "rand_chacha"
869+name = "redox_users"
716−version = "0.1.1"
870+version = "0.4.0"
717source = "registry+https://github.com/rust-lang/crates.io-index"
871source = "registry+https://github.com/rust-lang/crates.io-index"
872+checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
718dependencies = [
873dependencies = [
719− "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
874+ "getrandom",
720− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
875+ "redox_syscall",
721]
876]
722
877
723[[package]]
878[[package]]
724−name = "rand_core"
879+name = "regex"
725−version = "0.3.1"
880+version = "1.5.5"
726source = "registry+https://github.com/rust-lang/crates.io-index"
881source = "registry+https://github.com/rust-lang/crates.io-index"
882+checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
727dependencies = [
883dependencies = [
728− "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
884+ "aho-corasick",
885+ "memchr",
886+ "regex-syntax",
729]
887]
730
888
731[[package]]
889[[package]]
732−name = "rand_core"
890+name = "regex-automata"
733−version = "0.4.0"
891+version = "0.1.10"
734source = "registry+https://github.com/rust-lang/crates.io-index"
892source = "registry+https://github.com/rust-lang/crates.io-index"
893+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
735
894
736[[package]]
895[[package]]
737−name = "rand_hc"
896+name = "regex-syntax"
738−version = "0.1.0"
897+version = "0.6.25"
739source = "registry+https://github.com/rust-lang/crates.io-index"
898source = "registry+https://github.com/rust-lang/crates.io-index"
740−dependencies = [
899+checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
741− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
742−]
743
900
744[[package]]
901[[package]]
745−name = "rand_isaac"
902+name = "remove_dir_all"
746−version = "0.1.1"
903+version = "0.5.3"
747source = "registry+https://github.com/rust-lang/crates.io-index"
904source = "registry+https://github.com/rust-lang/crates.io-index"
905+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
748dependencies = [
906dependencies = [
749− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
907+ "winapi",
750]
908]
751
909
752[[package]]
910[[package]]
753−name = "rand_jitter"
911+name = "rgb"
754−version = "0.1.4"
912+version = "0.8.31"
755source = "registry+https://github.com/rust-lang/crates.io-index"
913source = "registry+https://github.com/rust-lang/crates.io-index"
914+checksum = "9a374af9a0e5fdcdd98c1c7b64f05004f9ea2555b6c75f211daa81268a3c50f1"
756dependencies = [
915dependencies = [
757− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
916+ "bytemuck",
758− "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
759− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
760]
917]
761
918
762[[package]]
919[[package]]
763−name = "rand_os"
920+name = "rustversion"
764−version = "0.1.3"
921+version = "1.0.6"
765source = "registry+https://github.com/rust-lang/crates.io-index"
922source = "registry+https://github.com/rust-lang/crates.io-index"
766−dependencies = [
923+checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
767− "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
768− "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
769− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
770− "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
771− "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
772− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
773−]
774
924
775[[package]]
925[[package]]
776−name = "rand_pcg"
926+name = "ryu"
777−version = "0.1.2"
927+version = "1.0.9"
778source = "registry+https://github.com/rust-lang/crates.io-index"
928source = "registry+https://github.com/rust-lang/crates.io-index"
779−dependencies = [
929+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
780− "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
781− "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
782−]
783
930
784[[package]]
931[[package]]
785−name = "rand_xorshift"
932+name = "safemem"
786−version = "0.1.1"
933+version = "0.3.3"
787source = "registry+https://github.com/rust-lang/crates.io-index"
934source = "registry+https://github.com/rust-lang/crates.io-index"
788−dependencies = [
935+checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
789− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
790−]
791
936
792[[package]]
937[[package]]
793−name = "rdrand"
938+name = "same-file"
794−version = "0.4.0"
939+version = "1.0.6"
795source = "registry+https://github.com/rust-lang/crates.io-index"
940source = "registry+https://github.com/rust-lang/crates.io-index"
941+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
796dependencies = [
942dependencies = [
797− "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
943+ "winapi-util",
798]
944]
799
945
800[[package]]
946[[package]]
801−name = "redox_syscall"
947+name = "scopeguard"
802−version = "0.1.54"
948+version = "1.1.0"
803source = "registry+https://github.com/rust-lang/crates.io-index"
949source = "registry+https://github.com/rust-lang/crates.io-index"
950+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
804
951
805[[package]]
952[[package]]
806−name = "redox_termios"
953+name = "semver"
807−version = "0.1.1"
954+version = "1.0.7"
808source = "registry+https://github.com/rust-lang/crates.io-index"
955source = "registry+https://github.com/rust-lang/crates.io-index"
809−dependencies = [
956+checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
810− "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)",
811−]
812
957
813[[package]]
958[[package]]
814−name = "redox_users"
959+name = "serde"
815−version = "0.3.0"
960+version = "1.0.136"
816source = "registry+https://github.com/rust-lang/crates.io-index"
961source = "registry+https://github.com/rust-lang/crates.io-index"
962+checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
817dependencies = [
963dependencies = [
818− "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
964+ "serde_derive",
819− "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
820− "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
821− "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)",
822]
965]
823
966
824[[package]]
967[[package]]
825−name = "regex"
968+name = "serde_derive"
826−version = "1.1.6"
969+version = "1.0.136"
827source = "registry+https://github.com/rust-lang/crates.io-index"
970source = "registry+https://github.com/rust-lang/crates.io-index"
971+checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
828dependencies = [
972dependencies = [
829− "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
973+ "proc-macro2",
830− "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
974+ "quote",
831− "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
975+ "syn",
832− "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
833− "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
834]
976]
835
977
836[[package]]
978[[package]]
837−name = "regex-syntax"
979+name = "serde_json"
838−version = "0.6.6"
980+version = "1.0.74"
839source = "registry+https://github.com/rust-lang/crates.io-index"
981source = "registry+https://github.com/rust-lang/crates.io-index"
982+checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142"
840dependencies = [
983dependencies = [
841− "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
984+ "itoa 1.0.1",
985+ "ryu",
986+ "serde",
842]
987]
843
988
844[[package]]
989[[package]]
845−name = "remove_dir_all"
990+name = "serde_yaml"
846−version = "0.5.1"
991+version = "0.8.23"
847source = "registry+https://github.com/rust-lang/crates.io-index"
992source = "registry+https://github.com/rust-lang/crates.io-index"
993+checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0"
848dependencies = [
994dependencies = [
849− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
995+ "indexmap",
996+ "ryu",
997+ "serde",
998+ "yaml-rust",
850]
999]
851
1000
852[[package]]
1001[[package]]
853−name = "rustc-demangle"
1002+name = "serial_test"
854−version = "0.1.14"
1003+version = "0.6.0"
855source = "registry+https://github.com/rust-lang/crates.io-index"
1004source = "registry+https://github.com/rust-lang/crates.io-index"
1005+checksum = "e5bcc41d18f7a1d50525d080fd3e953be87c4f9f1a974f3c21798ca00d54ec15"
1006+dependencies = [
1007+ "lazy_static",
1008+ "parking_lot",
1009+ "serial_test_derive",
1010+]
856
1011
857[[package]]
1012[[package]]
858−name = "rustc_version"
1013+name = "serial_test_derive"
859−version = "0.2.3"
1014+version = "0.6.0"
860source = "registry+https://github.com/rust-lang/crates.io-index"
1015source = "registry+https://github.com/rust-lang/crates.io-index"
1016+checksum = "2881bccd7d60fb32dfa3d7b3136385312f8ad75e2674aab2852867a09790cae8"
861dependencies = [
1017dependencies = [
862− "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1018+ "proc-macro-error",
1019+ "proc-macro2",
1020+ "quote",
1021+ "rustversion",
1022+ "syn",
863]
1023]
864
1024
865[[package]]
1025[[package]]
866−name = "ryu"
1026+name = "shell-escape"
867−version = "0.2.8"
1027+version = "0.1.5"
868source = "registry+https://github.com/rust-lang/crates.io-index"
1028source = "registry+https://github.com/rust-lang/crates.io-index"
1029+checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
869
1030
870[[package]]
1031[[package]]
871−name = "safemem"
1032+name = "shell-words"
872−version = "0.3.0"
1033+version = "1.1.0"
873source = "registry+https://github.com/rust-lang/crates.io-index"
1034source = "registry+https://github.com/rust-lang/crates.io-index"
1035+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
874
1036
875[[package]]
1037[[package]]
876−name = "same-file"
1038+name = "smallvec"
877−version = "1.0.4"
1039+version = "1.7.0"
878source = "registry+https://github.com/rust-lang/crates.io-index"
1040source = "registry+https://github.com/rust-lang/crates.io-index"
879−dependencies = [
1041+checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
880− "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
881−]
882
1042
883[[package]]
1043[[package]]
884−name = "scoped_threadpool"
1044+name = "std_prelude"
885−version = "0.1.9"
1045+version = "0.2.12"
886source = "registry+https://github.com/rust-lang/crates.io-index"
1046source = "registry+https://github.com/rust-lang/crates.io-index"
1047+checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe"
887
1048
888[[package]]
1049[[package]]
889−name = "scopeguard"
1050+name = "strsim"
890−version = "1.0.0"
1051+version = "0.8.0"
891source = "registry+https://github.com/rust-lang/crates.io-index"
1052source = "registry+https://github.com/rust-lang/crates.io-index"
1053+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
892
1054
893[[package]]
1055[[package]]
894−name = "semver"
1056+name = "syn"
895−version = "0.9.0"
1057+version = "1.0.85"
896source = "registry+https://github.com/rust-lang/crates.io-index"
1058source = "registry+https://github.com/rust-lang/crates.io-index"
1059+checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7"
897dependencies = [
1060dependencies = [
898− "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1061+ "proc-macro2",
1062+ "quote",
1063+ "unicode-xid",
899]
1064]
900
1065
901[[package]]
1066[[package]]
902−name = "semver-parser"
1067+name = "syntect"
903−version = "0.7.0"
1068+version = "5.0.0"
904−source = "registry+https://github.com/rust-lang/crates.io-index"
905−
906−[[package]]
907−name = "serde"
908−version = "1.0.91"
909source = "registry+https://github.com/rust-lang/crates.io-index"
1069source = "registry+https://github.com/rust-lang/crates.io-index"
1070+checksum = "c6c454c27d9d7d9a84c7803aaa3c50cd088d2906fe3c6e42da3209aa623576a8"
910dependencies = [
1071dependencies = [
911− "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
1072+ "bincode",
1073+ "bitflags",
1074+ "fancy-regex",
1075+ "flate2",
1076+ "fnv",
1077+ "lazy_static",
1078+ "once_cell",
1079+ "onig",
1080+ "plist",
1081+ "regex-syntax",
1082+ "serde",
1083+ "serde_derive",
1084+ "serde_json",
1085+ "thiserror",
1086+ "walkdir",
1087+ "yaml-rust",
912]
1088]
913
1089
914[[package]]
1090[[package]]
915−name = "serde_derive"
1091+name = "sys-info"
916−version = "1.0.91"
1092+version = "0.9.1"
917source = "registry+https://github.com/rust-lang/crates.io-index"
1093source = "registry+https://github.com/rust-lang/crates.io-index"
1094+checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c"
918dependencies = [
1095dependencies = [
919− "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1096+ "cc",
920− "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
1097+ "libc",
921− "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)",
922]
1098]
923
1099
924[[package]]
1100[[package]]
925−name = "serde_json"
1101+name = "tempfile"
926−version = "1.0.39"
1102+version = "3.3.0"
927source = "registry+https://github.com/rust-lang/crates.io-index"
1103source = "registry+https://github.com/rust-lang/crates.io-index"
1104+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
928dependencies = [
1105dependencies = [
929− "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
1106+ "cfg-if",
930− "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
1107+ "fastrand",
931− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
1108+ "libc",
1109+ "redox_syscall",
1110+ "remove_dir_all",
1111+ "winapi",
932]
1112]
933
1113
934[[package]]
1114[[package]]
935−name = "shell-words"
1115+name = "term_size"
936−version = "0.1.0"
937−source = "registry+https://github.com/rust-lang/crates.io-index"
938−
939−[[package]]
940−name = "smallvec"
941−version = "0.6.9"
942−source = "registry+https://github.com/rust-lang/crates.io-index"
943−
944−[[package]]
945−name = "strsim"
946−version = "0.8.0"
1116+version = "0.3.2"
947−source = "registry+https://github.com/rust-lang/crates.io-index"
948−
949−[[package]]
950−name = "syn"
951−version = "0.15.34"
952source = "registry+https://github.com/rust-lang/crates.io-index"
1117source = "registry+https://github.com/rust-lang/crates.io-index"
1118+checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9"
953dependencies = [
1119dependencies = [
954− "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1120+ "libc",
955− "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
1121+ "winapi",
956− "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
957]
1122]
958
1123
959[[package]]
1124[[package]]
960−name = "synstructure"
1125+name = "termcolor"
961−version = "0.10.2"
1126+version = "1.1.2"
962source = "registry+https://github.com/rust-lang/crates.io-index"
1127source = "registry+https://github.com/rust-lang/crates.io-index"
1128+checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
963dependencies = [
1129dependencies = [
964− "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1130+ "winapi-util",
965− "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
966− "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)",
967− "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
968]
1131]
969
1132
970[[package]]
1133[[package]]
971−name = "syntect"
1134+name = "terminal_size"
972−version = "3.2.0"
1135+version = "0.1.17"
973source = "registry+https://github.com/rust-lang/crates.io-index"
1136source = "registry+https://github.com/rust-lang/crates.io-index"
1137+checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
974dependencies = [
1138dependencies = [
975− "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
1139+ "libc",
976− "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
1140+ "winapi",
977− "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
978− "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
979− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
980− "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
981− "onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
982− "plist 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
983− "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
984− "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
985− "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
986− "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
987− "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
988− "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
989]
1141]
990
1142
991[[package]]
1143[[package]]
992−name = "tempdir"
1144+name = "termtree"
993−version = "0.3.7"
1145+version = "0.2.3"
994source = "registry+https://github.com/rust-lang/crates.io-index"
1146source = "registry+https://github.com/rust-lang/crates.io-index"
995−dependencies = [
1147+checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16"
996− "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
997− "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
998−]
999
1148
1000[[package]]
1149[[package]]
1001−name = "term_size"
1150+name = "textwrap"
1002−version = "0.3.1"
1151+version = "0.11.0"
1003source = "registry+https://github.com/rust-lang/crates.io-index"
1152source = "registry+https://github.com/rust-lang/crates.io-index"
1153+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
1004dependencies = [
1154dependencies = [
1005− "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
1155+ "term_size",
1006− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
1156+ "unicode-width",
1007− "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
1008]
1157]
1009
1158
1010[[package]]
1159[[package]]
1011−name = "termion"
1160+name = "thiserror"
1012−version = "1.5.2"
1161+version = "1.0.31"
1013source = "registry+https://github.com/rust-lang/crates.io-index"
1162source = "registry+https://github.com/rust-lang/crates.io-index"
1163+checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
1014dependencies = [
1164dependencies = [
1015− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
1165+ "thiserror-impl",
1016− "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1017− "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)",
1018− "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1019]
1166]
1020
1167
1021[[package]]
1168[[package]]
1022−name = "termios"
1169+name = "thiserror-impl"
1023−version = "0.3.1"
1170+version = "1.0.31"
1024source = "registry+https://github.com/rust-lang/crates.io-index"
1171source = "registry+https://github.com/rust-lang/crates.io-index"
1172+checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
1025dependencies = [
1173dependencies = [
1026− "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
1174+ "proc-macro2",
1175+ "quote",
1176+ "syn",
1027]
1177]
1028
1178
1029[[package]]
1179[[package]]
1030−name = "textwrap"
1180+name = "time"
1031−version = "0.11.0"
1181+version = "0.3.5"
1032source = "registry+https://github.com/rust-lang/crates.io-index"
1182source = "registry+https://github.com/rust-lang/crates.io-index"
1183+checksum = "41effe7cfa8af36f439fac33861b66b049edc6f9a32331e2312660529c1c24ad"
1033dependencies = [
1184dependencies = [
1034− "term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1185+ "itoa 0.4.8",
1035− "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1186+ "libc",
1036]
1187]
1037
1188
1038[[package]]
1189[[package]]
1039−name = "thread_local"
1190+name = "tinyvec"
1040−version = "0.3.6"
1191+version = "1.5.1"
1041source = "registry+https://github.com/rust-lang/crates.io-index"
1192source = "registry+https://github.com/rust-lang/crates.io-index"
1193+checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
1042dependencies = [
1194dependencies = [
1043− "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1195+ "tinyvec_macros",
1044]
1196]
1045
1197
1046[[package]]
1198[[package]]
1047−name = "treeline"
1199+name = "tinyvec_macros"
1048version = "0.1.0"
1200version = "0.1.0"
1049source = "registry+https://github.com/rust-lang/crates.io-index"
1201source = "registry+https://github.com/rust-lang/crates.io-index"
1050−
1202+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
1051−[[package]]
1052−name = "ucd-util"
1053−version = "0.1.3"
1054−source = "registry+https://github.com/rust-lang/crates.io-index"
1055
1203
1056[[package]]
1204[[package]]
1057name = "unicode-bidi"
1205name = "unicode-bidi"
1058−version = "0.3.4"
1206+version = "0.3.7"
1059source = "registry+https://github.com/rust-lang/crates.io-index"
1207source = "registry+https://github.com/rust-lang/crates.io-index"
1060−dependencies = [
1208+checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
1061− "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
1062−]
1063
1209
1064[[package]]
1210[[package]]
1065name = "unicode-normalization"
1211name = "unicode-normalization"
1066−version = "0.1.8"
1212+version = "0.1.19"
1067source = "registry+https://github.com/rust-lang/crates.io-index"
1213source = "registry+https://github.com/rust-lang/crates.io-index"
1214+checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
1068dependencies = [
1215dependencies = [
1069− "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
1216+ "tinyvec",
1070]
1217]
1071
1218
1072[[package]]
1219[[package]]
1073name = "unicode-width"
1220name = "unicode-width"
1074−version = "0.1.5"
1221+version = "0.1.9"
1075source = "registry+https://github.com/rust-lang/crates.io-index"
1222source = "registry+https://github.com/rust-lang/crates.io-index"
1223+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
1076
1224
1077[[package]]
1225[[package]]
1078name = "unicode-xid"
1226name = "unicode-xid"
1079−version = "0.1.0"
1227+version = "0.2.2"
1080source = "registry+https://github.com/rust-lang/crates.io-index"
1228source = "registry+https://github.com/rust-lang/crates.io-index"
1229+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
1081
1230
1082[[package]]
1231[[package]]
1083name = "url"
1232name = "url"
1084−version = "1.7.2"
1233+version = "2.2.2"
1085source = "registry+https://github.com/rust-lang/crates.io-index"
1234source = "registry+https://github.com/rust-lang/crates.io-index"
1235+checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
1086dependencies = [
1236dependencies = [
1087− "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1237+ "form_urlencoded",
1088− "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
1238+ "idna",
1089− "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1239+ "matches",
1240+ "percent-encoding",
1090]
1241]
1091
1242
1092−[[package]]
1093−name = "utf8-ranges"
1094−version = "1.0.2"
1095−source = "registry+https://github.com/rust-lang/crates.io-index"
1096−
1097[[package]]
1243[[package]]
1098name = "vcpkg"
1244name = "vcpkg"
1099−version = "0.2.6"
1245+version = "0.2.15"
1100source = "registry+https://github.com/rust-lang/crates.io-index"
1246source = "registry+https://github.com/rust-lang/crates.io-index"
1247+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
1101
1248
1102[[package]]
1249[[package]]
1103name = "vec_map"
1250name = "vec_map"
1104−version = "0.8.1"
1251+version = "0.8.2"
1105source = "registry+https://github.com/rust-lang/crates.io-index"
1252source = "registry+https://github.com/rust-lang/crates.io-index"
1253+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
1106
1254
1107[[package]]
1255[[package]]
1108name = "version_check"
1256name = "version_check"
1109−version = "0.1.5"
1257+version = "0.9.4"
1110source = "registry+https://github.com/rust-lang/crates.io-index"
1258source = "registry+https://github.com/rust-lang/crates.io-index"
1259+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
1111
1260
1112[[package]]
1261[[package]]
1113−name = "walkdir"
1262+name = "wait-timeout"
1114−version = "2.2.7"
1263+version = "0.2.0"
1115source = "registry+https://github.com/rust-lang/crates.io-index"
1264source = "registry+https://github.com/rust-lang/crates.io-index"
1265+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
1116dependencies = [
1266dependencies = [
1117− "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
1267+ "libc",
1118− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
1119− "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1120]
1268]
1121
1269
1122[[package]]
1270[[package]]
1123−name = "wild"
1271+name = "walkdir"
1124−version = "2.0.1"
1272+version = "2.3.2"
1125source = "registry+https://github.com/rust-lang/crates.io-index"
1273source = "registry+https://github.com/rust-lang/crates.io-index"
1274+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
1126dependencies = [
1275dependencies = [
1127− "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
1276+ "same-file",
1277+ "winapi",
1278+ "winapi-util",
1128]
1279]
1129
1280
1130[[package]]
1281[[package]]
1131−name = "winapi"
1282+name = "wasi"
1132−version = "0.2.8"
1283+version = "0.10.2+wasi-snapshot-preview1"
1133source = "registry+https://github.com/rust-lang/crates.io-index"
1284source = "registry+https://github.com/rust-lang/crates.io-index"
1285+checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
1134
1286
1135[[package]]
1287[[package]]
1136−name = "winapi"
1288+name = "wild"
1137−version = "0.3.7"
1289+version = "2.0.4"
1138source = "registry+https://github.com/rust-lang/crates.io-index"
1290source = "registry+https://github.com/rust-lang/crates.io-index"
1291+checksum = "035793abb854745033f01a07647a79831eba29ec0be377205f2a25b0aa830020"
1139dependencies = [
1292dependencies = [
1140− "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1293+ "glob",
1141− "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1142]
1294]
1143
1295
1144[[package]]
1296[[package]]
1145−name = "winapi-build"
1297+name = "winapi"
1146−version = "0.1.1"
1298+version = "0.3.9"
1147source = "registry+https://github.com/rust-lang/crates.io-index"
1299source = "registry+https://github.com/rust-lang/crates.io-index"
1300+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1301+dependencies = [
1302+ "winapi-i686-pc-windows-gnu",
1303+ "winapi-x86_64-pc-windows-gnu",
1304+]
1148
1305
1149[[package]]
1306[[package]]
1150name = "winapi-i686-pc-windows-gnu"
1307name = "winapi-i686-pc-windows-gnu"
1151version = "0.4.0"
1308version = "0.4.0"
1152source = "registry+https://github.com/rust-lang/crates.io-index"
1309source = "registry+https://github.com/rust-lang/crates.io-index"
1310+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1153
1311
1154[[package]]
1312[[package]]
1155name = "winapi-util"
1313name = "winapi-util"
1156−version = "0.1.2"
1314+version = "0.1.5"
1157source = "registry+https://github.com/rust-lang/crates.io-index"
1315source = "registry+https://github.com/rust-lang/crates.io-index"
1316+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
1158dependencies = [
1317dependencies = [
1159− "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
1318+ "winapi",
1160]
1319]
1161
1320
1162[[package]]
1321[[package]]
1163name = "winapi-x86_64-pc-windows-gnu"
1322name = "winapi-x86_64-pc-windows-gnu"
1164version = "0.4.0"
1323version = "0.4.0"
1165source = "registry+https://github.com/rust-lang/crates.io-index"
1324source = "registry+https://github.com/rust-lang/crates.io-index"
1325+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1166
1326
1167[[package]]
1327[[package]]
1168name = "xml-rs"
1328name = "xml-rs"
1169−version = "0.8.0"
1329+version = "0.8.4"
1170source = "registry+https://github.com/rust-lang/crates.io-index"
1330source = "registry+https://github.com/rust-lang/crates.io-index"
1331+checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
1171
1332
1172[[package]]
1333[[package]]
1173name = "yaml-rust"
1334name = "yaml-rust"
1174−version = "0.4.3"
1335+version = "0.4.5"
1175−source = "registry+https://github.com/rust-lang/crates.io-index"
1336+source = "registry+https://github.com/rust-lang/crates.io-index"
1176−dependencies = [
1337+checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
1177− "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
1338+dependencies = [
1178−]
1339+ "linked-hash-map",
1179−
1340+]
1180−[metadata]
1181−"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c"
1182−"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c"
1183−"checksum ansi_colours 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0f302a81afc6a7f4350c04f0ba7cfab529cc009bca3324b3fb5764e6add8b6"
1184−"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
1185−"checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392"
1186−"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
1187−"checksum assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc477793bd82ec39799b6f6b3df64938532fdf2ab0d49ef817eac65856a5a1e"
1188−"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
1189−"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
1190−"checksum backtrace 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "56acb7e9c23cb8c3a1f51713695c552a81ee667d9fd060d1ef407908480b7174"
1191−"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6"
1192−"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
1193−"checksum bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9f04a5e50dc80b3d5d35320889053637d15011aed5e66b66b37ae798c65da6f7"
1194−"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
1195−"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
1196−"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39"
1197−"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
1198−"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d"
1199−"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
1200−"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
1201−"checksum clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "73abfd4c73d003a674ce5d2933fca6ce6c42480ea84a5ffe0a2dc39ed56300f9"
1202−"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
1203−"checksum console 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2bf3720d3f3fc30b721ef1ae54e13af3264af4af39dc476a8de56a6ee1e2184b"
1204−"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
1205−"checksum content_inspector 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
1206−"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb"
1207−"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
1208−"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
1209−"checksum dirs 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e07ec6ad2c793a14517d70f1b7043ed5a9403f4f785a799032da6a7bcdd80ddb"
1210−"checksum dirs-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73bb611ac139e1bd12463cfad795e5d615144c4973ccc2329d8900a9ade944de"
1211−"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd"
1212−"checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
1213−"checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
1214−"checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
1215−"checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
1216−"checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
1217−"checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
1218−"checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
1219−"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9"
1220−"checksum escargot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ceb9adbf9874d5d028b5e4c5739d22b71988252b25c9c98fe7cf9738bee84597"
1221−"checksum escargot 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74cf96bec282dcdb07099f7e31d9fed323bca9435a09aba7b6d99b7617bca96d"
1222−"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2"
1223−"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1"
1224−"checksum flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f87e68aa82b2de08a6e037f1385455759df6e445a8df5e005b4297191dbf18aa"
1225−"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
1226−"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
1227−"checksum git2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7339329bfa14a00223244311560d11f8f489b453fb90092af97f267a6090ab0"
1228−"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
1229−"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
1230−"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
1231−"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
1232−"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
1233−"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
1234−"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
1235−"checksum libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c6785aa7dd976f5fbf3b71cfd9cd49d7f783c1ff565a858d71031c6c313aa5c6"
1236−"checksum libgit2-sys 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "48441cb35dc255da8ae72825689a95368bf510659ae1ad55dc4aa88cb1789bf1"
1237−"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
1238−"checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
1239−"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
1240−"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff"
1241−"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
1242−"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
1243−"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39"
1244−"checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649"
1245−"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e"
1246−"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab"
1247−"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
1248−"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
1249−"checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7"
1250−"checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0"
1251−"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7"
1252−"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c"
1253−"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
1254−"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
1255−"checksum plist 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f4739851c08dd9a62a78beff2edf1a438517268b2c563c42fc6d9d3139e42d2a"
1256−"checksum predicates 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "53e09015b0d3f5a0ec2d4428f7559bb7b3fff341b4e159fedd1d57fac8b939ff"
1257−"checksum predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178"
1258−"checksum predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124"
1259−"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
1260−"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
1261−"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
1262−"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
1263−"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
1264−"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
1265−"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
1266−"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
1267−"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
1268−"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
1269−"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
1270−"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
1271−"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
1272−"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
1273−"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
1274−"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252"
1275−"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
1276−"checksum redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe5204c3a17e97dde73f285d49be585df59ed84b50a872baf416e73b62c3828"
1277−"checksum regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f0a0bcab2fd7d1d7c54fa9eae6f43eddeb9ce2e7352f8518a814a4f65d60c58"
1278−"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96"
1279−"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5"
1280−"checksum rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ccc78bfd5acd7bf3e89cffcf899e5cb1a52d6fafa8dec2739ad70c9577a57288"
1281−"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
1282−"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f"
1283−"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9"
1284−"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267"
1285−"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
1286−"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
1287−"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
1288−"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
1289−"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd"
1290−"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f"
1291−"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
1292−"checksum shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a"
1293−"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be"
1294−"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
1295−"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe"
1296−"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
1297−"checksum syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e80b8831c5a543192ffc3727f01cf0e57579c6ac15558e3048bfb5708892167b"
1298−"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
1299−"checksum term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5b9a66db815dcfd2da92db471106457082577c3c278d4138ab3e3b4e189327"
1300−"checksum termion 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dde0593aeb8d47accea5392b39350015b5eccb12c0d98044d856983d89548dea"
1301−"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625"
1302−"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
1303−"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
1304−"checksum treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
1305−"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
1306−"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
1307−"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426"
1308−"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
1309−"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
1310−"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
1311−"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
1312−"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d"
1313−"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
1314−"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
1315−"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
1316−"checksum wild 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "690e5dbd46cfaf2f3bd09875ad94e92cc56459fce505807d6ce5332671aa93ae"
1317−"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
1318−"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
1319−"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
1320−"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1321−"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
1322−"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1323−"checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5"
1324−"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d"
Cargo.toml+73−29
@@ -1,56 +1,100 @@
1[package]
1[package]
2authors = ["David Peter <mail@david-peter.de>"]
2authors = ["David Peter <mail@david-peter.de>"]
3categories = ["command-line-utilities"]
3categories = ["command-line-utilities"]
4−description="A cat(1) clone with wings."
4+description = "A cat(1) clone with wings."
5homepage = "https://github.com/sharkdp/bat"
5homepage = "https://github.com/sharkdp/bat"
6license = "MIT/Apache-2.0"
6license = "MIT/Apache-2.0"
7name = "bat"
7name = "bat"
8−readme = "README.md"
9repository = "https://github.com/sharkdp/bat"
8repository = "https://github.com/sharkdp/bat"
10−version = "0.11.0"
9+version = "0.21.0"
11−exclude = [
12− "assets/syntaxes/*",
10+exclude = ["assets/syntaxes/*", "assets/themes/*"]
13− "assets/themes/*",
14−]
15build = "build.rs"
11build = "build.rs"
16edition = '2018'
12edition = '2018'
17
13
14+[features]
15+default = ["application"]
16+# Feature required for bat the application. Should be disabled when depending on
17+# bat as a library.
18+application = [
19+ "bugreport",
20+ "build-assets",
21+ "git",
22+ "minimal-application",
23+]
24+# Mainly for developers that want to iterate quickly
25+# Be aware that the included features might change in the future
26+minimal-application = [
27+ "atty",
28+ "clap",
29+ "dirs-next",
30+ "paging",
31+ "regex-onig",
32+ "wild",
33+]
34+git = ["git2"] # Support indicating git modifications
35+paging = ["shell-words", "grep-cli"] # Support applying a pager on the output
36+build-assets = ["syntect/yaml-load", "syntect/plist-load", "regex", "walkdir"]
37+
38+# You need to use one of these if you depend on bat as a library:
39+regex-onig = ["syntect/regex-onig"] # Use the "oniguruma" regex engine
40+regex-fancy = ["syntect/regex-fancy"] # Use the rust-only "fancy-regex" engine
41+
18[dependencies]
42[dependencies]
19−atty = "0.2.2"
43+atty = { version = "0.2.14", optional = true }
20−ansi_term = "0.11"
44+ansi_term = "^0.12.1"
21−ansi_colours = "^1.0"
45+ansi_colours = "^1.1"
46+bincode = "1.0"
22−console = "0.7"
47+console = "0.15.0"
23−dirs = "2.0"
48+flate2 = "1.0"
24−lazy_static = "1.3"
49+once_cell = "1.10"
25−wild = "2.0"
50+thiserror = "1.0"
51+wild = { version = "2.0", optional = true }
26content_inspector = "0.2.4"
52content_inspector = "0.2.4"
27encoding = "0.2"
53encoding = "0.2"
28−shell-words = "0.1.0"
54+shell-words = { version = "1.1.0", optional = true }
55+unicode-width = "0.1.9"
56+globset = "0.4"
57+serde = { version = "1.0", features = ["derive"] }
58+serde_yaml = "0.8"
59+semver = "1.0"
60+path_abs = { version = "0.5", default-features = false }
61+clircle = "0.3"
62+bugreport = { version = "0.5.0", optional = true }
63+dirs-next = { version = "2.0.0", optional = true }
64+grep-cli = { version = "0.1.6", optional = true }
65+regex = { version = "1.5.5", optional = true }
66+walkdir = { version = "2.0", optional = true }
67+bytesize = { version = "1.1.0" }
29
68
30[dependencies.git2]
69[dependencies.git2]
31−version = "0.8"
70+version = "0.14"
71+optional = true
32default-features = false
72default-features = false
33−features = []
34
73
35[dependencies.syntect]
74[dependencies.syntect]
36−version = "3.2.0"
75+version = "5.0.0"
37default-features = false
76default-features = false
38−features = ["parsing", "yaml-load", "dump-load", "dump-create"]
77+features = ["parsing"]
39
78
40[dependencies.clap]
79[dependencies.clap]
41−version = "2.33"
80+version = "2.34"
81+optional = true
42default-features = false
82default-features = false
43features = ["suggestions", "color", "wrap_help"]
83features = ["suggestions", "color", "wrap_help"]
44
84
45−[dependencies.error-chain]
46−version = "0.12"
47−default-features = false
48−features = []
49−
50[dev-dependencies]
85[dev-dependencies]
51−tempdir = "0.3"
52−assert_cmd = "0.11.1"
86+assert_cmd = "2.0.4"
53−escargot = "0.5.0"
87+serial_test = "0.6.0"
88+predicates = "2.1.1"
89+wait-timeout = "0.2.0"
90+tempfile = "3.3.0"
91+
92+[target.'cfg(unix)'.dev-dependencies]
93+nix = { version = "0.24.1", default-features = false, features = ["term"] }
54
94
55[build-dependencies]
95[build-dependencies]
56−clap = "2.33"
96+clap = { version = "2.34", optional = true }
97+
98+[profile.release]
99+lto = true
100+codegen-units = 1
LICENSE-MIT+1−1
@@ -1,4 +1,4 @@
1−Copyright (c) 2018 bat-developers (https://github.com/sharkdp/bat).
1+Copyright (c) 2018-2021 bat-developers (https://github.com/sharkdp/bat).
2
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to deal
4of this software and associated documentation files (the "Software"), to deal
NOTICEnew file+6
@@ -0,0 +1,6 @@
1+Copyright (c) 2018-2021 bat-developers (https://github.com/sharkdp/bat).
2+
3+bat is made available under the terms of either the MIT License or the Apache
4+License 2.0, at your option.
5+
6+See the LICENSE-APACHE and LICENSE-MIT files for license details.
README.md+387−103
@@ -1,7 +1,6 @@
1<p align="center">
1<p align="center">
2 <img src="doc/logo-header.svg" alt="bat - a cat clone with wings"><br>
2 <img src="doc/logo-header.svg" alt="bat - a cat clone with wings"><br>
3− <a href="https://travis-ci.org/sharkdp/bat"><img src="https://travis-ci.org/sharkdp/bat.svg?branch=master" alt="Build Status"></a>
3+ <a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD"><img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"></a>
4− <a href="https://ci.appveyor.com/project/sharkdp/bat"><img src="https://ci.appveyor.com/api/projects/status/cptsmtbiwbnr2vhf?svg=true"></a>
5 <img src="https://img.shields.io/crates/l/bat.svg" alt="license">
4 <img src="https://img.shields.io/crates/l/bat.svg" alt="license">
6 <a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
5 <a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
7 A <i>cat(1)</i> clone with syntax highlighting and Git integration.
6 A <i>cat(1)</i> clone with syntax highlighting and Git integration.
@@ -12,10 +11,27 @@
12 <a href="#how-to-use">How To Use</a> •
11 <a href="#how-to-use">How To Use</a> •
13 <a href="#installation">Installation</a> •
12 <a href="#installation">Installation</a> •
14 <a href="#customization">Customization</a> •
13 <a href="#customization">Customization</a> •
15− <a href="#project-goals-and-alternatives">Project goals, alternatives</a> •
14+ <a href="#project-goals-and-alternatives">Project goals, alternatives</a><br>
16− Translation [<a href="https://github.com/chinanf-boy/bat-zh">中文</a>][<a href="doc/README-ja.md">日本文</a>]
15+ [English]
16+ [<a href="doc/README-zh.md">中文</a>]
17+ [<a href="doc/README-ja.md">日本語</a>]
18+ [<a href="doc/README-ko.md">한국어</a>]
19+ [<a href="doc/README-ru.md">Русский</a>]
17</p>
20</p>
18
21
22+### Sponsors
23+
24+A special *thank you* goes to our biggest <a href="doc/sponsors.md">sponsors</a>:<br>
25+<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=bat&utm_source=github">
26+ <img src="doc/sponsors/workos-logo-white-bg.svg" width="200" alt="WorkOS">
27+ <br>
28+ <strong>Your app, enterprise-ready.</strong>
29+ <br>
30+ <sub>Start selling to enterprise customers with just a few lines of code.</sub>
31+ <br>
32+ <sup>Add Single Sign-On (and more) in minutes instead of months.</sup>
33+</a>
34+
19### Syntax highlighting
35### Syntax highlighting
20
36
21`bat` supports syntax highlighting for a large number of programming and markup
37`bat` supports syntax highlighting for a large number of programming and markup
@@ -39,14 +55,14 @@ characters:
39
55
40### Automatic paging
56### Automatic paging
41
57
42−`bat` can pipe its own output to `less` if the output is too large for one screen.
58+By default, `bat` pipes its own output to a pager (e.g. `less`) if the output is too large for one screen.
59+If you would rather `bat` work like `cat` all the time (never page output), you can set `--paging=never` as an option, either on the command line or in your configuration file.
60+If you intend to alias `cat` to `bat` in your shell configuration, you can use `alias cat='bat --paging=never'` to preserve the default behavior.
43
61
44−### File concatenation
62+#### File concatenation
45
63
46−Oh.. you can also use it to concatenate files :wink:. Whenever
64+Even with a pager set, you can still use `bat` to concatenate files :wink:.
47−`bat` detects a non-interactive terminal (i.e. when you pipe into another process
65+Whenever `bat` detects a non-interactive terminal (i.e. when you pipe into another process or into a file), `bat` will act as a drop-in replacement for `cat` and fall back to printing the plain file contents, regardless of the `--pager` option's value.
48−or into a file), `bat` will act as a drop-in replacement for `cat` and
49−fall back to printing the plain file contents.
50
66
51## How to use
67## How to use
52
68
@@ -62,7 +78,9 @@ Display multiple files at once
62> bat src/*.rs
78> bat src/*.rs
63```
79```
64
80
65−Read from stdin, determine the syntax automatically
81+Read from stdin, determine the syntax automatically (note, highlighting will
82+only work if the syntax can be determined from the first line of the file,
83+usually through a shebang such as `#!/bin/sh`)
66
84
67```bash
85```bash
68> curl -s https://sh.rustup.rs | bat
86> curl -s https://sh.rustup.rs | bat
@@ -93,35 +111,73 @@ bat f - g # output 'f', then stdin, then 'g'.
93
111
94### Integration with other tools
112### Integration with other tools
95
113
114+#### `fzf`
115+
116+You can use `bat` as a previewer for [`fzf`](https://github.com/junegunn/fzf). To do this,
117+use `bat`s `--color=always` option to force colorized output. You can also use `--line-range`
118+option to restrict the load times for long files:
119+
120+```bash
121+fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'
122+```
123+
124+For more information, see [`fzf`'s `README`](https://github.com/junegunn/fzf#preview-window).
125+
96#### `find` or `fd`
126#### `find` or `fd`
97
127
98You can use the `-exec` option of `find` to preview all search results with `bat`:
128You can use the `-exec` option of `find` to preview all search results with `bat`:
129+
99```bash
130```bash
100find … -exec bat {} +
131find … -exec bat {} +
101```
132```
102
133
103If you happen to use [`fd`](https://github.com/sharkdp/fd), you can use the `-X`/`--exec-batch` option to do the same:
134If you happen to use [`fd`](https://github.com/sharkdp/fd), you can use the `-X`/`--exec-batch` option to do the same:
135+
104```bash
136```bash
105fd … -X bat
137fd … -X bat
106```
138```
107
139
140+#### `ripgrep`
141+
142+With [`batgrep`](https://github.com/eth-p/bat-extras/blob/master/doc/batgrep.md), `bat` can be used as the printer for [`ripgrep`](https://github.com/BurntSushi/ripgrep) search results.
143+
144+```bash
145+batgrep needle src/
146+```
147+
108#### `tail -f`
148#### `tail -f`
109
149
110`bat` can be combined with `tail -f` to continuously monitor a given file with syntax highlighting.
150`bat` can be combined with `tail -f` to continuously monitor a given file with syntax highlighting.
151+
111```bash
152```bash
112tail -f /var/log/pacman.log | bat --paging=never -l log
153tail -f /var/log/pacman.log | bat --paging=never -l log
113```
154```
155+
114Note that we have to switch off paging in order for this to work. We have also specified the syntax
156Note that we have to switch off paging in order for this to work. We have also specified the syntax
115explicitly (`-l log`), as it can not be auto-detected in this case.
157explicitly (`-l log`), as it can not be auto-detected in this case.
116
158
117−### `git show`
159+#### `git`
118
160
119You can combine `bat` with `git show` to view an older version of a given file with proper syntax
161You can combine `bat` with `git show` to view an older version of a given file with proper syntax
120highlighting:
162highlighting:
163+
121```bash
164```bash
122git show v0.6.0:src/main.rs | bat -l rs
165git show v0.6.0:src/main.rs | bat -l rs
123```
166```
124
167
168+#### `git diff`
169+
170+You can combine `bat` with `git diff` to view lines around code changes with proper syntax
171+highlighting:
172+```bash
173+batdiff() {
174+ git diff --name-only --relative --diff-filter=d | xargs bat --diff
175+}
176+```
177+If you prefer to use this as a separate tool, check out `batdiff` in [`bat-extras`](https://github.com/eth-p/bat-extras).
178+
179+If you are looking for more support for git and diff operations, check out [`delta`](https://github.com/dandavison/delta).
180+
125#### `xclip`
181#### `xclip`
126
182
127The line numbers and Git modification markers in the output of `bat` can make it hard to copy
183The line numbers and Git modification markers in the output of `bat` can make it hard to copy
@@ -132,15 +188,89 @@ bat main.cpp | xclip
132```
188```
133`bat` will detect that the output is being redirected and print the plain file contents.
189`bat` will detect that the output is being redirected and print the plain file contents.
134
190
191+#### `man`
192+
193+`bat` can be used as a colorizing pager for `man`, by setting the
194+`MANPAGER` environment variable:
195+
196+```bash
197+export MANPAGER="sh -c 'col -bx | bat -l man -p'"
198+man 2 select
199+```
200+(replace `bat` with `batcat` if you are on Debian or Ubuntu)
201+
202+It might also be necessary to set `MANROFFOPT="-c"` if you experience
203+formatting problems.
204+
205+If you prefer to have this bundled in a new command, you can also use [`batman`](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md).
206+
207+Note that the [Manpage syntax](assets/syntaxes/02_Extra/Manpage.sublime-syntax) is developed in this repository and still needs some work.
208+
209+Also, note that this will [not work](https://github.com/sharkdp/bat/issues/1145) with Mandocs `man` implementation.
210+
211+#### `prettier` / `shfmt` / `rustfmt`
212+
213+The [`prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) script is a wrapper that will format code and print it with `bat`.
214+
215+#### Highlighting `--help` messages
216+
217+You can use `bat` to colorize help text: `$ cp --help | bat -plhelp`
218+
219+You can also use a wrapper around this:
220+
221+```bash
222+# in your .bashrc/.zshrc/*rc
223+alias bathelp='bat --plain --language=help'
224+help() {
225+ "$@" --help 2>&1 | bathelp
226+}
227+```
228+
229+Then you can do `$ help cp` or `$ help git commit`.
230+
231+Please report any issues with the help syntax in [this repository](https://github.com/victor-gp/cmd-help-sublime-syntax).
232+
233+
135## Installation
234## Installation
136
235
236+[![Packaging status](https://repology.org/badge/vertical-allrepos/bat-cat.svg)](https://repology.org/project/bat-cat/versions)
237+
137−### On Ubuntu
238+### On Ubuntu (using `apt`)
138*... and other Debian-based Linux distributions.*
239*... and other Debian-based Linux distributions.*
139
240
140−Download the latest `.deb` package from the [release page](https://github.com/sharkdp/bat/releases)
241+`bat` is available on [Ubuntu since 20.04 ("Focal")](https://packages.ubuntu.com/search?keywords=bat&exact=1) and [Debian since August 2021 (Debian 11 - "Bullseye")](https://packages.debian.org/bullseye/bat).
141−and install it via:
242+
243+If your Ubuntu/Debian installation is new enough you can simply run:
244+
245+```bash
246+sudo apt install bat
247+```
248+
249+**Important**: If you install `bat` this way, please note that the executable may be installed as `batcat` instead of `bat` (due to [a name
250+clash with another package](https://github.com/sharkdp/bat/issues/982)). You can set up a `bat -> batcat` symlink or alias to prevent any issues that may come up because of this and to be consistent with other distributions:
142``` bash
251``` bash
252+mkdir -p ~/.local/bin
253+ln -s /usr/bin/batcat ~/.local/bin/bat
254+```
255+
256+### On Ubuntu (using most recent `.deb` packages)
257+*... and other Debian-based Linux distributions.*
258+
259+If the package has not yet been promoted to your Ubuntu/Debian installation, or you want
260+the most recent release of `bat`, download the latest `.deb` package from the
261+[release page](https://github.com/sharkdp/bat/releases) and install it via:
262+
263+```bash
143−sudo dpkg -i bat_0.11.0_amd64.deb # adapt version number and architecture
264+sudo dpkg -i bat_0.18.3_amd64.deb # adapt version number and architecture
265+```
266+
267+### On Alpine Linux
268+
269+You can install [the `bat` package](https://pkgs.alpinelinux.org/packages?name=bat)
270+from the official sources, provided you have the appropriate repository enabled:
271+
272+```bash
273+apk add bat
144```
274```
145
275
146### On Arch Linux
276### On Arch Linux
@@ -154,19 +284,43 @@ pacman -S bat
154
284
155### On Fedora
285### On Fedora
156
286
157−You can install `bat` from the [Fedora Modular](https://docs.fedoraproject.org/en-US/modularity/using-modules/) repository. On Fedora 29 and higher, it is enabled by default. Otherwise, run `dnf install fedora-repos-modular` to set up, and make sure that the `fedora-modular` and `fedora-updates-modular` repos are enabled in `/etc/yum.repos.d`.
287+You can install [the `bat` package](https://koji.fedoraproject.org/koji/packageinfo?packageID=27506) from the official [Fedora Modular](https://docs.fedoraproject.org/en-US/modularity/using-modules/) repository.
288+
289+```bash
290+dnf install bat
291+```
292+
293+### On Funtoo Linux
294+
295+You can install [the `bat` package](https://github.com/funtoo/dev-kit/tree/1.4-release/sys-apps/bat) from dev-kit.
158
296
159```bash
297```bash
160−dnf module install bat
298+emerge sys-apps/bat
299+```
300+
301+### On Gentoo Linux
302+
303+You can install [the `bat` package](https://packages.gentoo.org/packages/sys-apps/bat)
304+from the official sources:
305+
306+```bash
307+emerge sys-apps/bat
161```
308```
162
309
163### On Void Linux
310### On Void Linux
164
311
165You can install `bat` via xbps-install:
312You can install `bat` via xbps-install:
166−```
313+```bash
167xbps-install -S bat
314xbps-install -S bat
168```
315```
169
316
317+### On Termux
318+
319+You can install `bat` via pkg:
320+```bash
321+pkg install bat
322+```
323+
170### On FreeBSD
324### On FreeBSD
171
325
172You can install a precompiled [`bat` package](https://www.freshports.org/textproc/bat) with pkg:
326You can install a precompiled [`bat` package](https://www.freshports.org/textproc/bat) with pkg:
@@ -182,6 +336,14 @@ cd /usr/ports/textproc/bat
182make install
336make install
183```
337```
184
338
339+### On OpenBSD
340+
341+You can install `bat` package using [`pkg_add(1)`](https://man.openbsd.org/pkg_add.1):
342+
343+```bash
344+pkg_add bat
345+```
346+
185### Via nix
347### Via nix
186
348
187You can install `bat` using the [nix package manager](https://nixos.org/nix):
349You can install `bat` using the [nix package manager](https://nixos.org/nix):
@@ -194,68 +356,59 @@ nix-env -i bat
194
356
195You can install `bat` with zypper:
357You can install `bat` with zypper:
196
358
197−```
359+```bash
198zypper install bat
360zypper install bat
199```
361```
200
362
201−### On macOS
363+### Via snap package
202
364
365+There is currently no recommended snap package available.
366+Existing packages may be available, but are not officially supported and may contain [issues](https://github.com/sharkdp/bat/issues/1519).
367+
368+### On macOS (or Linux) via Homebrew
369+
203−You can install `bat` with [Homebrew](http://braumeister.org/formula/bat):
370+You can install `bat` with [Homebrew on MacOS](https://formulae.brew.sh/formula/bat) or [Homebrew on Linux](https://formulae.brew.sh/formula-linux/bat):
204
371
205```bash
372```bash
206brew install bat
373brew install bat
207```
374```
208
375
209−### On Windows
376+### On macOS via MacPorts
210
377
211−You can download prebuilt binaries from the [Release page](https://github.com/sharkdp/bat/releases),
378+Or install `bat` with [MacPorts](https://ports.macports.org/port/bat/summary):
212−or install it with [scoop](https://scoop.sh/) or [Chocolatey](https://chocolatey.org):
213
379
214```bash
380```bash
215−scoop install bat
381+port install bat
216```
382```
217
383
218−```bash
384+### On Windows
219−choco install bat
385+
220−```
386+There are a few options to install `bat` on Windows. Once you have installed `bat`,
387+take a look at the ["Using `bat` on Windows"](#using-bat-on-windows) section.
388+
389+#### Prerequisites
221
390
222−[See below](#using-bat-on-windows) for notes.
391+You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
223
392
224−### Via Docker
393+#### With Chocolatey
225
394
226−There is a [Docker image](https://hub.docker.com/r/danlynn/bat/) that you can use to run `bat` in a container:
395+You can install `bat` via [Chocolatey](https://chocolatey.org/packages/Bat):
227```bash
396```bash
228−docker pull danlynn/bat
397+choco install bat
229−alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
230```
398```
231
399
232−### Via Ansible
400+#### With Scoop
233−
234−You can install `bat` with [Ansible](https://www.ansible.com/):
235
401
402+You can install `bat` via [scoop](https://scoop.sh/):
236```bash
403```bash
237−# Install role on local machine
404+scoop install bat
238−ansible-galaxy install aeimer.install_bat
239```
405```
240
406
241−```yaml
407+#### From prebuilt binaries:
242−---
243−# Playbook to install bat
244−- host: all
245− roles:
246− - aeimer.install_bat
247−```
248
408
249−- [Ansible Galaxy](https://galaxy.ansible.com/aeimer/install_bat)
409+You can download prebuilt binaries from the [Release page](https://github.com/sharkdp/bat/releases),
250−- [GitHub](https://github.com/aeimer/ansible-install-bat)
251
410
252−This should work with the following distributions:
411+You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
253−- Debian/Ubuntu
254−- ARM (eg. Raspberry PI)
255−- Arch Linux
256−- Void Linux
257−- FreeBSD
258−- MacOS
259
412
260### From binaries
413### From binaries
261
414
@@ -265,15 +418,15 @@ binaries are also available: look for archives with `musl` in the file name.
265
418
266### From source
419### From source
267
420
268−If you want to build `bat` from source, you need Rust 1.31 or
421+If you want to build `bat` from source, you need Rust 1.51 or
269higher. You can then use `cargo` to build everything:
422higher. You can then use `cargo` to build everything:
270
423
271```bash
424```bash
272−cargo install bat
425+cargo install --locked bat
273```
426```
274
427
275−You may have to install `cmake` and the `libz` development package
428+Note that additional files like the man page or shell completion
276−(`libz-dev` or `libz-devel`) in order for the build to succeed.
429+files can not be installed in this way. They will be generated by `cargo` and should be available in the cargo target folder (under `build`).
277
430
278## Customization
431## Customization
279
432
@@ -288,7 +441,7 @@ make the change permanent. Alternatively, use `bat`s
288
441
289If you want to preview the different themes on a custom file, you can use
442If you want to preview the different themes on a custom file, you can use
290the following command (you need [`fzf`](https://github.com/junegunn/fzf) for this):
443the following command (you need [`fzf`](https://github.com/junegunn/fzf) for this):
291−``` bash
444+```bash
292bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
445bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
293```
446```
294
447
@@ -297,6 +450,26 @@ light background, some themes like `GitHub` or `OneHalfLight` will work better f
297You can also use a custom theme by following the
450You can also use a custom theme by following the
298['Adding new themes' section below](https://github.com/sharkdp/bat#adding-new-themes).
451['Adding new themes' section below](https://github.com/sharkdp/bat#adding-new-themes).
299
452
453+### 8-bit themes
454+
455+`bat` has three themes that always use [8-bit colors](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors),
456+even when truecolor support is available:
457+
458+- `ansi` looks decent on any terminal. It uses 3-bit colors: black, red, green,
459+ yellow, blue, magenta, cyan, and white.
460+- `base16` is designed for [base16](https://github.com/chriskempson/base16) terminal themes. It uses
461+ 4-bit colors (3-bit colors plus bright variants) in accordance with the
462+ [base16 styling guidelines](https://github.com/chriskempson/base16/blob/master/styling.md).
463+- `base16-256` is designed for [base16-shell](https://github.com/chriskempson/base16-shell).
464+ It replaces certain bright colors with 8-bit colors from 16 to 21. **Do not** use this simply
465+ because you have a 256-color terminal but are not using base16-shell.
466+
467+Although these themes are more restricted, they have three advantages over truecolor themes. They:
468+
469+- Enjoy maximum compatibility. Some terminal utilities do not support more than 3-bit colors.
470+- Adapt to terminal theme changes. Even for already printed output.
471+- Visually harmonize better with other terminal software.
472+
300### Output style
473### Output style
301
474
302You can use the `--style` option to control the appearance of `bat`s output.
475You can use the `--style` option to control the appearance of `bat`s output.
@@ -307,35 +480,45 @@ variable to make these changes permanent or use `bat`s
307
480
308### Adding new syntaxes / language definitions
481### Adding new syntaxes / language definitions
309
482
483+Should you find that a particular syntax is not available within `bat`, you can follow these
484+instructions to easily add new syntaxes to your current `bat` installation.
485+
310`bat` uses the excellent [`syntect`](https://github.com/trishume/syntect/)
486`bat` uses the excellent [`syntect`](https://github.com/trishume/syntect/)
311library for syntax highlighting. `syntect` can read any
487library for syntax highlighting. `syntect` can read any
312[Sublime Text `.sublime-syntax` file](https://www.sublimetext.com/docs/3/syntax.html)
488[Sublime Text `.sublime-syntax` file](https://www.sublimetext.com/docs/3/syntax.html)
313−and theme. To add new syntax definitions, do the following.
489+and theme.
314
490
315−Create a folder with syntax definition files:
491+A good resource for finding Sublime Syntax packages is [Package Control](https://packagecontrol.io/). Once you found a
492+syntax:
316
493
317−```bash
494+1. Create a folder with syntax definition files:
318−mkdir -p "$(bat --config-dir)/syntaxes"
319−cd "$(bat --config-dir)/syntaxes"
320
495
321−# Put new '.sublime-syntax' language definition files
496+ ```bash
322−# in this folder (or its subdirectories), for example:
497+ mkdir -p "$(bat --config-dir)/syntaxes"
323−git clone https://github.com/tellnobody1/sublime-purescript-syntax
498+ cd "$(bat --config-dir)/syntaxes"
324−```
325
499
326−Now use the following command to parse these files into a binary cache:
500+ # Put new '.sublime-syntax' language definition files
501+ # in this folder (or its subdirectories), for example:
502+ git clone https://github.com/tellnobody1/sublime-purescript-syntax
503+ ```
327
504
328−```bash
505+2. Now use the following command to parse these files into a binary cache:
329−bat cache --build
330−```
331
506
332−Finally, use `bat --list-languages` to check if the new languages are available.
507+ ```bash
508+ bat cache --build
509+ ```
333
510
334−If you ever want to go back to the default settings, call:
511+3. Finally, use `bat --list-languages` to check if the new languages are available.
335
512
513+ If you ever want to go back to the default settings, call:
514+
336−```bash
515+ ```bash
337−bat cache --clear
516+ bat cache --clear
338−```
517+ ```
518+
519+4. If you think that a specific syntax should be included in `bat` by default, please
520+ consider opening a "syntax request" ticket after reading the policies and
521+ instructions [here](doc/assets.md): [Open Syntax Request](https://github.com/sharkdp/bat/issues/new?labels=syntax-request&template=syntax_request.md).
339
522
340### Adding new themes
523### Adding new themes
341
524
@@ -355,6 +538,34 @@ bat cache --build
355
538
356Finally, use `bat --list-themes` to check if the new themes are available.
539Finally, use `bat --list-themes` to check if the new themes are available.
357
540
541+### Adding or changing file type associations
542+
543+You can add new (or change existing) file name patterns using the `--map-syntax`
544+command line option. The option takes an argument of the form `pattern:syntax` where
545+`pattern` is a glob pattern that is matched against the file name and
546+the absolute file path. The `syntax` part is the full name of a supported language
547+(use `bat --list-languages` for an overview).
548+
549+**Note:** You probably want to use this option as [an entry in `bat`'s configuration file](#configuration-file)
550+for persistence instead of passing it on the command line as a one-off. Generally
551+you'd just use `-l` if you want to manually specify a language for a file.
552+
553+Example: To use "INI" syntax highlighting for all files with a `.conf` file extension, use
554+```bash
555+--map-syntax='*.conf:INI'
556+```
557+
558+Example: To open all files called `.ignore` (exact match) with the "Git Ignore" syntax, use:
559+```bash
560+--map-syntax='.ignore:Git Ignore'
561+```
562+
563+Example: To open all `.conf` files in subfolders of `/etc/apache2` with the "Apache Conf"
564+syntax, use (this mapping is already built in):
565+```bash
566+--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
567+```
568+
358### Using a different pager
569### Using a different pager
359
570
360`bat` uses the pager that is specified in the `PAGER` environment variable. If this variable is not
571`bat` uses the pager that is specified in the `PAGER` environment variable. If this variable is not
@@ -362,6 +573,8 @@ set, `less` is used by default. If you want to use a different pager, you can ei
362`PAGER` variable or set the `BAT_PAGER` environment variable to override what is specified in
573`PAGER` variable or set the `BAT_PAGER` environment variable to override what is specified in
363`PAGER`.
574`PAGER`.
364
575
576+**Note**: If `PAGER` is `more` or `most`, `bat` will silently use `less` instead to ensure support for colors.
577+
365If you want to pass command-line arguments to the pager, you can also set them via the
578If you want to pass command-line arguments to the pager, you can also set them via the
366`PAGER`/`BAT_PAGER` variables:
579`PAGER`/`BAT_PAGER` variables:
367
580
@@ -372,24 +585,46 @@ export BAT_PAGER="less -RF"
372Instead of using environment variables, you can also use `bat`s [configuration file](https://github.com/sharkdp/bat#configuration-file) to configure the pager (`--pager` option).
585Instead of using environment variables, you can also use `bat`s [configuration file](https://github.com/sharkdp/bat#configuration-file) to configure the pager (`--pager` option).
373
586
374**Note**: By default, if the pager is set to `less` (and no command-line options are specified),
587**Note**: By default, if the pager is set to `less` (and no command-line options are specified),
375−`bat` will pass the following command line
588+`bat` will pass the following command line options to the pager: `-R`/`--RAW-CONTROL-CHARS`,
376−options to the pager: `-R`/`--RAW-CONTROL-CHARS`, `-F`/`--quit-if-one-screen` and `-X`/`--no-init`.
589+`-F`/`--quit-if-one-screen` and `-X`/`--no-init`. The last option (`-X`) is only used for `less`
590+versions older than 530.
591+
377−The first (`-R`) is needed to interpret ANSI colors correctly. The second option (`-F`) instructs
592+The `-R` option is needed to interpret ANSI colors correctly. The second option (`-F`) instructs
378less to exit immediately if the output size is smaller than the vertical size of the terminal.
593less to exit immediately if the output size is smaller than the vertical size of the terminal.
379This is convenient for small files because you do not have to press `q` to quit the pager. The
594This is convenient for small files because you do not have to press `q` to quit the pager. The
380third option (`-X`) is needed to fix a bug with the `--quit-if-one-screen` feature in old versions
595third option (`-X`) is needed to fix a bug with the `--quit-if-one-screen` feature in old versions
381−of `less`. Unfortunately, it also breaks mouse-wheel support in `less`. If you want to enable
596+of `less`. Unfortunately, it also breaks mouse-wheel support in `less`.
597+
382−mouse-wheel scrolling, you can either pass just `-R` (as in the example above, this will disable
598+If you want to enable mouse-wheel scrolling on older versions of `less`, you can pass just `-R` (as
383−the quit-if-one-screen feature), or you can use a recent version of `less` and pass `-RF` which
599+in the example above, this will disable the quit-if-one-screen feature). For less 530 or newer,
384−will hopefully enable both quit-if-one-screen and mouse-wheel scrolling.
600+it should work out of the box.
601+
602+### Indentation
603+
604+`bat` expands tabs to 4 spaces by itself, not relying on the pager. To change this, simply add the
605+`--tabs` argument with the number of spaces you want to be displayed.
606+
607+**Note**: Defining tab stops for the pager (via the `--pager` argument by `bat`, or via the `LESS`
608+environment variable for `less`) won't be taken into account because the pager will already get
609+expanded spaces instead of tabs. This behaviour is added to avoid indentation issues caused by the
610+sidebar. Calling `bat` with `--tabs=0` will override it and let tabs be consumed by the pager.
611+
612+### Dark mode
613+
614+If you make use of the dark mode feature in macOS, you might want to configure `bat` to use a different
615+theme based on the OS theme. The following snippet uses the `default` theme when in the _dark mode_
616+and the `GitHub` theme when in the _light mode_.
617+
618+```bash
619+alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"
620+```
385
621
386−If scrolling still doesn't work for you, you can try to pass the `-S` option in addition.
387
622
388## Configuration file
623## Configuration file
389
624
390`bat` can also be customized with a configuration file. The location of the file is dependent
625`bat` can also be customized with a configuration file. The location of the file is dependent
391on your operating system. To get the default path for your system, call
626on your operating system. To get the default path for your system, call
392−```
627+```bash
393bat --config-file
628bat --config-file
394```
629```
395
630
@@ -399,6 +634,11 @@ non-default location of the configuration file:
399export BAT_CONFIG_PATH="/path/to/bat.conf"
634export BAT_CONFIG_PATH="/path/to/bat.conf"
400```
635```
401
636
637+A default configuration file can be created with the `--generate-config-file` option.
638+```bash
639+bat --generate-config-file
640+```
641+
402### Format
642### Format
403
643
404The configuration file is a simple list of command line arguments. Use `bat --help` to see a full list of possible options and values. In addition, you can add comments by prepending a line with the `#` character.
644The configuration file is a simple list of command line arguments. Use `bat --help` to see a full list of possible options and values. In addition, you can add comments by prepending a line with the `#` character.
@@ -414,21 +654,18 @@ Example configuration file:
414# Use italic text on the terminal (not supported on all terminals)
654# Use italic text on the terminal (not supported on all terminals)
415--italic-text=always
655--italic-text=always
416
656
417−# Add mouse scrolling support in less (does not work with older
418−# versions of "less")
419−--pager="less -FR"
420−
421−# Use C++ syntax (instead of C) for .h header files
657+# Use C++ syntax for Arduino .ino files
422−--map-syntax h:cpp
658+--map-syntax "*.ino:C++"
423−
424−# Use "gitignore" highlighting for ".ignore" files
425−--map-syntax .ignore:.gitignore
426```
659```
427
660
428## Using `bat` on Windows
661## Using `bat` on Windows
429
662
430`bat` mostly works out-of-the-box on Windows, but a few features may need extra configuration.
663`bat` mostly works out-of-the-box on Windows, but a few features may need extra configuration.
431
664
665+### Prerequisites
666+
667+You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
668+
432### Paging
669### Paging
433
670
434Windows only includes a very limited pager in the form of `more`. You can download a Windows binary
671Windows only includes a very limited pager in the form of `more`. You can download a Windows binary
@@ -453,7 +690,7 @@ or by setting `BAT_PAGER` to an empty string.
453
690
454This can be solved by creating a wrapper or adding the following function to your `.bash_profile` file:
691This can be solved by creating a wrapper or adding the following function to your `.bash_profile` file:
455
692
456−```shell
693+```bash
457bat() {
694bat() {
458 local index
695 local index
459 local args=("$@")
696 local args=("$@")
@@ -469,11 +706,19 @@ bat() {
469
706
470## Troubleshooting
707## Troubleshooting
471
708
709+### Garbled output
710+
711+If an input file contains color codes or other ANSI escape sequences or control characters, `bat` will have problems
712+performing syntax highlighting and text wrapping, and thus the output can become garbled.
713+When displaying such files it is recommended to disable both syntax highlighting and wrapping by
714+passing the `--color=never --wrap=never` options to `bat`.
715+
472### Terminals & colors
716### Terminals & colors
473
717
474−`bat` handles terminals *with* and *without* truecolor support. However, the colors in the syntax
718+`bat` handles terminals *with* and *without* truecolor support. However, the colors in most syntax
475−highlighting themes are not optimized for 8-bit colors and it is therefore strongly recommended
719+highlighting themes are not optimized for 8-bit colors. It is therefore strongly recommended
476−that you use a terminal with 24-bit truecolor support (`terminator`, `konsole`, `iTerm2`, ...).
720+that you use a terminal with 24-bit truecolor support (`terminator`, `konsole`, `iTerm2`, ...),
721+or use one of the basic [8-bit themes](#8-bit-themes) designed for a restricted set of colors.
477See [this article](https://gist.github.com/XVilka/8346728) for more details and a full list of
722See [this article](https://gist.github.com/XVilka/8346728) for more details and a full list of
478terminals with truecolor support.
723terminals with truecolor support.
479
724
@@ -486,6 +731,18 @@ are supported (and fall back to 8-bit colors).
486Please try a different theme (see `bat --list-themes` for a list). The `OneHalfDark` and
731Please try a different theme (see `bat --list-themes` for a list). The `OneHalfDark` and
487`OneHalfLight` themes provide grid and line colors that are brighter.
732`OneHalfLight` themes provide grid and line colors that are brighter.
488
733
734+### File encodings
735+
736+`bat` natively supports UTF-8 as well as UTF-16. For every other file encoding, you may need to
737+convert to UTF-8 first because the encodings can typically not be auto-detected. You can `iconv`
738+to do so.
739+Example: if you have a PHP file in Latin-1 (ISO-8859-1) encoding, you can call:
740+``` bash
741+iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
742+```
743+Note: you might have to use the `-l`/`--language` option if the syntax can not be auto-detected
744+by `bat`.
745+
489## Development
746## Development
490
747
491```bash
748```bash
@@ -494,19 +751,39 @@ git clone --recursive https://github.com/sharkdp/bat
494
751
495# Build (debug version)
752# Build (debug version)
496cd bat
753cd bat
497−cargo build
754+cargo build --bins
498
755
499# Run unit tests and integration tests
756# Run unit tests and integration tests
500cargo test
757cargo test
501
758
502# Install (release version)
759# Install (release version)
503−cargo install
760+cargo install --path . --locked
504
761
505# Build a bat binary with modified syntaxes and themes
762# Build a bat binary with modified syntaxes and themes
506bash assets/create.sh
763bash assets/create.sh
507−cargo install -f
764+cargo install --path . --locked --force
508```
765```
509
766
767+If you want to build an application that uses `bat`s pretty-printing
768+features as a library, check out the [the API documentation](https://docs.rs/bat/).
769+Note that you have to use either `regex-onig` or `regex-fancy` as a feature
770+when you depend on `bat` as a library.
771+
772+## Contributing
773+
774+Take a look at the [`CONTRIBUTING.md`](CONTRIBUTING.md) guide.
775+
776+## Maintainers
777+
778+- [sharkdp](https://github.com/sharkdp)
779+- [eth-p](https://github.com/eth-p)
780+- [keith-hall](https://github.com/keith-hall)
781+- [Enselic](https://github.com/Enselic)
782+
783+## Security vulnerabilities
784+
785+Please contact [David Peter](https://david-peter.de/) via email if you want to report a vulnerability in `bat`.
786+
510## Project goals and alternatives
787## Project goals and alternatives
511
788
512`bat` tries to achieve the following goals:
789`bat` tries to achieve the following goals:
@@ -518,3 +795,10 @@ cargo install -f
518
795
519There are a lot of alternatives, if you are looking for similar programs. See
796There are a lot of alternatives, if you are looking for similar programs. See
520[this document](doc/alternatives.md) for a comparison.
797[this document](doc/alternatives.md) for a comparison.
798+
799+## License
800+Copyright (c) 2018-2021 [bat-developers](https://github.com/sharkdp/bat).
801+
802+`bat` is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
803+
804+See the [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files for license details.
appveyor.ymldeleted−49
@@ -1,49 +0,0 @@
1−environment:
2− global:
3− TARGET: x86_64-pc-windows-msvc
4− RUST_VERSION: stable
5− CRATE_NAME: bat
6− CARGO_HOME: "c:\\cargo"
7− RUSTUP_HOME: "c:\\rustup"
8−
9−install:
10− - appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
11− - rustup-init.exe -y --default-host %TARGET%
12− - set PATH=%PATH%;C:\cargo\bin
13− - rustc -Vv
14− - cargo -V
15−
16−build: false
17−test_script:
18− - cargo test --target %TARGET% --verbose
19− - cargo run --target %TARGET% -- src/main.rs README.md --paging=never
20−
21−before_deploy:
22− # Generate artifacts for release
23− - cargo build --release --verbose
24− - ps: ci\before_deploy.ps1
25−
26−deploy:
27− description: 'Automatically deployed release'
28− artifact: /.*\.zip/
29− # Here's how:
30− # - Go to 'https://github.com/settings/tokens/new' and generate a Token with only the
31− # `public_repo` scope enabled
32− # - Then go to 'https://ci.appveyor.com/tools/encrypt' and enter the newly generated token.
33− # - Enter the "encrypted value" below
34− auth_token:
35− secure: oO4/J+hcFXgXcEqEc8gzlQNqLG0IxU78s4EyH+uczGdsyWajb3yipxPR6nXUvmoj
36− provider: GitHub
37− on:
38− RUST_VERSION: stable
39− appveyor_repo_tag: true
40−
41−cache:
42− - C:\Users\appveyor\.cargo\registry
43− - target
44−
45−notifications:
46− - provider: Email
47− on_build_success: false
48− on_build_failure: false
49− on_build_status_changed: false
assets/README.mddeleted−40
@@ -1,40 +0,0 @@
1−## Syntax Highlighting in bat
2−
3−`bat` uses the [syntect](https://github.com/trishume/syntect) library to highlight source
4−code. As a basis, syntect uses [Sublime Text](https://www.sublimetext.com/) syntax definitions
5−in the `.sublime-syntax` format.
6−
7−In order to add new syntaxes to `bat`, follow these steps:
8−
9−1. Find a Sublime Text syntax for the given language, preferably in a separate Git repository
10− which can be included as a submodule (under `assets/syntaxes`).
11−
12−2. If the Sublime Text syntax is only available as a `.tmLanguage` file, open the file in
13− Sublime Text and convert it to a `.sublime-syntax` file via *Tools* -> *Developer* ->
14− *New Syntax from XXX.tmLanguage...*. Save the new file in the `assets/syntaxes` folder.
15−
16−3. Run the `create.sh` script. It calls `bat cache --build` to parse all available
17− `.sublime-syntax` files and serialize them to a `syntaxes.bin` file (in this folder).
18−
19−4. Re-compile `bat`. At compilation time, the `syntaxes.bin` file will be stored inside the
20− `bat` binary.
21−
22−5. If you send a pull request with your changes, please do *not* include the changed `syntaxes.bin`
23− file. A new binary cache file will be created once before every new release of `bat`.
24−
25−### Troubleshooting
26−
27−Make sure that the local cache does not interfere with the internally stored syntaxes and
28−themes (`bat cache --clear`).
29−
30−### Manual modifications
31−
32−The following files have been manually modified after converting from a `.tmLanguage` file:
33−
34−* `Dart.sublime-syntax` => removed `#regex.dart` include.
35−* `INI.sublime-syntax` => added `.hgrc`, `hgrc`, and `desktop` file types.
36−* `Org mode.sublime-syntax` => removed `task` file type.
37−
38−### Non-submodule additions
39−
40−* `Assembly (x86_64)` has been manually added from https://github.com/13xforever/x86-assembly-textmate-bundle due to `git clone` recursion problems
assets/acknowledgements.binnew file

Binary file not shown.

assets/completions/_bat.ps1.innew file+92
@@ -0,0 +1,92 @@
1+
2+using namespace System.Management.Automation
3+using namespace System.Management.Automation.Language
4+
5+Register-ArgumentCompleter -Native -CommandName '{{PROJECT_EXECUTABLE}}' -ScriptBlock {
6+ param($wordToComplete, $commandAst, $cursorPosition)
7+
8+ $commandElements = $commandAst.CommandElements
9+ $command = @(
10+ '{{PROJECT_EXECUTABLE}}'
11+ for ($i = 1; $i -lt $commandElements.Count; $i++) {
12+ $element = $commandElements[$i]
13+ if ($element -isnot [StringConstantExpressionAst] -or
14+ $element.StringConstantType -ne [StringConstantType]::BareWord -or
15+ $element.Value.StartsWith('-')) {
16+ break
17+ }
18+ $element.Value
19+ }) -join ';'
20+
21+ $completions = @(switch ($command) {
22+ '{{PROJECT_EXECUTABLE}}' {
23+ [CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
24+ [CompletionResult]::new('--language', 'language', [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
25+ [CompletionResult]::new('-H', 'H', [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
26+ [CompletionResult]::new('--highlight-line', 'highlight-line', [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
27+ [CompletionResult]::new('--file-name', 'file-name', [CompletionResultType]::ParameterName, 'Specify the name to display for a file.')
28+ [CompletionResult]::new('--diff-context', 'diff-context', [CompletionResultType]::ParameterName, 'diff-context')
29+ [CompletionResult]::new('--tabs', 'tabs', [CompletionResultType]::ParameterName, 'Set the tab width to T spaces.')
30+ [CompletionResult]::new('--wrap', 'wrap', [CompletionResultType]::ParameterName, 'Specify the text-wrapping mode (*auto*, never, character).')
31+ [CompletionResult]::new('--terminal-width', 'terminal-width', [CompletionResultType]::ParameterName, 'Explicitly set the width of the terminal instead of determining it automatically. If prefixed with ''+'' or ''-'', the value will be treated as an offset to the actual terminal width. See also: ''--wrap''.')
32+ [CompletionResult]::new('--color', 'color', [CompletionResultType]::ParameterName, 'When to use colors (*auto*, never, always).')
33+ [CompletionResult]::new('--italic-text', 'italic-text', [CompletionResultType]::ParameterName, 'Use italics in output (always, *never*)')
34+ [CompletionResult]::new('--decorations', 'decorations', [CompletionResultType]::ParameterName, 'When to show the decorations (*auto*, never, always).')
35+ [CompletionResult]::new('--paging', 'paging', [CompletionResultType]::ParameterName, 'Specify when to use the pager, or use `-P` to disable (*auto*, never, always).')
36+ [CompletionResult]::new('--pager', 'pager', [CompletionResultType]::ParameterName, 'Determine which pager to use.')
37+ [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
38+ [CompletionResult]::new('--map-syntax', 'map-syntax', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
39+ [CompletionResult]::new('--theme', 'theme', [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting.')
40+ [CompletionResult]::new('--style', 'style', [CompletionResultType]::ParameterName, 'Comma-separated list of style elements to display (*default*, auto, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).')
41+ [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
42+ [CompletionResult]::new('--line-range', 'line-range', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
43+ [CompletionResult]::new('-A', 'A', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
44+ [CompletionResult]::new('--show-all', 'show-all', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
45+ [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
46+ [CompletionResult]::new('--plain', 'plain', [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
47+ [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
48+ [CompletionResult]::new('--diff', 'diff', [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
49+ [CompletionResult]::new('-n', 'n', [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
50+ [CompletionResult]::new('--number', 'number', [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
51+ [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'f')
52+ [CompletionResult]::new('--force-colorization', 'force-colorization', [CompletionResultType]::ParameterName, 'force-colorization')
53+ [CompletionResult]::new('-P', 'P', [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
54+ [CompletionResult]::new('--no-paging', 'no-paging', [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
55+ [CompletionResult]::new('--list-themes', 'list-themes', [CompletionResultType]::ParameterName, 'Display all supported highlighting themes.')
56+ [CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Display all supported languages.')
57+ [CompletionResult]::new('--list-languages', 'list-languages', [CompletionResultType]::ParameterName, 'Display all supported languages.')
58+ [CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'u')
59+ [CompletionResult]::new('--unbuffered', 'unbuffered', [CompletionResultType]::ParameterName, 'unbuffered')
60+ [CompletionResult]::new('--no-config', 'no-config', [CompletionResultType]::ParameterName, 'Do not use the configuration file')
61+ [CompletionResult]::new('--no-custom-assets', 'no-custom-assets', [CompletionResultType]::ParameterName, 'Do not load custom assets')
62+ [CompletionResult]::new('--config-file', 'config-file', [CompletionResultType]::ParameterName, 'Show path to the configuration file.')
63+ [CompletionResult]::new('--generate-config-file', 'generate-config-file', [CompletionResultType]::ParameterName, 'Generates a default configuration file.')
64+ [CompletionResult]::new('--config-dir', 'config-dir', [CompletionResultType]::ParameterName, 'Show bat''s configuration directory.')
65+ [CompletionResult]::new('--cache-dir', 'cache-dir', [CompletionResultType]::ParameterName, 'Show bat''s cache directory.')
66+ [CompletionResult]::new('--diagnostic', 'diagnostic', [CompletionResultType]::ParameterName, 'Show diagnostic information for bug reports.')
67+ [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Print this help message.')
68+ [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print this help message.')
69+ [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Show version information.')
70+ [CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Show version information.')
71+ [CompletionResult]::new('cache', 'cache', [CompletionResultType]::ParameterValue, 'Modify the syntax-definition and theme cache')
72+ break
73+ }
74+ '{{PROJECT_EXECUTABLE}};cache' {
75+ [CompletionResult]::new('--source', 'source', [CompletionResultType]::ParameterName, 'Use a different directory to load syntaxes and themes from.')
76+ [CompletionResult]::new('--target', 'target', [CompletionResultType]::ParameterName, 'Use a different directory to store the cached syntax and theme set.')
77+ [CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
78+ [CompletionResult]::new('--build', 'build', [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
79+ [CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
80+ [CompletionResult]::new('--clear', 'clear', [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
81+ [CompletionResult]::new('--blank', 'blank', [CompletionResultType]::ParameterName, 'Create completely new syntax and theme sets (instead of appending to the default sets).')
82+ [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
83+ [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
84+ [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
85+ [CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
86+ break
87+ }
88+ })
89+
90+ $completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
91+ Sort-Object -Property ListItemText
92+}
assets/completions/bat.bash.innew file+101
@@ -0,0 +1,101 @@
1+# shellcheck disable=SC2207
2+
3+# Requires https://github.com/scop/bash-completion
4+
5+# Macs have bash3 for which the bash-completion package doesn't include
6+# _init_completion. This is a minimal version of that function.
7+__bat_init_completion()
8+{
9+ COMPREPLY=()
10+ _get_comp_words_by_ref "$@" cur prev words cword
11+}
12+
13+_bat() {
14+ local cur prev words cword split=false
15+ if declare -F _init_completion >/dev/null 2>&1; then
16+ _init_completion -s || return 0
17+ else
18+ __bat_init_completion -n "=" || return 0
19+ _split_longopt && split=true
20+ fi
21+
22+ if [[ ${words[1]-} == cache ]]; then
23+ case $prev in
24+ --source | --target)
25+ _filedir -d
26+ return 0
27+ ;;
28+ esac
29+ COMPREPLY=($(compgen -W "
30+ --build --clear --source --target --blank --help
31+ " -- "$cur"))
32+ return 0
33+ fi
34+
35+ case $prev in
36+ -l | --language)
37+ local IFS=$'\n'
38+ COMPREPLY=($(compgen -W "$(
39+ "$1" --list-languages | while IFS=: read -r lang _; do
40+ printf "%s\n" "$lang"
41+ done
42+ )" -- "$cur"))
43+ compopt -o filenames # for escaping
44+ return 0
45+ ;;
46+ -H | --highlight-line | --diff-context | --tabs | --terminal-width | \
47+ -m | --map-syntax | --style | --line-range | -h | --help | -V | \
48+ --version | --diagnostic | --config-file | --config-dir | \
49+ --cache-dir | --generate-config-file)
50+ # argument required but no completion available, or option
51+ # causes an exit
52+ return 0
53+ ;;
54+ --file-name)
55+ _filedir
56+ return 0
57+ ;;
58+ --wrap)
59+ COMPREPLY=($(compgen -W "auto never character" -- "$cur"))
60+ return 0
61+ ;;
62+ --color | --decorations | --paging)
63+ COMPREPLY=($(compgen -W "auto never always" -- "$cur"))
64+ return 0
65+ ;;
66+ --italic-text)
67+ COMPREPLY=($(compgen -W "always never" -- "$cur"))
68+ return 0
69+ ;;
70+ --pager)
71+ COMPREPLY=($(compgen -c -- "$cur"))
72+ return 0
73+ ;;
74+ --theme)
75+ local IFS=$'\n'
76+ COMPREPLY=($(compgen -W "$("$1" --list-themes)" -- "$cur"))
77+ compopt -o filenames # for escaping
78+ return 0
79+ ;;
80+ esac
81+
82+ $split && return 0
83+
84+ if [[ $cur == -* ]]; then
85+ COMPREPLY=($(compgen -W "
86+ --show-all --plain --language --highlight-line
87+ --file-name --diff --diff-context --tabs --wrap
88+ --terminal-width --number --color --italic-text
89+ --decorations --paging --pager --map-syntax --theme
90+ --list-themes --style --line-range --list-languages
91+ --help --version --force-colorization --unbuffered
92+ --diagnostic --config-file --config-dir --cache-dir
93+ --generate-config-file
94+ " -- "$cur"))
95+ return 0
96+ fi
97+
98+ _filedir
99+ ((cword == 1)) && COMPREPLY+=($(compgen -W cache -- "$cur"))
100+
101+} && complete -F _bat {{PROJECT_EXECUTABLE}}
assets/completions/bat.fishdeleted−76
@@ -1,76 +0,0 @@
1−# Fish Shell Completions
2−# Place or symlink to $XDG_CONFIG_HOME/fish/completions/bat.fish ($XDG_CONFIG_HOME is usually set to ~/.config)
3−
4−# Helper function:
5−function __bat_autocomplete_languages --description "A helper function used by "(status filename)
6− bat --list-languages | awk -F':' '
7− {
8− lang=$1
9− split($2, exts, ",")
10−
11− for (i in exts) {
12− ext=exts[i]
13− if (ext !~ /[A-Z].*/ && ext !~ /^\..*rc$/) {
14− print ext"\t"lang
15− }
16− }
17− }
18− ' | sort
19−end
20−
21−# Completions:
22−
23−complete -c bat -l color -xka "auto never always" -d "Specify when to use colored output (default: auto)" -n "not __fish_seen_subcommand_from cache"
24−
25−complete -c bat -l config-dir -d "Display location of 'bat' configuration directory" -n "not __fish_seen_subcommand_from cache"
26−
27−complete -c bat -l config-file -d "Display location of 'bat' configuration file" -n "not __fish_seen_subcommand_from cache"
28−
29−complete -c bat -l decorations -xka "auto never always" -d "Specify when to use the decorations specified with '--style' (default: auto)" -n "not __fish_seen_subcommand_from cache"
30−
31−complete -c bat -s h -l help -d "Print help message" -n "not __fish_seen_subcommand_from cache"
32−
33−complete -c bat -s H -l highlight-line -x -d "<N> Highlight the N-th line with a different background color" -n "not __fish_seen_subcommand_from cache"
34−
35−complete -c bat -l italic-text -xka "always never" -d "Specify when to use ANSI sequences for italic text (default: never)" -n "not __fish_seen_subcommand_from cache"
36−
37−complete -c bat -s l -l language -d "Set the language for syntax highlighting" -n "not __fish_seen_subcommand_from cache" -xa "(__bat_autocomplete_languages)"
38−
39−complete -c bat -s r -l line-range -x -d "<N:M> Only print the specified range of lines for each file" -n "not __fish_seen_subcommand_from cache"
40−
41−complete -c bat -l list-languages -d "Display list of supported languages for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
42−
43−complete -c bat -l list-themes -d "Display a list of supported themes for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
44−
45−complete -c bat -s m -l map-syntax -x -d "<from:to> Map a file extension or file name to an existing syntax" -n "not __fish_seen_subcommand_from cache"
46−
47−complete -c bat -s n -l number -d "Only show line numbers, no other decorations. Alias for '--style=numbers'" -n "not __fish_seen_subcommand_from cache"
48−
49−complete -c bat -l pager -x -d "<command> Specify which pager program to use (default: less)" -n "not __fish_seen_subcommand_from cache"
50−
51−complete -c bat -l paging -xka "auto never always" -d "Specify when to use the pager (default: auto)" -n "not __fish_seen_subcommand_from cache"
52−
53−complete -c bat -s p -l plain -d "Only show plain style, no decorations. Alias for '--style=plain'" -n "not __fish_seen_subcommand_from cache"
54−
55−complete -c bat -s A -l show-all -d "Show non-printable characters like space/tab/newline" -n "not __fish_seen_subcommand_from cache"
56−
57−complete -c bat -l style -xka "auto full plain changes header grid numbers" -d "Comma-separated list of style elements or presets to display with file contents" -n "not __fish_seen_subcommand_from cache"
58−
59−complete -c bat -l tabs -x -d "<T> Set the tab width to T spaces (width of 0 passes tabs through directly)" -n "not __fish_seen_subcommand_from cache"
60−
61−complete -c bat -l terminal-width -x -d "<width> Explicitly set terminal width; Prefix with '+' or '-' to offset (default width is auto determined)" -n "not __fish_seen_subcommand_from cache"
62−
63−complete -c bat -l theme -xka "(bat --list-themes | cat)" -d "Set the theme for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
64−
65−complete -c bat -s u -l unbuffered -d "POSIX-compliant unbuffered output. Option is ignored" -n "not __fish_seen_subcommand_from cache"
66−
67−complete -c bat -s V -l version -d "Show version information" -n "not __fish_seen_subcommand_from cache"
68−
69−complete -c bat -l wrap -xka "auto never character" -d "<mode> Specify the text-wrapping mode (default: auto)" -n "not __fish_seen_subcommand_from cache"
70−
71−# Sub-command 'cache' completions
72−complete -c bat -a "cache" -d "Modify the syntax/language definition cache" -n "not __fish_seen_subcommand_from cache"
73−
74−complete -c bat -l build -f -d "Parse syntaxes/language definitions into cache" -n "__fish_seen_subcommand_from cache"
75−
76−complete -c bat -l clear -f -d "Reset syntaxes/language definitions to default settings" -n "__fish_seen_subcommand_from cache"
assets/completions/bat.fish.innew file+78
@@ -0,0 +1,78 @@
1+# Fish Shell Completions
2+# Place or symlink to $XDG_CONFIG_HOME/fish/completions/{{PROJECT_EXECUTABLE}}.fish ($XDG_CONFIG_HOME is usually set to ~/.config)
3+
4+# Helper function:
5+function __{{PROJECT_EXECUTABLE}}_autocomplete_languages --description "A helper function used by "(status filename)
6+ {{PROJECT_EXECUTABLE}} --list-languages | awk -F':' '
7+ {
8+ lang=$1
9+ split($2, exts, ",")
10+
11+ for (i in exts) {
12+ ext=exts[i]
13+ if (ext !~ /[A-Z].*/ && ext !~ /^\..*rc$/) {
14+ print ext"\t"lang
15+ }
16+ }
17+ }
18+ ' | sort
19+end
20+
21+# Completions:
22+
23+complete -c {{PROJECT_EXECUTABLE}} -l color -xka "auto never always" -d "Specify when to use colored output (default: auto)" -n "not __fish_seen_subcommand_from cache"
24+
25+complete -c {{PROJECT_EXECUTABLE}} -l config-dir -d "Display location of '{{PROJECT_EXECUTABLE}}' configuration directory" -n "not __fish_seen_subcommand_from cache"
26+
27+complete -c {{PROJECT_EXECUTABLE}} -l config-file -d "Display location of '{{PROJECT_EXECUTABLE}}' configuration file" -n "not __fish_seen_subcommand_from cache"
28+
29+complete -c {{PROJECT_EXECUTABLE}} -l decorations -xka "auto never always" -d "Specify when to use the decorations specified with '--style' (default: auto)" -n "not __fish_seen_subcommand_from cache"
30+
31+complete -c {{PROJECT_EXECUTABLE}} -s h -l help -d "Print help message" -n "not __fish_seen_subcommand_from cache"
32+
33+complete -c {{PROJECT_EXECUTABLE}} -s H -l highlight-line -x -d "<N> Highlight the N-th line with a different background color" -n "not __fish_seen_subcommand_from cache"
34+
35+complete -c {{PROJECT_EXECUTABLE}} -l italic-text -xka "always never" -d "Specify when to use ANSI sequences for italic text (default: never)" -n "not __fish_seen_subcommand_from cache"
36+
37+complete -c {{PROJECT_EXECUTABLE}} -s l -l language -d "Set the language for syntax highlighting" -n "not __fish_seen_subcommand_from cache" -xa "(__{{PROJECT_EXECUTABLE}}_autocomplete_languages)"
38+
39+complete -c {{PROJECT_EXECUTABLE}} -s r -l line-range -x -d "<N:M> Only print the specified range of lines for each file" -n "not __fish_seen_subcommand_from cache"
40+
41+complete -c {{PROJECT_EXECUTABLE}} -l list-languages -d "Display list of supported languages for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
42+
43+complete -c {{PROJECT_EXECUTABLE}} -l list-themes -d "Display a list of supported themes for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
44+
45+complete -c {{PROJECT_EXECUTABLE}} -s m -l map-syntax -x -d "<from:to> Map a file extension or file name to an existing syntax" -n "not __fish_seen_subcommand_from cache"
46+
47+complete -c {{PROJECT_EXECUTABLE}} -s n -l number -d "Only show line numbers, no other decorations. Alias for '--style=numbers'" -n "not __fish_seen_subcommand_from cache"
48+
49+complete -c {{PROJECT_EXECUTABLE}} -l pager -x -d "<command> Specify which pager program to use (default: less)" -n "not __fish_seen_subcommand_from cache"
50+
51+complete -c {{PROJECT_EXECUTABLE}} -l paging -xka "auto never always" -d "Specify when to use the pager (default: auto)" -n "not __fish_seen_subcommand_from cache"
52+
53+complete -c {{PROJECT_EXECUTABLE}} -s p -l plain -d "Only show plain style, no decorations. Alias for '--style=plain'" -n "not __fish_seen_subcommand_from cache"
54+
55+complete -c {{PROJECT_EXECUTABLE}} -s P -d "Disable paging. Alias for '--paging=never'" -n "not __fish_seen_subcommand_from cache"
56+
57+complete -c {{PROJECT_EXECUTABLE}} -s A -l show-all -d "Show non-printable characters like space/tab/newline" -n "not __fish_seen_subcommand_from cache"
58+
59+complete -c {{PROJECT_EXECUTABLE}} -l style -xka "default auto full plain changes header header-filename header-filesize grid rule numbers snip" -d "Comma-separated list of style elements or presets to display with file contents" -n "not __fish_seen_subcommand_from cache"
60+
61+complete -c {{PROJECT_EXECUTABLE}} -l tabs -x -d "<T> Set the tab width to T spaces (width of 0 passes tabs through directly)" -n "not __fish_seen_subcommand_from cache"
62+
63+complete -c {{PROJECT_EXECUTABLE}} -l terminal-width -x -d "<width> Explicitly set terminal width; Prefix with '+' or '-' to offset (default width is auto determined)" -n "not __fish_seen_subcommand_from cache"
64+
65+complete -c {{PROJECT_EXECUTABLE}} -l theme -xka "({{PROJECT_EXECUTABLE}} --list-themes | cat)" -d "Set the theme for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
66+
67+complete -c {{PROJECT_EXECUTABLE}} -s u -l unbuffered -d "POSIX-compliant unbuffered output. Option is ignored" -n "not __fish_seen_subcommand_from cache"
68+
69+complete -c {{PROJECT_EXECUTABLE}} -s V -l version -d "Show version information" -n "not __fish_seen_subcommand_from cache"
70+
71+complete -c {{PROJECT_EXECUTABLE}} -l wrap -xka "auto never character" -d "<mode> Specify the text-wrapping mode (default: auto)" -n "not __fish_seen_subcommand_from cache"
72+
73+# Sub-command 'cache' completions
74+complete -c {{PROJECT_EXECUTABLE}} -a "cache" -d "Modify the syntax/language definition cache" -n "not __fish_seen_subcommand_from cache"
75+
76+complete -c {{PROJECT_EXECUTABLE}} -l build -f -d "Parse syntaxes/language definitions into cache" -n "__fish_seen_subcommand_from cache"
77+
78+complete -c {{PROJECT_EXECUTABLE}} -l clear -f -d "Reset syntaxes/language definitions to default settings" -n "__fish_seen_subcommand_from cache"
assets/completions/bat.zsh.innew file+99
@@ -0,0 +1,99 @@
1+#compdef {{PROJECT_EXECUTABLE}}
2+
3+local context state state_descr line
4+typeset -A opt_args
5+
6+(( $+functions[_{{PROJECT_EXECUTABLE}}_cache_subcommand] )) ||
7+_{{PROJECT_EXECUTABLE}}_cache_subcommand() {
8+ local -a args
9+ args=(
10+ '(-b --build -c --clear)'{-b,--build}'[Initialize or update the syntax/theme cache]'
11+ '(-b --build -c --clear)'{-c,--clear}'[Remove the cached syntax definitions and themes]'
12+ '(--source)'--source='[Use a different directory to load syntaxes and themes from]:directory:_files -/'
13+ '(--target)'--target='[Use a different directory to store the cached syntax and theme set]:directory:_files -/'
14+ '(--blank)'--blank'[Create completely new syntax and theme sets]'
15+ '(: -)'{-h,--help}'[Prints help information]'
16+ '*: :'
17+ )
18+
19+ _arguments -S -s $args
20+}
21+
22+(( $+functions[_{{PROJECT_EXECUTABLE}}_main] )) ||
23+_{{PROJECT_EXECUTABLE}}_main() {
24+ local -a args
25+ args=(
26+ '(-A --show-all)'{-A,--show-all}'[Show non-printable characters (space, tab, newline, ..)]'
27+ '*'{-p,--plain}'[Show plain style (alias for `--style=plain`), repeat twice to disable disable automatic paging (alias for `--paging=never`)]'
28+ '(-l --language)'{-l+,--language=}'[Set the language for syntax highlighting]:<language>:->language'
29+ '(-H --highlight-line)'{-H,--highlight-line}'[Highlight lines N through M]:<N\:M>...'
30+ '(--file-name)'--file-name'[Specify the name to display for a file]:<name>...:_files'
31+ '(-d --diff)'--diff'[Only show lines that have been added/removed/modified]'
32+ '(--diff-context)'--diff-context'[Include N lines of context around added/removed/modified lines when using `--diff`]:<N> (lines):()'
33+ '(--tabs)'--tabs'[Set the tab width to T spaces]:<T> (tab width):()'
34+ '(--wrap)'--wrap='[Specify the text-wrapping mode]:<when>:(auto never character)'
35+ '(--terminal-width)'--terminal-width'[Explicitly set the width of the terminal instead of determining it automatically]:<width>'
36+ '(-n --number)'{-n,--number}'[Show line numbers]'
37+ '(--color)'--color='[When to use colors]:<when>:(auto never always)'
38+ '(--italic-text)'--italic-text='[Use italics in output]:<when>:(always never)'
39+ '(--decorations)'--decorations='[When to show the decorations]:<when>:(auto never always)'
40+ '(--paging)'--paging='[Specify when to use the pager]:<when>:(auto never always)'
41+ '(-m --map-syntax)'{-m+,--map-syntax=}'[Use the specified syntax for files matching the glob pattern]:<glob\:syntax>...'
42+ '(--theme)'--theme='[Set the color theme for syntax highlighting]:<theme>:->theme'
43+ '(: --list-themes --list-languages -L)'--list-themes'[Display all supported highlighting themes]'
44+ '(--style)'--style='[Comma-separated list of style elements to display]:<components>:->style'
45+ '(-r --line-range)'{-r+,--line-range=}'[Only print the lines from N to M]:<N\:M>...'
46+ '(: --list-themes --list-languages -L)'{-L,--list-languages}'[Display all supported languages]'
47+ '(: --no-config)'--no-config'[Do not use the configuration file]'
48+ '(: --no-custom-assets)'--no-custom-assets'[Do not load custom assets]'
49+ '(: --config-dir)'--config-dir'[Show bat'"'"'s configuration directory]'
50+ '(: --config-file)'--config-file'[Show path to the configuration file]'
51+ '(: --generate-config-file)'--generate-config-file'[Generates a default configuration file]'
52+ '(: --cache-dir)'--cache-dir'[Show bat'"'"'s cache directory]'
53+ '(: -)'{-h,--help}'[Print this help message]'
54+ '(: -)'{-V,--version}'[Show version information]'
55+ '*: :_files'
56+ )
57+
58+ _arguments -S -s $args
59+
60+ case "$state" in
61+ language)
62+ local IFS=$'\n'
63+ local -a languages
64+ languages=( $({{PROJECT_EXECUTABLE}} --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }') )
65+
66+ _describe 'language' languages
67+ ;;
68+
69+ theme)
70+ local IFS=$'\n'
71+ local -a themes
72+ themes=( $({{PROJECT_EXECUTABLE}} --list-themes | sort) )
73+
74+ _values 'theme' $themes
75+ ;;
76+
77+ style)
78+ _values -s , 'style' default auto full plain changes header header-filename header-filesize grid rule numbers snip
79+ ;;
80+ esac
81+}
82+
83+# first positional argument
84+if (( ${#words} == 2 )); then
85+ local -a subcommands
86+ subcommands=('cache:Modify the syntax-definition and theme cache')
87+ _describe subcommand subcommands
88+ _{{PROJECT_EXECUTABLE}}_main
89+else
90+ case $words[2] in
91+ cache)
92+ _{{PROJECT_EXECUTABLE}}_cache_subcommand
93+ ;;
94+
95+ *)
96+ _{{PROJECT_EXECUTABLE}}_main
97+ ;;
98+ esac
99+fi
assets/create.sh+60−8
@@ -1,17 +1,69 @@
1−#!/bin/bash
1+#!/usr/bin/env bash
2set -euo pipefail
2set -euo pipefail
3
3
4ASSET_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4ASSET_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5+REPO_DIR="$ASSET_DIR/.."
6+
7+# Ensure submodules are initialized.
8+update_submodules() {
9+ local submodule
10+ local submodule_prompt=unspecified
11+ local submodule_path
12+
13+ {
14+ while { read -r submodule && read -r submodule_path; } <&3; do
15+ if ! [[ -d "${REPO_DIR}/.git/modules/${submodule}" ]] && [[ -d "${REPO_DIR}/${submodule_path}" ]]; then
16+ if [[ "$submodule_prompt" = "unspecified" ]]; then
17+ echo "One or more submodules were found to be uninitialized."
18+ printf "Initialize and update them? [Y/n] "
19+ read -r submodule_prompt
20+ fi
21+
22+ case "$submodule_prompt" in
23+ y|yes|'') {
24+ git -C "$REPO_DIR" submodule update --init "$submodule_path"
25+ };;
26+ n|no) {
27+ return
28+ };;
29+ *) {
30+ echo "Unknown answer. Not updating submodules."
31+ };;
32+ esac
33+ fi
34+ done
35+ } 3< <(git config --file "${REPO_DIR}/.gitmodules" --null --get-regexp path | xargs -0 printf "%s\n" | sed 's/^submodule.//;s/.path$//')
36+}
37+
38+if [ -t 0 ]; then
39+ update_submodules
40+fi
5
41
6# Always remove the local cache to avoid any confusion
42# Always remove the local cache to avoid any confusion
7bat cache --clear
43bat cache --clear
8
44
9−# TODO: Remove this (and the reverse part below) when
45+# TODO:
10−# https://github.com/trishume/syntect/issues/222 has been fixed
46+# - Remove the JavaDoc patch once https://github.com/trishume/syntect/issues/222 has been fixed
11−JAVADOC_FILE="${ASSET_DIR}/syntaxes/Packages/Java/JavaDoc.sublime-syntax"
47+# - Remove the C# patch once https://github.com/sublimehq/Packages/pull/2331 has been merged
12−JAVADOC_PATCH="${ASSET_DIR}/JavaDoc.sublime-syntax.patch"
48+
13−patch "$JAVADOC_FILE" "$JAVADOC_PATCH"
49+# Apply patches
50+(
51+ cd "$ASSET_DIR"
52+ for patch in patches/*.patch; do
53+ patch --strip=0 < "$patch"
54+ done
55+)
56+
57+reverse_patches() {
58+ (
59+ cd "$ASSET_DIR"
60+ for patch in patches/*.patch; do
61+ patch --strip=0 --reverse <"$patch"
62+ done
63+ )
64+}
14
65
15−bat cache --build --blank --source="$ASSET_DIR" --target="$ASSET_DIR"
66+# Make sure to always reverse patches, even if the `bat cache` command fails or aborts
67+trap reverse_patches EXIT
16
68
17−patch -R "$JAVADOC_FILE" "$JAVADOC_PATCH"
69+bat cache --build --blank --acknowledgements --source="$ASSET_DIR" --target="$ASSET_DIR"
assets/manual/bat.1.innew file+238
@@ -0,0 +1,238 @@
1+.TH {{PROJECT_EXECUTABLE_UPPERCASE}} "1"
2+.SH NAME
3+{{PROJECT_EXECUTABLE}} \- a cat(1) clone with syntax highlighting and Git integration.
4+.SH "USAGE"
5+.IP "{{PROJECT_EXECUTABLE}} [OPTIONS] [FILE]..."
6+.IP "{{PROJECT_EXECUTABLE}} cache [CACHE-OPTIONS] [--build|--clear]
7+.SH DESCRIPTION
8+{{PROJECT_EXECUTABLE}} prints the syntax-highlighted content of a collection of FILEs to the
9+terminal. If no FILE is specified, or when FILE is '-', it reads from standard input.
10+
11+{{PROJECT_EXECUTABLE}} supports a large number of programming and markup languages.
12+It also communicates with git(1) to show modifications with respect to the git index.
13+{{PROJECT_EXECUTABLE}} automatically pipes its output through a pager (by default: less).
14+
15+Whenever the output of {{PROJECT_EXECUTABLE}} goes to a non-interactive terminal, i.e. when the
16+output is piped into another process or into a file, {{PROJECT_EXECUTABLE}} will act as a drop-in
17+replacement for cat(1) and fall back to printing the plain file contents.
18+
19+.SH "OPTIONS"
20+General remarks: Command-line options like '-l'/'--language' that take values can be specified as
21+either '--language value', '--language=value', '-l value' or '-lvalue'.
22+.HP
23+\fB\-A\fR, \fB\-\-show\-all\fR
24+.IP
25+Show non\-printable characters like space, tab or newline. Use '\-\-tabs' to
26+control the width of the tab\-placeholders.
27+.HP
28+\fB\-p\fR, \fB\-\-plain\fR
29+.IP
30+Only show plain style, no decorations. This is an alias for
31+\&'\-\-style=plain'. When '\-p' is used twice ('\-pp'), it also disables
32+automatic paging (alias for '\-\-style=plain \fB\-\-pager\fR=\fI\,never\/\fR').
33+.HP
34+\fB\-l\fR, \fB\-\-language\fR <language>
35+.IP
36+Explicitly set the language for syntax highlighting. The language can be
37+specified as a name (like 'C++' or 'LaTeX') or possible file extension
38+(like 'cpp', 'hpp' or 'md'). Use '\-\-list\-languages' to show all supported
39+language names and file extensions.
40+.HP
41+\fB\-H\fR, \fB\-\-highlight\-line\fR <N:M>...
42+.IP
43+Highlight the specified line ranges with a different background color. For example:
44+.RS
45+.IP "\-\-highlight\-line 40"
46+highlights line 40
47+.IP "\-\-highlight\-line 30:40"
48+highlights lines 30 to 40
49+.IP "\-\-highlight\-line :40"
50+highlights lines 1 to 40
51+.IP "\-\-highlight\-line 40:"
52+highlights lines 40 to the end of the file
53+.IP "\-\-highlight\-line 30:+10"
54+highlights lines 30 to 40
55+.RE
56+.HP
57+\fB\-\-file\-name\fR <name>...
58+.IP
59+Specify the name to display for a file. Useful when piping data to {{PROJECT_EXECUTABLE}} from STDIN when {{PROJECT_EXECUTABLE}} does not otherwise know the filename. Note that the provided file name is also used for syntax detection.
60+.HP
61+\fB\-d\fR, \fB\-\-diff\fR
62+.IP
63+Only show lines that have been added/removed/modified with respect to the Git index. Use '\-\-diff\-context=N' to control how much context you want to see.
64+.HP
65+\fB\-\-diff\-context\fR <N>...
66+.IP
67+Include N lines of context around added/removed/modified lines when using '\-\-diff'.
68+.HP
69+\fB\-\-tabs\fR <T>
70+.IP
71+Set the tab width to T spaces. Use a width of 0 to pass tabs through directly
72+.HP
73+\fB\-\-wrap\fR <mode>
74+.IP
75+Specify the text\-wrapping mode (*auto*, never, character). The '\-\-terminal\-width' option
76+can be used in addition to control the output width.
77+.HP
78+\fB\-\-terminal\-width\fR <width>
79+.IP
80+Explicitly set the width of the terminal instead of determining it automatically. If
81+prefixed with '+' or '\-', the value will be treated as an offset to the actual terminal
82+width. See also: '\-\-wrap'.
83+.HP
84+\fB\-n\fR, \fB\-\-number\fR
85+.IP
86+Only show line numbers, no other decorations. This is an alias for '\-\-style=numbers'
87+.HP
88+\fB\-\-color\fR <when>
89+.IP
90+Specify when to use colored output. The automatic mode only enables colors if an
91+interactive terminal is detected. Possible values: *auto*, never, always.
92+.HP
93+\fB\-\-italic\-text\fR <when>
94+.IP
95+Specify when to use ANSI sequences for italic text in the output. Possible values:
96+always, *never*.
97+.HP
98+\fB\-\-decorations\fR <when>
99+.IP
100+Specify when to use the decorations that have been specified via '\-\-style'. The
101+automatic mode only enables decorations if an interactive terminal is detected. Possible
102+values: *auto*, never, always.
103+.HP
104+\fB\-f\fR, \fB\-\-force\-colorization\fR
105+.IP
106+Alias for '--decorations=always --color=always'. This is useful \
107+if the output of {{PROJECT_EXECUTABLE}} is piped to another program, but you want \
108+to keep the colorization/decorations.
109+.HP
110+\fB\-\-paging\fR <when>
111+.IP
112+Specify when to use the pager. To disable the pager, use \&'\-\-paging=never' or its alias,
113+\fB-P\fR. To disable the pager permanently, set BAT_PAGER to an empty string. To control
114+which pager is used, see the '\-\-pager' option. Possible values: *auto*, never, always.
115+.HP
116+\fB\-\-pager\fR <command>
117+.IP
118+Determine which pager is used. This option will override the PAGER and BAT_PAGER
119+environment variables. The default pager is 'less'. To control when the pager is used, see
120+the '\-\-paging' option. Example: '\-\-pager "less \fB\-RF\fR"'.
121+
122+Note: By default, if the pager is set to 'less' (and no command-line options are specified), 'bat' will pass the following command line options to the pager: '-R'/'--RAW-CONTROL-CHARS', '-F'/'--quit-if-one-screen' and '-X'/'--no-init'. The last option ('-X') is only used for 'less' versions older than 530. The '-R' option is needed to interpret ANSI colors correctly. The second option ('-F') instructs less to exit immediately if the output size is smaller than the vertical size of the terminal. This is convenient for small files because you do not have to press 'q' to quit the pager. The third option ('-X') is needed to fix a bug with the '--quit-if-one-screen' feature in old versions of 'less'. Unfortunately, it also breaks mouse-wheel support in 'less'. If you want to enable mouse-wheel scrolling on older versions of 'less', you can pass just '-R' (as in the example above, this will disable the quit-if-one-screen feature). For less 530 or newer, it should work out of the box.
123+.HP
124+\fB\-m\fR, \fB\-\-map\-syntax\fR <glob-pattern:syntax-name>...
125+.IP
126+Map a glob pattern to an existing syntax name. The glob pattern is matched on the full
127+path and the filename. For example, to highlight *.build files with the Python syntax,
128+use -m '*.build:Python'. To highlight files named '.myignore' with the Git Ignore
129+syntax, use -m '.myignore:Git Ignore'.
130+Note that the right-hand side is the *name* of the syntax, not a file extension.
131+.HP
132+\fB\-\-theme\fR <theme>
133+.IP
134+Set the theme for syntax highlighting. Use '\-\-list\-themes' to see all available themes.
135+To set a default theme, add the '\-\-theme="..."' option to the configuration file or
136+export the BAT_THEME environment variable (e.g.: export BAT_THEME="...").
137+.HP
138+\fB\-\-list\-themes\fR
139+.IP
140+Display a list of supported themes for syntax highlighting.
141+.HP
142+\fB\-\-style\fR <style\-components>
143+.IP
144+Configure which elements (line numbers, file headers, grid borders, Git modifications,
145+\&..) to display in addition to the file contents. The argument is a comma\-separated list
146+of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
147+To set a default style, add the '\-\-style=".."' option to the configuration file or
148+export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
149+values: *default*, full, auto, plain, changes, header, header-filename, header-filesize, grid,
150+rule, numbers, snip.
151+.HP
152+\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
153+.IP
154+Only print the specified range of lines for each file. For example:
155+.RS
156+.IP "\-\-line\-range 30:40"
157+prints lines 30 to 40
158+.IP "\-\-line\-range :40"
159+prints lines 1 to 40
160+.IP "\-\-line\-range 40:"
161+prints lines 40 to the end of the file
162+.IP "\-\-line\-range 30:+10"
163+prints lines 30 to 40
164+.RE
165+.HP
166+\fB\-L\fR, \fB\-\-list\-languages\fR
167+.IP
168+Display a list of supported languages for syntax highlighting.
169+.HP
170+\fB\-u\fR, \fB\-\-unbuffered\fR
171+.IP
172+This option exists for POSIX\-compliance reasons ('u' is for 'unbuffered'). The output is
173+always unbuffered \- this option is simply ignored.
174+.HP
175+\fB\-h\fR, \fB\-\-help\fR
176+.IP
177+Print this help message.
178+.HP
179+\fB\-V\fR, \fB\-\-version\fR
180+.IP
181+Show version information.
182+.SH "POSITIONAL ARGUMENTS"
183+.HP
184+\fB<FILE>...\fR
185+.IP
186+Files to print and concatenate. Use a dash ('\-') or no argument at all to read from
187+standard input.
188+.SH "SUBCOMMANDS"
189+.HP
190+\fBcache\fR - Modify the syntax\-definition and theme cache.
191+.SH "FILES"
192+{{PROJECT_EXECUTABLE}} can also be customized with a configuration file. The location of the file
193+is dependent on your operating system. To get the default path for your system, call:
194+
195+\fB{{PROJECT_EXECUTABLE}} --config-file\fR
196+
197+Alternatively, you can use the BAT_CONFIG_PATH environment variable to point {{PROJECT_EXECUTABLE}} to a non-default
198+location of the configuration file.
199+
200+To generate a default configuration file, call:
201+
202+\fB{{PROJECT_EXECUTABLE}} --generate-config-file\fR
203+.SH "ADDING CUSTOM LANGUAGES"
204+{{PROJECT_EXECUTABLE}} supports Sublime Text \fB.sublime-syntax\fR language files, and can be
205+customized to add additional languages to your local installation. To do this, add the \fB.sublime-syntax\fR language
206+files to `\fB$({{PROJECT_EXECUTABLE}} --config-dir)/syntaxes\fR` and run `\fB{{PROJECT_EXECUTABLE}} cache --build\fR`.
207+
208+\fBExample:\fR
209+
210+.RS 0.5i
211+mkdir -p "$({{PROJECT_EXECUTABLE}} --config-dir)/syntaxes"
212+.br
213+cd "$({{PROJECT_EXECUTABLE}} --config-dir)/syntaxes"
214+
215+# Put new '.sublime-syntax' language definition files
216+.br
217+# in this folder (or its subdirectories), for example:
218+.br
219+git clone https://github.com/tellnobody1/sublime-purescript-syntax
220+
221+# And then build the cache.
222+.br
223+{{PROJECT_EXECUTABLE}} cache --build
224+.RE
225+
226+Once the cache is built, the new language will be visible in `\fB{{PROJECT_EXECUTABLE}} --list-languages\fR`.
227+.br
228+If you ever want to remove the custom languages, you can clear the cache with `\fB{{PROJECT_EXECUTABLE}} cache --clear\fR`.
229+
230+.SH "ADDING CUSTOM THEMES"
231+Similarly to custom languages, {{PROJECT_EXECUTABLE}} supports Sublime Text \fB.tmTheme\fR themes.
232+These can be installed to `\fB$({{PROJECT_EXECUTABLE}} --config-dir)/themes\fR`, and are added to the cache with
233+`\fB{{PROJECT_EXECUTABLE}} cache --build`.
234+.SH "MORE INFORMATION"
235+
236+For more information and up-to-date documentation, visit the {{PROJECT_EXECUTABLE}} repo:
237+.br
238+\fBhttps://github.com/sharkdp/bat\fR
assets/patches/C#.sublime-syntax.patchnew file+13
@@ -0,0 +1,13 @@
1+diff --git syntaxes/01_Packages/C#/C#.sublime-syntax syntaxes/01_Packages/C#/C#.sublime-syntax
2+index ed494f8b..01b710e8 100644
3+--- syntaxes/01_Packages/C#/C#.sublime-syntax
4++++ syntaxes/01_Packages/C#/C#.sublime-syntax
5+@@ -1312,7 +1312,7 @@ contexts:
6+ 2: punctuation.separator.cs
7+ 3: punctuation.section.brackets.end.cs
8+ 4: keyword.operator.pointer.cs
9+- - match: \((?=(?:[^,)(]*|\([^\)]*\))*,)
10++ - match: \((?=(?:[^,)(]|\([^\)]*\))*,)
11+ scope: punctuation.section.group.begin.cs
12+ push:
13+ - meta_scope: meta.group.tuple.cs
assets/patches/Groff.sublime-syntax.patchnew file+16
@@ -0,0 +1,16 @@
1+diff --git syntaxes/02_Extra/Groff/Man Page/Man Page.sublime-syntax syntaxes/02_Extra/Groff/Man Page/Man Page.sublime-syntax
2+index 57834af..6648664 100644
3+--- syntaxes/02_Extra/Groff/Man Page/Man Page.sublime-syntax
4++++ syntaxes/02_Extra/Groff/Man Page/Man Page.sublime-syntax
5+@@ -4,9 +4,9 @@
6+ # - man-pages(7)
7+ # - groff(7)
8+ ---
9+-name: Man Page (groff/troff)
10++name: Groff/troff
11+ scope: text.groff
12+-file_extensions: [man, groff, troff, '1', '2', '3', '4', '5', '6', '7']
13++file_extensions: [groff, troff, '1', '2', '3', '4', '5', '6', '7', '8', '9']
14+
15+ contexts:
16+ main:
assets/JavaDoc.sublime-syntax.patch → assets/patches/JavaDoc.sublime-syntax.patchrenamed+3−3
@@ -1,7 +1,7 @@
1−diff --git syntaxes/Packages/Java/JavaDoc.sublime-syntax syntaxes/Packages/Java/JavaDoc.sublime-syntax
1+diff --git syntaxes/01_Packages/Java/JavaDoc.sublime-syntax syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
2index 422a6a9..40a741e 100644
2index 422a6a9..40a741e 100644
3−--- syntaxes/Packages/Java/JavaDoc.sublime-syntax
3+--- syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
4−+++ syntaxes/Packages/Java/JavaDoc.sublime-syntax
4++++ syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
5@@ -13,7 +13,7 @@ variables:
5@@ -13,7 +13,7 @@ variables:
6 contexts:
6 contexts:
7 prototype:
7 prototype:
assets/patches/Makefile.sublime-syntax.patchnew file+81
@@ -0,0 +1,81 @@
1+diff --git syntaxes/01_Packages/Makefile/Makefile.sublime-syntax syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
2+index 3cc3a97e..0c7a3f24 100644
3+--- syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
4++++ syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
5+@@ -44,64 +44,50 @@ variables:
6+ # variable substitutions anywhere. We try to remedy this by hacking in a
7+ # regex that matches up to four levels of nested parentheses, and ignores
8+ # whatever's inside the parentheses.
9+- nps: '[^()]*'
10+- open: '(?:\('
11+- close: '\))?' # ignore this invalid.illegal
12++ nps_unnested: '[^()]*'
13++ nps: '[^()]*(?=[()])'
14++ open: '(?:{{nps}}\('
15++ close: '\){{nps_unnested}})?' # ignore this invalid.illegal
16+ just_eat: | # WARNING: INSANITY FOLLOWS!
17+- (?x) # ignore whitespace in this regex
18+- {{nps}} # level 0
19++ (?x)(?: # ignore whitespace in this regex
20+ {{open}} # start level 1 __
21+- {{nps}} # level 1 _______ /*_>-<
22+ {{open}} # start level 2 ___/ _____ \__/ /
23+- {{nps}} # level 2 <____/ \____/
24+ {{open}} # start level 3 is like snek... (by Valerie Haecky)
25+- {{nps}} # level 3
26+ {{open}} # start level 4
27+ {{nps}} # level 4
28+ {{close}} # end level 4
29+- {{nps}} # level 3
30+ {{close}} # end level 3
31+- {{nps}} # level 2
32+ {{open}} # start level 3
33+- {{nps}} # level 3
34+ {{open}} # start level 4
35+ {{nps}} # level 4
36+ {{close}} # end level 4
37+- {{nps}} # level 3
38+ {{close}} # end level 3
39+- {{nps}} # level 2
40++ {{nps}}
41+ {{close}} # end level 2
42+- {{nps}} # level 1
43+ {{open}} # start level 2
44+- {{nps}} # level 2
45+ {{open}} # start level 3
46+- {{nps}} # level 3
47+ {{open}} # start level 4
48+ {{nps}} # level 4
49+ {{close}} # end level 4
50+- {{nps}} # level 3
51++ {{nps}}
52+ {{close}} # end level 3
53+- {{nps}} # level 2
54+ {{open}} # start level 3
55+- {{nps}} # level 3
56+ {{open}} # start level 4
57+ {{nps}} # level 4
58+ {{close}} # end level 4
59+- {{nps}} # level 3
60++ {{nps}}
61+ {{close}} # end level 3
62+- {{nps}} # level 2
63+ {{open}} # start level 3
64+- {{nps}} # level 3
65+ {{open}} # start level 4
66+ {{nps}} # level 4
67+ {{close}} # end level 4
68+- {{nps}} # level 3
69++ {{nps}}
70+ {{close}} # end level 3
71+- {{nps}} # level 2
72++ {{nps}}
73+ {{close}} # end level 2
74+- {{nps}} # level 1
75++ {{nps}}
76+ {{close}} # end level 1
77+- {{nps}} # level 0
78++ |{{nps_unnested}})
79+ rule_lookahead: '{{just_eat}}{{ruleassign}}{{just_eat}}'
80+
81+ var_lookahead_base: '{{just_eat}}({{varassign}}|{{shellassign}}){{just_eat}}'
assets/patches/Markdown.sublime-syntax.patchnew file+177
@@ -0,0 +1,177 @@
1+diff --git syntaxes/01_Packages/Markdown/Markdown.sublime-syntax syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
2+index 19dc685d..44440c7f 100644
3+--- syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
4++++ syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
5+@@ -24,7 +24,6 @@ variables:
6+ )
7+ [ \t]*$ # followed by any number of tabs or spaces, followed by the end of the line
8+ )
9+- setext_escape: ^(?=\s{0,3}(?:---+|===+)\s*$)
10+ block_quote: (?:[ ]{,3}>(?:.|$)) # between 0 and 3 spaces, followed by a greater than sign, followed by any character or the end of the line
11+ atx_heading: (?:[#]{1,6}\s*) # between 1 and 6 hashes, followed by any amount of whitespace
12+ indented_code_block: (?:[ ]{4}|\t) # 4 spaces or a tab
13+@@ -277,69 +276,40 @@ contexts:
14+ 8: markup.underline.link.markdown
15+ push: [link-ref-def, after-link-title, link-title]
16+ - match: '^(?=\S)(?![=-]{3,}\s*$)'
17+- branch_point: heading2-branch
18+- branch:
19+- - not-heading2
20+- - heading2
21+-
22+- not-paragraph:
23+- - match: |-
24+- (?x) # pop out of this context when one of the following conditions are met:
25+- ^(?:
26+- \s*$ # the line is blank (or only contains whitespace)
27+- | (?=
28+- {{block_quote}} # a block quote begins the line
29+- | [ ]{,3}[*+-][ ] # an unordered list item begins the line
30+- | [ ]{,3}1[.][ ] # an ordered list item with number "1" begins the line
31+- | \# # an ATX heading begins the line
32+- | [ ]{,3}<( # all types of HTML blocks except type 7 may interrupt a paragraph
33+- {{html_tag_block_end_at_close_tag}} # 1
34+- | !-- # 2
35+- | \? # 3
36+- | ![A-Z] # 4
37+- | !\[CDATA\[ # 5
38+- | {{html_tag_block_end_at_blank_line}} # 6
39++ push:
40++ - meta_scope: meta.paragraph.markdown
41++ - match: |-
42++ (?x) # pop out of this context when one of the following conditions are met:
43++ ^(?:
44++ \s*$ # the line is blank (or only contains whitespace)
45++ | (?=
46++ {{block_quote}} # a block quote begins the line
47++ | [ ]{,3}[*+-][ ] # an unordered list item begins the line
48++ | [ ]{,3}1[.][ ] # an ordered list item with number "1" begins the line
49++ | \# # an ATX heading begins the line
50++ | [ ]{,3}<( # all types of HTML blocks except type 7 may interrupt a paragraph
51++ {{html_tag_block_end_at_close_tag}} # 1
52++ | !-- # 2
53++ | \? # 3
54++ | ![A-Z] # 4
55++ | !\[CDATA\[ # 5
56++ | {{html_tag_block_end_at_blank_line}} # 6
57++ )
58+ )
59+ )
60+- )
61+- pop: true
62+-
63+- not-heading2:
64+- - include: not-paragraph
65+- - match: (?=\S)
66+- branch_point: heading1-branch
67+- branch:
68+- - paragraph
69+- - heading1
70+- - match: ''
71+- pop: true
72+-
73+- paragraph:
74+- - meta_scope: meta.paragraph.markdown
75+- - match: ^\s{0,3}===+\s*$
76+- fail: heading1-branch
77+- - match: ^\s{0,3}---+\s*$
78+- fail: heading2-branch
79+- - include: not-paragraph
80+- - include: inline-bold-italic-linebreak
81+- - include: scope:text.html.basic
82+-
83+- heading1:
84+- - meta_scope: markup.heading.1.markdown
85+- - include: inline-bold-italic-linebreak
86+- - match: '^[ \t]{0,3}(={3,})(?=[ \t]*$)'
87+- captures:
88+- 1: markup.heading.1.setext.markdown punctuation.definition.heading.setext.markdown
89+- pop: true
90+-
91+- heading2:
92+- - meta_scope: markup.heading.2.markdown
93+- - include: inline-bold-italic-linebreak
94+- - match: '^[ \t]{0,3}(-{3,})(?=[ \t]*$)'
95+- captures:
96+- 1: markup.heading.2.setext.markdown punctuation.definition.heading.setext.markdown
97+- pop: true
98+-
99++ pop: true
100++ - include: inline-bold-italic-linebreak
101++ - include: scope:text.html.basic
102++ - match: '^(={3,})(?=[ \t]*$)'
103++ scope: markup.heading.1.setext.markdown
104++ captures:
105++ 1: punctuation.definition.heading.setext.markdown
106++ pop: true
107++ - match: '^(-{3,})(?=[ \t]*$)'
108++ scope: markup.heading.2.setext.markdown
109++ captures:
110++ 1: punctuation.definition.heading.setext.markdown
111++ pop: true
112+ link-ref-def:
113+ - meta_scope: meta.link.reference.def.markdown
114+ - match: ''
115+@@ -430,8 +400,6 @@ contexts:
116+ push:
117+ - meta_scope: markup.bold.markdown
118+ - meta_content_scope: markup.italic.markdown
119+- - match: '{{setext_escape}}'
120+- pop: true
121+ - match: |-
122+ (?x)
123+ [ \t]*\*{4,} # if there are more than 3 its not applicable to be bold or italic
124+@@ -446,8 +414,6 @@ contexts:
125+ scope: punctuation.definition.bold.end.markdown
126+ set:
127+ - meta_content_scope: markup.italic.markdown
128+- - match: '{{setext_escape}}'
129+- pop: true
130+ - match: |-
131+ (?x)
132+ [ \t]*\*{3,} # if there are more than 3 its not applicable to be bold or italic
133+@@ -463,8 +429,6 @@ contexts:
134+ scope: punctuation.definition.italic.end.markdown
135+ set:
136+ - meta_content_scope: markup.bold.markdown
137+- - match: '{{setext_escape}}'
138+- pop: true
139+ - match: |-
140+ (?x)
141+ [ \t]*\*{3,} # if there are more than 3 its not applicable to be bold or italic
142+@@ -727,8 +691,6 @@ contexts:
143+ scope: punctuation.definition.italic.begin.markdown
144+ push:
145+ - meta_scope: markup.italic.markdown
146+- - match: '{{setext_escape}}'
147+- pop: true
148+ - match: |-
149+ (?x)
150+ [ \t]*\*{4,} # if there are more than 3 its not applicable to be bold or italic
151+@@ -745,8 +707,6 @@ contexts:
152+ scope: punctuation.definition.italic.begin.markdown
153+ push:
154+ - meta_scope: markup.italic.markdown
155+- - match: '{{setext_escape}}'
156+- pop: true
157+ - match: |-
158+ (?x)
159+ [ \t]*_{4,} # if there are more than 3 its not applicable to be bold or italic
160+@@ -773,8 +733,6 @@ contexts:
161+ - include: bold-italic-trailing
162+ bold-italic-trailing:
163+ - include: scope:text.html.basic
164+- - match: '{{setext_escape}}'
165+- pop: true
166+ - match: ^\s*$\n?
167+ scope: invalid.illegal.non-terminated.bold-italic.markdown
168+ pop: true
169+@@ -1152,7 +1110,7 @@ contexts:
170+ - match: |-
171+ (?x)
172+ {{fenced_code_block_start}}
173+- ((?i:rust))
174++ ((?i:rust|rs))
175+ {{fenced_code_block_trailing_infostring_characters}}
176+ captures:
177+ 0: meta.code-fence.definition.begin.rust.markdown-gfm
assets/patches/MediaWiki.sublime-syntax.patchnew file+13
@@ -0,0 +1,13 @@
1+diff --git syntaxes/02_Extra/MediaWiki/MediawikiNG.sublime-syntax syntaxes/02_Extra/MediaWiki/MediawikiNG.sublime-syntax
2+index f542c9e..8eaf020 100644
3+--- syntaxes/02_Extra/MediaWiki/MediawikiNG.sublime-syntax
4++++ syntaxes/02_Extra/MediaWiki/MediawikiNG.sublime-syntax
5+@@ -1,7 +1,7 @@
6+ %YAML 1.2
7+ ---
8+ # http://www.sublimetext.com/docs/3/syntax.html
9+-name: Mediawiki NG
10++name: MediaWiki
11+ file_extensions: [mediawiki, wikipedia, wiki]
12+ scope: text.html.mediawiki
13+
assets/patches/Monokai-Extended.tmTheme.patchnew file+36
@@ -0,0 +1,36 @@
1+diff --git themes/sublime-monokai-extended/Monokai\ Extended.tmTheme themes/sublime-monokai-extended/Monokai\ Extended.tmTheme
2+index 9c2aa3e..180cbbf 100644
3+--- themes/sublime-monokai-extended/Monokai Extended.tmTheme
4++++ themes/sublime-monokai-extended/Monokai Extended.tmTheme
5+@@ -810,11 +810,11 @@
6+ <key>name</key>
7+ <string>JSON String</string>
8+ <key>scope</key>
9+- <string>meta.structure.dictionary.json string.quoted.double.json</string>
10++ <string>meta.mapping.key.json string.quoted.double.json, punctuation.separator.sequence.csv</string>
11+ <key>settings</key>
12+ <dict>
13+ <key>foreground</key>
14+- <string>#cfcfc2</string>
15++ <string>#fd971f</string>
16+ </dict>
17+ </dict>
18+ <dict>
19+@@ -1027,7 +1027,7 @@
20+ <key>name</key>
21+ <string>Invalid</string>
22+ <key>scope</key>
23+- <string>invalid</string>
24++ <string>invalid, markup.error</string>
25+ <key>settings</key>
26+ <dict>
27+ <key>background</key>
28+@@ -1042,7 +1042,7 @@
29+ <key>name</key>
30+ <string>Invalid deprecated</string>
31+ <key>scope</key>
32+- <string>invalid.deprecated</string>
33++ <string>invalid.deprecated, markup.warning</string>
34+ <key>settings</key>
35+ <dict>
36+ <key>background</key>
assets/patches/Python.sublime-syntax.patchnew file+15
@@ -0,0 +1,15 @@
1+diff --git syntaxes/01_Packages/Python/Python.sublime-syntax syntaxes/01_Packages/Python/Python.sublime-syntax
2+index 2acd86d8..86257f7b 100644
3+--- syntaxes/01_Packages/Python/Python.sublime-syntax
4++++ syntaxes/01_Packages/Python/Python.sublime-syntax
5+@@ -988,10 +988,6 @@ contexts:
6+ - match: \}
7+ scope: punctuation.section.mapping-or-set.end.python
8+ set: after-expression
9+- - match: (?={{simple_expression}}:|\s*\*\*)
10+- set: inside-dictionary
11+- - match: (?={{simple_expression}}[,}]|\s*\*)
12+- set: inside-set
13+ - match: ','
14+ scope: punctuation.separator.set.python
15+ set: inside-set
assets/patches/Rust.sublime-syntax.patchnew file+13
@@ -0,0 +1,13 @@
1+diff --git syntaxes/01_Packages/Rust/Rust.sublime-syntax syntaxes/01_Packages/Rust/Rust.sublime-syntax
2+index 3c354486..24727a4e 100644
3+--- syntaxes/01_Packages/Rust/Rust.sublime-syntax
4++++ syntaxes/01_Packages/Rust/Rust.sublime-syntax
5+@@ -907,6 +907,8 @@ contexts:
6+ - include: type-any-identifier
7+ - match: ':'
8+ scope: punctuation.separator.rust
9++ - match: (?=;)
10++ pop: true
11+
12+ fn-body:
13+ - meta_scope: meta.function.rust
assets/patches/ShellScript.sublime-syntax.patchnew file+20
@@ -0,0 +1,20 @@
1+diff --git syntaxes/01_Packages/ShellScript/Bash.sublime-syntax syntaxes/01_Packages/ShellScript/Bash.sublime-syntax
2+index e973e319..07c170a7 100644
3+--- syntaxes/01_Packages/ShellScript/Bash.sublime-syntax
4++++ syntaxes/01_Packages/ShellScript/Bash.sublime-syntax
5+@@ -30,12 +30,12 @@ file_extensions:
6+ - .zshenv
7+ - .zshrc
8+ - PKGBUILD # https://jlk.fjfi.cvut.cz/arch/manpages/man/PKGBUILD.5
9+- - .ebuild
10+- - .eclass
11++ - ebuild
12++ - eclass
13+
14+ first_line_match: |
15+ (?x)
16+- ^\#! .* \b(bash|zsh|sh|tcsh|ash)\b
17++ ^\#! .* \b(bash|zsh|sh|tcsh|ash|dash)\b
18+ | ^\# \s* -\*- [^*]* mode: \s* shell-script [^*]* -\*-
19+
20+ #-------------------------------------------------------------------------------
assets/patches/XML.sublime-syntax.patchnew file+12
@@ -0,0 +1,12 @@
1+diff --git syntaxes/01_Packages/XML/XML.sublime-syntax syntaxes/01_Packages/XML/XML.sublime-syntax
2+index ad7d9c87..af4a00f0 100644
3+--- syntaxes/01_Packages/XML/XML.sublime-syntax
4++++ syntaxes/01_Packages/XML/XML.sublime-syntax
5+@@ -12,6 +12,7 @@ file_extensions:
6+ - rss
7+ - opml
8+ - svg
9++ - xaml
10+ first_line_match: |-
11+ (?x:
12+ ^(?:
assets/syntaxes.bin

Binary file not shown.

assets/syntaxes/01_Packagesnew file+1

Submodule changed.

assets/syntaxes/02_Extra/AWKnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Apachenew file+1

Submodule changed.

assets/syntaxes/02_Extra/Apache.sublime-syntaxnew file+221
@@ -0,0 +1,221 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Apache Conf
5+file_extensions:
6+ - envvars
7+ - htaccess
8+ - HTACCESS
9+ - htgroups
10+ - HTGROUPS
11+ - htpasswd
12+ - HTPASSWD
13+ - .htaccess
14+ - .HTACCESS
15+ - .htgroups
16+ - .HTGROUPS
17+ - .htpasswd
18+ - .HTPASSWD
19+scope: source.apacheconf
20+contexts:
21+ main:
22+ - match: ^(\s)*(#).*$\n?
23+ scope: comment.line.hash.ini
24+ captures:
25+ 1: punctuation.definition.comment.apacheconf
26+ - match: (<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(\s(.+?))?(>)
27+ captures:
28+ 1: punctuation.definition.tag.apacheconf
29+ 2: entity.tag.apacheconf
30+ 4: string.value.apacheconf
31+ 5: punctuation.definition.tag.apacheconf
32+ - match: (</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(>)
33+ captures:
34+ 1: punctuation.definition.tag.apacheconf
35+ 2: entity.tag.apacheconf
36+ 3: punctuation.definition.tag.apacheconf
37+ - match: (?<=(Rewrite(Rule|Cond)))\s+(.+?)\s+(.+?)($|\s)
38+ captures:
39+ 3: string.regexp.apacheconf
40+ 4: string.replacement.apacheconf
41+ - match: (?<=RedirectMatch)(\s+(\d\d\d|permanent|temp|seeother|gone))?\s+(.+?)\s+((.+?)($|\s))?
42+ captures:
43+ 2: entity.status.apacheconf
44+ 3: string.regexp.apacheconf
45+ 5: string.path.apacheconf
46+ - match: (?<=Redirect)(\s+(\d\d\d|permanent|temp|seeother|gone))?\s+(.+?)\s+((.+?)($|\s))?
47+ captures:
48+ 2: entity.status.apacheconf
49+ 3: string.path.apacheconf
50+ 5: string.path.apacheconf
51+ - match: (?<=ScriptAliasMatch|AliasMatch)\s+(.+?)\s+((.+?)\s)?
52+ captures:
53+ 1: string.regexp.apacheconf
54+ 3: string.path.apacheconf
55+ - match: (?<=RedirectPermanent|RedirectTemp|ScriptAlias|Alias)\s+(.+?)\s+((.+?)($|\s))?
56+ captures:
57+ 1: string.path.apacheconf
58+ 3: string.path.apacheconf
59+ - match: \b(AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|Define|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include(Optional)?|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|Mutex|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|Time(O|o)ut|TraceEnable|UseCanonicalName|Use|ErrorLogFormat|GlobalLog|PHPIniDir|SSLHonorCipherOrder|SSLCompression|SSLUseStapling|SSLStapling\w+|SSLCARevocationCheck|SSLSRPVerifierFile|SSLSessionTickets|RequestReadTimeout|ProxyHTML\w+|MaxRanges)\b
60+ captures:
61+ 1: keyword.core.apacheconf
62+ - match: \b(AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxConnectionsPerChild|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\b
63+ captures:
64+ 1: keyword.mpm.apacheconf
65+ - match: \b(Allow|Deny|Order)\b
66+ captures:
67+ 1: keyword.access.apacheconf
68+ - match: \b(Action|Script)\b
69+ captures:
70+ 1: keyword.actions.apacheconf
71+ - match: \b(Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\b
72+ captures:
73+ 1: keyword.alias.apacheconf
74+ - match: \b(AuthAuthoritative|AuthGroupFile|AuthUserFile|AuthBasicProvider|AuthBasicFake|AuthBasicAuthoritative|AuthBasicUseDigestAlgorithm)\b
75+ captures:
76+ 1: keyword.auth.apacheconf
77+ - match: \b(Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\b
78+ captures:
79+ 1: keyword.auth_anon.apacheconf
80+ - match: \b(AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\b
81+ captures:
82+ 1: keyword.auth_dbm.apacheconf
83+ - match: \b(AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize|AuthDigestProvider)\b
84+ captures:
85+ 1: keyword.auth_digest.apacheconf
86+ - match: \b(AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\b
87+ captures:
88+ 1: keyword.auth_ldap.apacheconf
89+ - match: \b(AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|IndexStyleSheet|IndexHeadInsert|ReadmeName)\b
90+ captures:
91+ 1: keyword.autoindex.apacheconf
92+ - match: \b(BalancerMember|BalancerGrowth|BalancerPersist|BalancerInherit)\b
93+ captures:
94+ 1: keyword.filter.apacheconf
95+ - match: \b(CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\b
96+ captures:
97+ 1: keyword.cache.apacheconf
98+ - match: \b(MetaDir|MetaFiles|MetaSuffix)\b
99+ captures:
100+ 1: keyword.cern_meta.apacheconf
101+ - match: \b(ScriptLog|ScriptLogBuffer|ScriptLogLength)\b
102+ captures:
103+ 1: keyword.cgi.apacheconf
104+ - match: \b(ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\b
105+ captures:
106+ 1: keyword.cgid.apacheconf
107+ - match: \b(CharsetDefault|CharsetOptions|CharsetSourceEnc)\b
108+ captures:
109+ 1: keyword.charset_lite.apacheconf
110+ - match: \b(Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\b
111+ captures:
112+ 1: keyword.dav.apacheconf
113+ - match: \b(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\b
114+ captures:
115+ 1: keyword.deflate.apacheconf
116+ - match: \b(DirectoryIndex|DirectorySlash|FallbackResource)\b
117+ captures:
118+ 1: keyword.dir.apacheconf
119+ - match: \b(CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\b
120+ captures:
121+ 1: keyword.disk_cache.apacheconf
122+ - match: \b(DumpIOInput|DumpIOOutput)\b
123+ captures:
124+ 1: keyword.dumpio.apacheconf
125+ - match: \b(PassEnv|SetEnv|UnsetEnv)\b
126+ captures:
127+ 1: keyword.env.apacheconf
128+ - match: \b(ExpiresActive|ExpiresByType|ExpiresDefault)\b
129+ captures:
130+ 1: keyword.expires.apacheconf
131+ - match: \b(ExtFilterDefine|ExtFilterOptions)\b
132+ captures:
133+ 1: keyword.ext_filter.apacheconf
134+ - match: \b(CacheFile|MMapFile)\b
135+ captures:
136+ 1: keyword.file_cache.apacheconf
137+ - match: \b(AddOutputFilterByType|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace)\b
138+ captures:
139+ 1: keyword.filter.apacheconf
140+ - match: \b(Header|RequestHeader)\b
141+ captures:
142+ 1: keyword.headers.apacheconf
143+ - match: \b(ImapBase|ImapDefault|ImapMenu)\b
144+ captures:
145+ 1: keyword.imap.apacheconf
146+ - match: \b(SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\b
147+ captures:
148+ 1: keyword.include.apacheconf
149+ - match: \b(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\b
150+ captures:
151+ 1: keyword.isapi.apacheconf
152+ - match: \b(LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\b
153+ captures:
154+ 1: keyword.ldap.apacheconf
155+ - match: \b(BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\b
156+ captures:
157+ 1: keyword.log.apacheconf
158+ - match: \b(MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\b
159+ captures:
160+ 1: keyword.mem_cache.apacheconf
161+ - match: \b(AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\b
162+ captures:
163+ 1: keyword.mime.apacheconf
164+ - match: \b(ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\b
165+ captures:
166+ 1: keyword.misc.apacheconf
167+ - match: \b(CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\b
168+ captures:
169+ 1: keyword.negotiation.apacheconf
170+ - match: \b(NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\b
171+ captures:
172+ 1: keyword.nw_ssl.apacheconf
173+ - match: \b(AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassMatch|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\b
174+ captures:
175+ 1: keyword.proxy.apacheconf
176+ - match: \b(RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\b
177+ captures:
178+ 1: keyword.rewrite.apacheconf
179+ - match: \b(BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\b
180+ captures:
181+ 1: keyword.setenvif.apacheconf
182+ - match: \b(LoadFile|LoadModule)\b
183+ captures:
184+ 1: keyword.so.apacheconf
185+ - match: \b(SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|SSLInsecureRenegotiation|SSLOpenSSLConfCmd)\b
186+ captures:
187+ 1: keyword.ssl.apacheconf
188+ - match: \b(Substitute|SubstituteInheritBefore|SubstituteMaxLineLength)\b
189+ captures:
190+ 1: keyword.substitute.apacheconf
191+ - match: \b(CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\b
192+ captures:
193+ 1: keyword.usertrack.apacheconf
194+ - match: \b(VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\b
195+ captures:
196+ 1: keyword.vhost_alias.apacheconf
197+ - match: \b(php_value|php_flag|php_admin_value|php_admin_flag)\b(\s+(.+?)(\s+(".+?"|.+?))?)?\s
198+ captures:
199+ 1: keyword.php.apacheconf
200+ 3: entity.property.apacheconf
201+ 5: string.value.apacheconf
202+ - match: '(%\{)((HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\})'
203+ captures:
204+ 1: punctuation.variable.apacheconf
205+ 3: variable.env.apacheconf
206+ 4: variable.misc.apacheconf
207+ 5: punctuation.variable.apacheconf
208+ - match: \b((text|image|application|video|audio)/.+?)\s
209+ captures:
210+ 1: entity.mime-type.apacheconf
211+ - match: \b(?i)(export|from|unset|set|on|off)\b
212+ captures:
213+ 1: entity.helper.apacheconf
214+ - match: \b(\d+)\b
215+ captures:
216+ 1: constant.numeric.integer.decimal.apacheconf
217+ - match: '\s(\[)(.*?)(\])\s'
218+ captures:
219+ 1: punctuation.definition.flag.apacheconf
220+ 2: string.flag.apacheconf
221+ 3: punctuation.definition.flag.apacheconf
assets/syntaxes/02_Extra/AsciiDocnew file+1

Submodule changed.

assets/syntaxes/02_Extra/AsciiDoc.sublime-syntaxnew file+997
@@ -0,0 +1,997 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: AsciiDoc (Asciidoctor)
5+file_extensions:
6+ - adoc
7+ - ad
8+ - asciidoc
9+scope: text.asciidoc
10+contexts:
11+ main:
12+ - include: lists
13+ - include: blocks
14+ - include: section_titles
15+ - include: lines
16+ - include: inline
17+ - include: characters
18+ attribute_entry:
19+ - match: |-
20+ (?x)
21+ ^(:) # opening delimiter
22+ (!)? # bang symbol (unset attribute)
23+ ([A-Za-z0-9_][A-Za-z0-9_-]*) # attribute name
24+ (!)? # bang symbol (unset attribute)
25+ (:) # closing delimiter
26+ (?:\s+|(?=$))
27+ comment: |
28+ An attribute entry.
29+
30+ Examples:
31+ :my-attribute: value
32+ :sectnums!:
33+ :!sectnums:
34+ captures:
35+ 1: punctuation.definition.attributeentry.attrname.begin.asciidoc
36+ 2: punctuation.definition.attributeentry.unset.asciidoc
37+ 3: support.variable.attribute.asciidoc
38+ 4: punctuation.definition.attributeentry.unset.asciidoc
39+ 5: punctuation.definition.attributeentry.attrname.end.asciidoc
40+ push:
41+ - meta_scope: meta.attributeentry.asciidoc
42+ - meta_content_scope: meta.attributeentry.value.asciidoc
43+ - match: $\n?
44+ pop: true
45+ - include: characters
46+ attribute_list_line:
47+ - match: '^(\[)[^\[\]]*(\])\s*$\n?'
48+ comment: "Attribute list as paragraph: single brackets. No need for special treatment of escape; follows literal block, section template as being a more general regex."
49+ scope: support.variable.attributelist.asciidoc
50+ captures:
51+ 1: punctuation.definition.attributelistline.begin.asciidoc
52+ 2: punctuation.definition.attributelistline.end.asciidoc
53+ attribute_reference:
54+ - match: "({)([A-Za-z0-9_][A-Za-z0-9_-]*)(})"
55+ comment: |
56+ Examples:
57+ {my-attribute}
58+ scope: variable.other
59+ captures:
60+ 1: constant.character.attributes.reference.begin.asciidoc
61+ 2: support.variable.attribute.asciidoc
62+ 3: constant.character.attributes.reference.end.asciidoc
63+ biblio_anchor:
64+ - match: '(?<!\[)(\[\[\[).*?(\]\]\])(?!\])'
65+ comment: |
66+ Bibliography anchor
67+
68+ Examples:
69+ [[[Lorem ipsum]]]
70+ scope: storage.type.reference.biblioanchor.asciidoc
71+ captures:
72+ 1: punctuation.definition.biblioanchor.begin.asciidoc
73+ 2: punctuation.definition.biblioanchor.end.asciidoc
74+ block_admonition_label:
75+ - match: ^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):(?=\s+)
76+ comment: |
77+ Label of an admonition block.
78+
79+ Examples:
80+ NOTE: This is a admonition block.
81+ WARNING: Be aware of them!
82+ scope: support.constant.admonitionword.asciidoc
83+ block_comment:
84+ - match: '^(/{4,})\s*$\n?'
85+ comment: |
86+ Examples:
87+ ////
88+ A multi-line comment.
89+ Notice it's a delimited block.
90+ ////
91+ captures:
92+ 0: punctuation.definition.comment.begin.asciidoc
93+ push:
94+ - meta_scope: comment.block.asciidoc
95+ - meta_content_scope: meta.block.comment.content.asciidoc
96+ - match: ^\1\s*$\n?
97+ captures:
98+ 0: punctuation.definition.comment.end.asciidoc
99+ pop: true
100+ - include: macro
101+ block_example:
102+ - match: '^(={4,})\s*$\n?'
103+ comment: |
104+ Examples:
105+ ====
106+ Lorem ipsum.
107+ ====
108+
109+ Note: Might need to add more includes, but these are the ones that arise in
110+ practice for me.
111+ captures:
112+ 0: constant.delimiter.example.begin.asciidoc
113+ push:
114+ - meta_scope: string.unquoted.block.example.asciidoc
115+ - meta_content_scope: meta.block.example.content.asciidoc
116+ - match: ^\1\s*$\n?
117+ captures:
118+ 0: constant.delimiter.example.end.asciidoc
119+ pop: true
120+ - include: lists
121+ - include: block_listing
122+ - include: lines
123+ - include: inline
124+ - include: characters
125+ block_id:
126+ - match: '^(\[\[)([^\[].*)(\]\])\s*$\n?'
127+ comment: |
128+ A block id (i.e. anchor).
129+
130+ Examples:
131+ [[myid]]
132+ Lorem ipsum dolor.
133+ scope: meta.tag.blockid.asciidoc
134+ captures:
135+ 1: punctuation.definition.blockid.begin.asciidoc
136+ 2: markup.underline.blockid.id.asciidoc
137+ 3: punctuation.definition.blockid.end.asciidoc
138+ block_listing:
139+ - match: '^(\-{4,})\s*$\n?'
140+ comment: |
141+ Examples:
142+ ----
143+ Lorem ipsum.
144+ ----
145+ captures:
146+ 0: constant.delimiter.listing.begin.asciidoc
147+ push:
148+ - meta_scope: meta.embedded.block.listing.asciidoc
149+ - meta_content_scope: source.block.listing.content.asciidoc
150+ - match: ^\1\s*$\n?
151+ captures:
152+ 0: constant.delimiter.listing.end.asciidoc
153+ pop: true
154+ - include: inline_callout
155+ block_literal:
156+ - match: '^(\.{4,})\s*$\n?'
157+ comment: |
158+ Examples:
159+ ....
160+ Lorem ipsum.
161+ ....
162+ captures:
163+ 0: constant.delimiter.block.literal.begin.asciidoc
164+ push:
165+ - meta_scope: string.literal.block.delimited.asciidoc
166+ - meta_content_scope: meta.block.literal.content.asciidoc
167+ - match: ^\1\s*$\n?
168+ captures:
169+ 0: constant.delimiter.block.literal.end.asciidoc
170+ pop: true
171+ - include: inline_callout
172+ block_open:
173+ - match: ^\-\-\s*$\n?
174+ comment: |
175+ Examples:
176+ --
177+ Lorem ipsum
178+ --
179+ Note: Might need to check on these includes.
180+ captures:
181+ 0: constant.delimiter.block.open.begin.asciidoc
182+ push:
183+ - meta_scope: meta.block.open.asciidoc
184+ - meta_content_scope: meta.block.open.content.asciidoc
185+ - match: ^\-\-\s*$\n?
186+ captures:
187+ 0: constant.delimiter.block.open.end.asciidoc
188+ pop: true
189+ - include: lists
190+ - include: block_comment
191+ - include: block_listing
192+ - include: block_pass
193+ - include: lines
194+ - include: inline
195+ - include: characters
196+ block_page_break:
197+ - match: '^<{3,}$\n?'
198+ comment: |
199+ A page break.
200+
201+ Examples:
202+ <<<
203+ <<<<<
204+ scope: meta.separator.pagebreak.asciidoc
205+ block_pass:
206+ - match: '^(\+{4,})\s*$\n?'
207+ captures:
208+ 0: constant.delimiter.block.passthrough.begin.asciidoc
209+ push:
210+ - meta_scope: meta.embedded.block.passthrough.asciidoc
211+ - meta_content_scope: text.xml.block.passthrough.content.asciidoc
212+ - match: ^\1\s*$\n?
213+ captures:
214+ 0: constant.delimiter.block.passthrough.end.asciidoc
215+ pop: true
216+ - include: scope:text.xml
217+ block_quote:
218+ - match: '^(_{4,})\s*$\n?'
219+ comment: |
220+ Examples:
221+ ____
222+ Lorem ipsum
223+ ____
224+
225+ Note: Might need to add more includes, but these are the ones that arise for me in practice.
226+ captures:
227+ 0: constant.delimiter.block.quote.begin.asciidoc
228+ push:
229+ - meta_scope: markup.quote.block.asciidoc
230+ - meta_content_scope: meta.block.quote.content.asciidoc
231+ - match: ^\1\s*$\n?
232+ captures:
233+ 0: constant.delimiter.block.quote.end.asciidoc
234+ pop: true
235+ - include: lines
236+ - include: inline
237+ - include: characters
238+ block_sidebar:
239+ - match: '^(\*{4,})\s*$\n?'
240+ comment: |
241+ Examples:
242+ ****
243+ Lorem ipsum
244+ ****
245+
246+ Note: Might need to add more includes, but these are the ones that arise
247+ for me in practice.
248+ captures:
249+ 0: constant.delimiter.block.sidebar.begin.asciidoc
250+ push:
251+ - meta_scope: string.quoted.block.sidebar.asciidoc
252+ - meta_content_scope: meta.block.sidebar.content.asciidoc
253+ - match: ^\1\s*$\n?
254+ captures:
255+ 0: constant.delimiter.block.sidebar.end.asciidoc
256+ pop: true
257+ - include: lists
258+ - include: block_comment
259+ - include: block_listing
260+ - include: lines
261+ - include: inline
262+ - include: characters
263+ block_source_fenced:
264+ - match: ^(```)(\w+)?\s*$\n?
265+ comment: |
266+ Fenced code block (ala Markdown)
267+
268+ Examples:
269+ ```rb
270+ puts 'Hello world!'
271+ ```
272+ captures:
273+ 0: constant.delimiter.listing.begin.asciidoc
274+ push:
275+ - meta_scope: meta.embedded.block.listing.asciidoc
276+ - meta_content_scope: source.block.listing.content.asciidoc
277+ - match: ^\1\s*$\n?
278+ captures:
279+ 0: constant.delimiter.listing.end.asciidoc
280+ pop: true
281+ - include: inline_callout
282+ block_thematic_break:
283+ - match: '^''{3,}$\n?'
284+ comment: |
285+ A thematic break (aka horizontal rule).
286+
287+ Examples:
288+ '''
289+ ''''''
290+ scope: meta.separator.ruler.asciidoc
291+ block_title:
292+ - match: ^(\.)\w.*$\n?
293+ comment: |
294+ Title of a block.
295+
296+ Examples:
297+ .My title
298+ Lorem ipsum dolor.
299+ scope: markup.heading.block.asciidoc
300+ captures:
301+ 1: punctuation.definition.blockheading.asciidoc
302+ blocks:
303+ - include: block_literal
304+ - include: block_comment
305+ - include: block_listing
306+ - include: block_source_fenced
307+ - include: block_sidebar
308+ - include: block_pass
309+ - include: block_quote
310+ - include: block_example
311+ - include: block_open
312+ characters:
313+ - include: attribute_reference
314+ - include: entity_number
315+ - include: entity_name
316+ - include: escape
317+ - include: replacement
318+ - include: macro_pass
319+ - include: macro
320+ - include: xref
321+ - include: biblio_anchor
322+ - include: indexterm_triple
323+ - include: indexterm_double
324+ colist_item_marker:
325+ - match: ^(\s*((<)\d+?(>)))\s+(?=\S)
326+ comment: |
327+ Marker of a callout list item.
328+
329+ Examples:
330+ <1> a callout
331+ <42> another callout
332+ scope: markup.list.numbered.callout.asciidoc
333+ captures:
334+ 1: string.unquoted.list.callout.asciidoc
335+ 2: constant.numeric.callout.asciidoc
336+ 3: punctuation.definition.calloutlistnumber.begin.asciidoc
337+ 4: punctuation.definition.calloutlistnumber.end.asciidoc
338+ dlist_item_label:
339+ - match: '^\s*(?=.*:{2,4}(?:\s|$))'
340+ comment: |
341+ Label of a definition (labeled) list item.
342+
343+ Examples:
344+ Label level 1:: lorem ipsum
345+ Label level 2::: dolor sit amet
346+ Label level 3:::: consectetur
347+ Label level 1::
348+ lorem ipsum
349+ Another label :: lorem ipsum
350+ Last::label:: dolor sit amet
351+
352+ Note: This rule is not strictly correct, because Asciidoctor allows
353+ double colon followed by a space inside a label, i.e. it matches the
354+ *last* double colon, not the first. I don't know how to do that
355+ *effectively.
356+ push:
357+ - meta_scope: markup.list.labeled.asciidoc
358+ - meta_content_scope: meta.list.label.asciidoc
359+ - match: '(:{2,4})(?:\s|$\n?)'
360+ captures:
361+ 1: constant.labeledlist.separator.asciidoc
362+ pop: true
363+ - include: inline
364+ - include: characters
365+ emphasis:
366+ - match: |-
367+ (?x)
368+ (\[[^\]]*?\])? # might be preceded by an attributes list
369+ (?<=^|\W)(?<!\\|}) # must be preceded by nonword character, and not by escape or } (attribute)
370+ (_)(?=\S) # delimiter underscore that must be followed by a nonspace character
371+ comment: |
372+ Emphasized (italic) text (constrained variant).
373+
374+ Examples:
375+ _Lorem ipsum_ dolor
376+ [red]_Lorem ipsum_ dolor
377+ captures:
378+ 1: support.variable.attributelist.asciidoc
379+ 2: punctuation.definition.italic.single.begin.asciidoc
380+ push:
381+ - meta_scope: markup.italic.single.asciidoc
382+ - meta_content_scope: meta.italicinner.single.asciidoc
383+ - match: |-
384+ (?x)
385+ (?<=\S)(_) # delimiter underscore that must be preceded by a nonspace character
386+ (?!\w) # ...and followed by a nonword character
387+ captures:
388+ 1: punctuation.definition.italic.single.end.asciidoc
389+ pop: true
390+ - include: strong_double
391+ - include: monospaced_double
392+ - include: mark_double
393+ - include: strong
394+ - include: monospaced
395+ - include: mark
396+ - include: superscript
397+ - include: subscript
398+ - include: characters
399+ emphasis_double:
400+ - match: |-
401+ (?x)
402+ (\[[^\]]*?\])? # might start with attribute list
403+ (?<!\\) # must not be preceded by escape
404+ (__)
405+ comment: |
406+ Emphasized (italic) text (unconstrained variant).
407+
408+ Examples:
409+ Lo__re__m __ipsum dolor__.
410+ Lo[red]__re__m
411+ captures:
412+ 1: support.variable.attributelist.asciidoc
413+ 2: punctuation.definition.italic.double.begin.asciidoc
414+ push:
415+ - meta_scope: markup.italic.double.asciidoc
416+ - meta_content_scope: meta.italicinner.double.asciidoc
417+ - match: __
418+ captures:
419+ 0: punctuation.definition.italic.double.end.asciidoc
420+ pop: true
421+ - include: strong_double
422+ - include: monospaced_double
423+ - include: mark_double
424+ - include: strong
425+ - include: monospaced
426+ - include: mark
427+ - include: superscript
428+ - include: subscript
429+ - include: characters
430+ entity_name:
431+ - match: '(?<!\\)&([a-zA-Z][a-zA-Z0-9]*);'
432+ comment: |
433+ Character entity reference
434+
435+ Examples:
436+ &nbsp;
437+ &sup2;
438+ scope: constant.character.entity.xml.asciidoc
439+ entity_number:
440+ - match: '(?<!\\)&#(x?[0-9a-fA-f]{2,4});'
441+ comment: |
442+ Numeric character reference
443+
444+ Examples:
445+ &#x278a;
446+ &#182;
447+ scope: constant.character.entity.asciidoc
448+ escape:
449+ - match: '\\(?=[-`*_#+.!(){}\[\]\\>:])'
450+ comment: |
451+ List of special characters that may be escaped.
452+
453+ Note: I do not really know if this is a good list, adopted wholesale from
454+ original bundle.
455+ scope: constant.character.escape.asciidoc
456+ indexterm_double:
457+ - match: '(?<!\()(\({2})([^\(\s].*?)(\){2})(?!\))'
458+ comment: |
459+ Double parenthesis indexterm.
460+
461+ Examples:
462+ ((Arthur))
463+ scope: variable.other.indexterm.double.asciidoc
464+ captures:
465+ 1: constant.character.indexterm.double.begin.asciidoc
466+ 3: constant.character.indexterm.double.end.asciidoc
467+ indexterm_triple:
468+ - match: '(?<!\()(\({3})([^\(].*?)(\){3})(?!\))'
469+ comment: |
470+ Triple parenthesis indexterm.
471+
472+ Examples:
473+ (((Sword, Broadsword, Excalibur)))
474+ scope: variable.other.indexterm.triple.asciidoc
475+ captures:
476+ 1: constant.character.indexterm.triple.begin.asciidoc
477+ 3: constant.character.indexterm.triple.end.asciidoc
478+ inline:
479+ - include: passthrough
480+ - include: strong_double
481+ - include: emphasis_double
482+ - include: monospaced_double
483+ - include: mark_double
484+ - include: strong
485+ - include: emphasis
486+ - include: monospaced
487+ - include: mark
488+ - include: superscript
489+ - include: subscript
490+ inline_break:
491+ - match: (?<=\s)\+$\n?
492+ comment: |
493+ Line hard break with a plus sign (+).
494+
495+ Examples:
496+ Rubies are red, +
497+ Topazes are blue.
498+ scope: constant.linebreak.asciidoc
499+ inline_callout:
500+ - match: (?<!\\)(<)\d+(>)
501+ comment: |
502+ Callout label
503+
504+ Examples:
505+ <1>
506+ <42>
507+ scope: constant.other.callout.asciidoc
508+ captures:
509+ 1: punctuation.definition.callout.begin.asciidoc
510+ 2: punctuation.definition.callout.end.asciidoc
511+ inline_comment:
512+ - match: '^(//)([^/\n].*|)$\n?'
513+ comment: |
514+ Inline comment.
515+
516+ Examples:
517+ // This is just a comment!
518+ scope: comment.line.double-slash.asciidoc
519+ captures:
520+ 1: punctuation.definition.comment.line.asciidoc
521+ 2: meta.line.comment.content.asciidoc
522+ lines:
523+ - include: inline_comment
524+ - include: list_continuation
525+ - include: inline_break
526+ - include: block_page_break
527+ - include: block_thematic_break
528+ - include: block_title
529+ - include: block_id
530+ - include: section_template
531+ - include: attribute_list_line
532+ - include: attribute_entry
533+ list_continuation:
534+ - match: ^\+\s*$\n?
535+ scope: constant.listcontinuation.asciidoc
536+ lists:
537+ - include: block_admonition_label
538+ - include: ulist_item_marker
539+ - include: olist_item_marker
540+ - include: dlist_item_label
541+ - include: colist_item_marker
542+ macro:
543+ - match: |-
544+ (?x)
545+ (?:
546+ ((?:https?|mailto|ftp|file) # specify separately so we can mark them as links that TextMate opens
547+ ?:{1} # inline only
548+ \S*) # (others such as image are partial URLs and/or TextMate cannot handle them)
549+ |
550+ (([a-zA-Z0-9][a-zA-Z0-9_]*)
551+ (:{1,2})
552+ (\S*))
553+ )
554+ (?:(\[)([^\]]*)(\]))
555+ comment: |
556+ Note: There are other macro notations, but I match only those that end in
557+ square brackets.
558+ scope: meta.macro.asciidoc
559+ captures:
560+ 1: markup.underline.link.macro.asciidoc
561+ 3: keyword.control.name.macro.asciidoc
562+ 4: constant.character.separator.macro.asciidoc
563+ 5: markup.underline.target.macro.asciidoc
564+ 6: constant.character.attributes.macro.begin.asciidoc
565+ 7: variable.parameter.attributes.macro.asciidoc
566+ 8: constant.character.attributes.macro.end.asciidoc
567+ macro_pass:
568+ - match: |-
569+ (?x)
570+ (pass)
571+ (:{1,2})
572+ (\S*)
573+ (\[)(?=[^\]]*\])
574+ comment: |
575+ Passthrough macro
576+
577+ Examples:
578+ pass:[Lorem ipsum]
579+ pass::[Lorem ipsum]
580+ captures:
581+ 1: keyword.control.name.macro.pass.asciidoc
582+ 2: constant.character.separator.macro.asciidoc
583+ 3: markup.underline.target.macro.asciidoc
584+ 4: constant.character.attributes.macro.begin.asciidoc
585+ push:
586+ - meta_scope: meta.macro.pass.asciidoc
587+ - meta_content_scope: variable.parameter.attributes.macro.pass.asciidoc
588+ - match: '\]'
589+ captures:
590+ 0: constant.character.attributes.macro.end.asciidoc
591+ pop: true
592+ - include: scope:text.xml
593+ mark:
594+ - match: |-
595+ (?x)
596+ (\[[^\]]*?\])? # might start with attribute list (darned well better or why are we here)
597+ (?<=^|\W)(?<!\\|}) # must be preceded by nonword character, and not by escape or } (attribute)
598+ (\#)(?=\S) # delimiter hash that must be followed by a nonspace character
599+ comment: |
600+ Marked text (constrained variant).
601+
602+ Examples:
603+ #Lorem ipsum# dolor
604+ [red]#Lorem ipsum# dolor
605+ captures:
606+ 1: support.variable.attributelist.asciidoc
607+ 2: punctuation.definition.string.unquoted.single.begin.asciidoc
608+ push:
609+ - meta_scope: string.other.unquoted.single.asciidoc
610+ - meta_content_scope: string.unquoted.unquotedinner.single.asciidoc
611+ - match: |-
612+ (?x)
613+ (?<=\S)(\#) # delimiter hash that must be preceded by a nonspace character
614+ (?!\w) # ...and followed by a nonword character
615+ captures:
616+ 1: punctuation.definition.string.unquoted.single.end.asciidoc
617+ pop: true
618+ - include: strong_double
619+ - include: emphasis_double
620+ - include: monospaced_double
621+ - include: strong
622+ - include: emphasis
623+ - include: monospaced
624+ - include: superscript
625+ - include: subscript
626+ - include: characters
627+ mark_double:
628+ - match: |-
629+ (?x)
630+ (\[[^\]]*?\])? # might start with an attribute list (indeed, that is its purpose)
631+ (?<!\\) # must not be preceded by escape
632+ (\#\#)
633+ comment: |
634+ Marked text (unconstrained variant).
635+
636+ Examples:
637+ Lo##re##m ##ipsum dolor##.
638+ Lo[red]##re##m
639+ captures:
640+ 1: support.variable.attributelist.asciidoc
641+ 2: punctuation.definition.string.unquoted.double.begin.asciidoc
642+ push:
643+ - meta_scope: string.other.unquoted.double.asciidoc
644+ - meta_content_scope: string.unquoted.unquotedinner.double.asciidoc
645+ - match: '\#\#'
646+ captures:
647+ 0: punctuation.definition.string.unquoted.double.end.asciidoc
648+ pop: true
649+ - include: strong_double
650+ - include: emphasis_double
651+ - include: monospaced_double
652+ - include: strong
653+ - include: emphasis
654+ - include: monospaced
655+ - include: superscript
656+ - include: subscript
657+ - include: characters
658+ monospaced:
659+ - match: |-
660+ (?x)
661+ (\[[^\]]*?\])? # might start with attributes list
662+ (?<=^|\W)(?<!\\|}) # must be preceded by nonword character, and not by escape or } (attribute)
663+ (`)(?=\S) # delimiter backtick that must be followed by a nonspace character
664+ comment: |
665+ Monospaced text (constrained variant).
666+
667+ Examples:
668+ `Lorem ipsum` dolor
669+ [red]`Lorem ipsum` dolor
670+ captures:
671+ 1: support.variable.attributelist.asciidoc
672+ 2: punctuation.definition.literal.single.begin.asciidoc
673+ push:
674+ - meta_scope: string.other.literal.single.asciidoc
675+ - meta_content_scope: meta.literalinner.single.asciidoc
676+ - match: |-
677+ (?x)
678+ (?<=\S)(`) # delimiter backtick that must be preceded by a nonspace character
679+ (?!\w) # ...and followed by a nonword character
680+ captures:
681+ 1: punctuation.definition.literal.single.end.asciidoc
682+ pop: true
683+ - include: strong_double
684+ - include: emphasis_double
685+ - include: mark_double
686+ - include: strong
687+ - include: emphasis
688+ - include: mark
689+ - include: superscript
690+ - include: subscript
691+ - include: characters
692+ monospaced_double:
693+ - match: |-
694+ (?x)
695+ (\[[^\]]*?\])? # might start with attribute list
696+ (?<!\\) # must not be preceded by escape
697+ (``)
698+ comment: |
699+ Monospaced text (unconstrained variant).
700+
701+ Examples:
702+ Lo``re``m ``ipsum dolor``.
703+ Lo[red]``re``m
704+ captures:
705+ 1: support.variable.attributelist.asciidoc
706+ 2: punctuation.definition.literal.double.begin.asciidoc
707+ push:
708+ - meta_scope: string.other.literal.double.asciidoc
709+ - meta_content_scope: meta.literalinner.double.asciidoc
710+ - match: "``"
711+ captures:
712+ 0: punctuation.definition.literal.double.end.asciidoc
713+ pop: true
714+ - include: strong_double
715+ - include: emphasis_double
716+ - include: mark_double
717+ - include: strong
718+ - include: emphasis
719+ - include: mark
720+ - include: superscript
721+ - include: subscript
722+ - include: characters
723+ olist_item_marker:
724+ - match: '^(\s*(\.{1,5}))\s+(?=\S)'
725+ comment: |
726+ Marker of an ordered (numbered) list item.
727+
728+ Examples:
729+ . level 1
730+ .. level 2
731+ ... level 3
732+ .... level 4
733+ ..... level 5
734+
735+ Note: The space distinguishes it from a block title.
736+ scope: markup.list.numbered.dotted.asciidoc
737+ captures:
738+ 1: string.unquoted.list.dotted.asciidoc
739+ 2: constant.numeric.list.dot.asciidoc
740+ passthrough:
741+ - match: (\+\+\+|\$\$)
742+ comment: |
743+ Inline triple-plus and double dolar passthrough.
744+
745+ Examples:
746+ Lo+++re++++m +++ipsum dolor+++.
747+ Lo$$re$$m $$ipsum dolor$$.
748+
749+ Note: Must be dead first among the inlines, so as to take priority.
750+ captures:
751+ 1: constant.character.passthru.begin.asciidoc
752+ push:
753+ - meta_scope: meta.passthru.inline.asciidoc
754+ - meta_content_scope: variable.parameter.passthruinner.asciidoc
755+ - match: \1
756+ captures:
757+ 0: constant.character.passthru.end.asciidoc
758+ pop: true
759+ replacement:
760+ - match: |-
761+ (?x)
762+ (?<!\\) # must not be escaped
763+ (
764+ \(C\)
765+ | \(TM\)
766+ | \(R\)
767+ | ((?<!\-)\-\-(?!\-)) # exactly two, and even this may not rule out all that I want to
768+ | ((?<!\.)\.\.\.(?!\.)) # exactly three
769+ | \->
770+ | <\-
771+ | =>
772+ | <=
773+ )
774+ scope: constant.character.replacement.asciidoc
775+ section_template:
776+ - match: |-
777+ (?x)^
778+ (\[) # in square brackets
779+ (template\s*=\s*)?(")? # might start with template-equals and might have template name in quotes
780+ (
781+ sect\d|abstract|preface|colophon|dedication|glossary|bibliography|synopsis|appendix|index # fixed list of known templates
782+ )
783+ (".*(\])|(\])) # either close the quote (and perhaps go on) and close the bracket, or close the bracket immediately
784+ \s*$\n?
785+ comment: fixed list of known template names
786+ scope: variable.parameter.sectiontemplate.asciidoc
787+ captures:
788+ 1: punctuation.definition.sectiontemplate.begin.asciidoc
789+ 4: meta.tag.sectiontemplate.asciidoc
790+ 6: punctuation.definition.sectiontemplate.end.asciidoc
791+ 7: punctuation.definition.sectiontemplate.end.asciidoc
792+ section_titles:
793+ - include: title_level_5
794+ - include: title_level_4
795+ - include: title_level_3
796+ - include: title_level_2
797+ - include: title_level_1
798+ - include: title_level_0
799+ strong:
800+ - match: |-
801+ (?x)
802+ (\[[^\]]*?\])? # might start with an attributes list
803+ (?<=^|\W)(?<!\\|}) # must be preceded by nonword character, and not by escape or } (attribute)
804+ (\*)(?=\S) # delimiter star that must be followed by a nonspace character
805+ comment: |
806+ Strong (bold) text (constrained variant).
807+
808+ Examples:
809+ *Lorem ipsum* dolor
810+ [red]*Lorem ipsum* dolor
811+ captures:
812+ 1: support.variable.attributelist.asciidoc
813+ 2: punctuation.definition.bold.single.begin.asciidoc
814+ push:
815+ - meta_scope: markup.bold.single.asciidoc
816+ - meta_content_scope: meta.boldinner.single.asciidoc
817+ - match: |-
818+ (?x)
819+ (?<=\S)(\*) # delimiter star that must be preceded by a nonspace character
820+ (?!\w) # ...and followed by a nonword character
821+ captures:
822+ 1: punctuation.definition.bold.single.end.asciidoc
823+ pop: true
824+ - include: emphasis_double
825+ - include: monospaced_double
826+ - include: mark_double
827+ - include: emphasis
828+ - include: monospaced
829+ - include: mark
830+ - include: superscript
831+ - include: subscript
832+ - include: characters
833+ strong_double:
834+ - match: |-
835+ (?x)
836+ (\[[^\]]*?\])? # might start with an attribute list
837+ (?<!\\) # must not be preceded by escape
838+ (\*\*)
839+ comment: |
840+ Strong (bold) text (unconstrained variant).
841+
842+ Examples:
843+ Lo**re**m **ipsum dolor**.
844+ Lo[red]**re**m
845+ captures:
846+ 1: support.variable.attributelist.asciidoc
847+ 2: punctuation.definition.bold.double.begin.asciidoc
848+ push:
849+ - meta_scope: markup.bold.double.asciidoc
850+ - meta_content_scope: meta.boldinner.double.asciidoc
851+ - match: \*\*
852+ captures:
853+ 0: punctuation.definition.bold.double.end.asciidoc
854+ pop: true
855+ - include: emphasis_double
856+ - include: monospaced_double
857+ - include: mark_double
858+ - include: emphasis
859+ - include: monospaced
860+ - include: mark
861+ - include: superscript
862+ - include: subscript
863+ - include: characters
864+ subscript:
865+ - match: |-
866+ (?x)
867+ (\[[^\]]*?\])? # might start with attribute list
868+ (?<!\\) # must not be preceded by escape
869+ (~)
870+ comment: |
871+ Subscript text.
872+
873+ Examples:
874+ E=mc^2^
875+ E=mc[red]^2^
876+ captures:
877+ 1: support.variable.attributelist.asciidoc
878+ 2: punctuation.definition.string.subscript.begin.asciidoc
879+ push:
880+ - meta_scope: string.other.subscript.asciidoc
881+ - meta_content_scope: meta.subscriptinner.asciidoc
882+ - match: '~' # this tilda a problem if unquoted
883+ captures:
884+ 0: punctuation.definition.string.subscript.end.asciidoc
885+ pop: true
886+ - include: strong_double
887+ - include: emphasis_double
888+ - include: monospaced_double
889+ - include: mark_double
890+ - include: strong
891+ - include: emphasis
892+ - include: monospaced
893+ - include: mark
894+ - include: superscript
895+ - include: characters
896+ superscript:
897+ - match: |-
898+ (?x)
899+ (\[[^\]]*?\])? # might start with attribute list
900+ (?<!\\) # no preceding escape
901+ (\^)
902+ comment: |
903+ Superscript text.
904+
905+ Examples:
906+ H~2~O
907+ H[red]~2~O
908+ captures:
909+ 1: support.variable.attributelist.asciidoc
910+ 2: punctuation.definition.string.superscript.begin.asciidoc
911+ push:
912+ - meta_scope: string.other.superscript.asciidoc
913+ - meta_content_scope: meta.superscriptinner.asciidoc
914+ - match: ^
915+ captures:
916+ 0: punctuation.definition.string.superscript.end.asciidoc
917+ pop: true
918+ - include: strong_double
919+ - include: emphasis_double
920+ - include: monospaced_double
921+ - include: mark_double
922+ - include: strong
923+ - include: emphasis
924+ - include: monospaced
925+ - include: mark
926+ - include: subscript
927+ - include: characters
928+ title_level_0:
929+ - match: ^(=) (\w.*)$\n?
930+ scope: markup.heading.level.0.asciidoc
931+ captures:
932+ 1: punctuation.definition.heading.asciidoc
933+ 2: entity.name.section.asciidoc
934+ title_level_1:
935+ - match: ^(==) (\w.*)$\n?
936+ scope: markup.heading.level.1.asciidoc
937+ captures:
938+ 1: punctuation.definition.heading.asciidoc
939+ 2: entity.name.section.asciidoc
940+ title_level_2:
941+ - match: ^(===) (\w.*)$\n?
942+ scope: markup.heading.level.2.asciidoc
943+ captures:
944+ 1: punctuation.definition.heading.asciidoc
945+ 2: entity.name.section.asciidoc
946+ title_level_3:
947+ - match: ^(====) (\w.*)$\n?
948+ scope: markup.heading.level.3.asciidoc
949+ captures:
950+ 1: punctuation.definition.heading.asciidoc
951+ 2: entity.name.section.asciidoc
952+ title_level_4:
953+ - match: ^(=====) (\w.*)$\n?
954+ scope: markup.heading.level.4.asciidoc
955+ captures:
956+ 1: punctuation.definition.heading.asciidoc
957+ 2: entity.name.section.asciidoc
958+ title_level_5:
959+ - match: ^(======) (\w.*)$\n?
960+ scope: markup.heading.level.5.asciidoc
961+ captures:
962+ 1: punctuation.definition.heading.asciidoc
963+ 2: entity.name.section.asciidoc
964+ ulist_item_marker:
965+ - match: '^(\s*(\-|\*{1,5}))\s+(?=\S)'
966+ comment: |
967+ Marker of an unordered (bullet) list item.
968+
969+ Examples:
970+ * level 1
971+ ** level 2
972+ *** level 3
973+ **** level 4
974+ ***** level 5
975+ - level 1
976+ -- level 2
977+ --- level 3
978+ ---- level 4
979+ ----- level 5
980+ scope: markup.list.bulleted.asciidoc
981+ captures:
982+ 1: string.unquoted.list.bullet.asciidoc
983+ 2: constant.numeric.list.bullet.asciidoc
984+ xref:
985+ - match: '(?<!<)(<<)([^,]*?)((,\s*)(.*?))?(>>)(?!<)'
986+ comment: |
987+ Internal cross-reference
988+
989+ Examples:
990+ <<lorem>>
991+ <<lorem, see here>>
992+ scope: meta.xref.asciidoc
993+ captures:
994+ 1: constant.character.xref.begin.asciidoc
995+ 2: markup.underline.term.xref.asciidoc
996+ 5: variable.parameter.xref.asciidoc
997+ 6: constant.character.xref.end.asciidoc
assets/syntaxes/Assembly (ARM) → assets/syntaxes/02_Extra/Assembly (ARM)renamed

The content is the same.

assets/syntaxes/Assembly (ARM).sublime-syntax → assets/syntaxes/02_Extra/Assembly (ARM).sublime-syntaxrenamed

The content is the same.

assets/syntaxes/Assembly (x86_64).sublime-syntax → assets/syntaxes/02_Extra/Assembly (x86_64).sublime-syntaxrenamed

The content is the same.

assets/syntaxes/02_Extra/CMakenew file+1

Submodule changed.

assets/syntaxes/02_Extra/CSV.sublime-syntaxnew file+78
@@ -0,0 +1,78 @@
1+%YAML 1.2
2+---
3+# See http://www.sublimetext.com/docs/3/syntax.html
4+name: Comma Separated Values
5+file_extensions:
6+ - csv
7+ - tsv
8+scope: text.csv
9+variables:
10+ field_separator: (?:[,;\t])
11+ record_separator: (?:$\n?)
12+contexts:
13+ prototype:
14+ - match: (?={{record_separator}})
15+ pop: true
16+ fields:
17+ - match: ''
18+ push:
19+ - field_or_record_separator
20+ - field4
21+ - field_or_record_separator
22+ - field3
23+ - field_or_record_separator
24+ - field2
25+ - field_or_record_separator
26+ - field1
27+ main:
28+ - meta_include_prototype: false
29+ - match: '^'
30+ set: fields
31+
32+ field_or_record_separator:
33+ - meta_include_prototype: false
34+ - match: '{{record_separator}}'
35+ scope: punctuation.terminator.record.csv
36+ pop: true
37+ - match: '{{field_separator}}'
38+ scope: punctuation.separator.sequence.csv
39+ pop: true
40+
41+ field_contents:
42+ - match: '"'
43+ scope: punctuation.definition.string.begin.csv
44+ push: double_quoted_string
45+
46+ - match: (?={{field_separator}}|{{record_separator}})
47+ pop: true
48+
49+ double_quoted_string:
50+ - meta_include_prototype: false
51+ - meta_scope: string.quoted.double.csv
52+ - match: '""'
53+ scope: constant.character.escape.csv
54+ - match: '"'
55+ scope: punctuation.definition.string.end.csv
56+ pop: true
57+
58+ field1:
59+ - match: ''
60+ set:
61+ - meta_content_scope: meta.field-1.csv support.type
62+ - include: field_contents
63+ field2:
64+ - match: ''
65+ set:
66+ - meta_content_scope: meta.field-2.csv support.function
67+ - include: field_contents
68+ field3:
69+ - match: ''
70+ set:
71+ - meta_content_scope: meta.field-3.csv constant.numeric
72+ - include: field_contents
73+ field4:
74+ - match: ''
75+ set:
76+ - meta_content_scope: meta.field-4.csv keyword.operator
77+ - include: field_contents
78+
assets/syntaxes/Cabal.sublime-syntax → assets/syntaxes/02_Extra/Cabal.sublime-syntaxrenamed+1−1
@@ -33,7 +33,7 @@ contexts:
33 captures:
33 captures:
34 1: constant.other.cabal
34 1: constant.other.cabal
35 2: punctuation.entity.cabal
35 2: punctuation.entity.cabal
36− - match: '^(?i)(executable|library|test-suite|benchmark|flag|source-repository)\s+([^\s,]+)\s*$'
36+ - match: '^(?i)(executable|library|test-suite|benchmark|flag|source-repository|custom-setup)\s+([^\s,]+)\s*$'
37 scope: entity.cabal
37 scope: entity.cabal
38 captures:
38 captures:
39 1: keyword.entity.cabal
39 1: keyword.entity.cabal
assets/syntaxes/02_Extra/CoffeeScriptnew file+1

Submodule changed.

assets/syntaxes/02_Extra/CoffeeScript.sublime-syntaxnew file+271
@@ -0,0 +1,271 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: CoffeeScript
5+comment: "CoffeeScript Syntax: version 1"
6+file_extensions:
7+ - coffee
8+ - Cakefile
9+ - coffee.erb
10+ - cson
11+first_line_match: ^#!.*\bcoffee
12+scope: source.coffee
13+contexts:
14+ main:
15+ - match: '(\([^()]*?\))\s*([=-]>)'
16+ comment: "match stuff like: a -> …"
17+ scope: meta.inline.function.coffee
18+ captures:
19+ 1: variable.parameter.function.coffee
20+ 2: storage.type.function.coffee
21+ - match: (new)\s+(\w+(?:\.\w*)*)
22+ scope: meta.class.instance.constructor
23+ captures:
24+ 1: keyword.operator.new.coffee
25+ 2: support.class.coffee
26+ - match: "'''"
27+ captures:
28+ 0: punctuation.definition.string.begin.coffee
29+ push:
30+ - meta_scope: string.quoted.heredoc.coffee
31+ - match: "'''"
32+ captures:
33+ 0: punctuation.definition.string.end.coffee
34+ pop: true
35+ - match: '"""'
36+ captures:
37+ 0: punctuation.definition.string.begin.coffee
38+ push:
39+ - meta_scope: string.quoted.double.heredoc.coffee
40+ - match: '"""'
41+ captures:
42+ 0: punctuation.definition.string.end.coffee
43+ pop: true
44+ - match: \\.
45+ scope: constant.character.escape.coffee
46+ - include: interpolated_coffee
47+ - match: "`"
48+ captures:
49+ 0: punctuation.definition.string.begin.coffee
50+ push:
51+ - meta_scope: string.quoted.script.coffee
52+ - match: "`"
53+ captures:
54+ 0: punctuation.definition.string.end.coffee
55+ pop: true
56+ - match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
57+ scope: constant.character.escape.coffee
58+ - match: (?<!#)###(?!#)
59+ captures:
60+ 0: punctuation.definition.comment.coffee
61+ push:
62+ - meta_scope: comment.block.coffee
63+ - match: '###(?:[ \t]*\n)'
64+ captures:
65+ 0: punctuation.definition.comment.coffee
66+ pop: true
67+ - match: '@\w*'
68+ scope: storage.type.annotation.coffeescript
69+ - match: '(#)(?!\{).*$\n?'
70+ scope: comment.line.number-sign.coffee
71+ captures:
72+ 1: punctuation.definition.comment.coffee
73+ - match: "/{3}"
74+ push:
75+ - meta_scope: string.regexp.coffee
76+ - match: "/{3}[imgy]{0,4}"
77+ pop: true
78+ - include: interpolated_coffee
79+ - include: embedded_comment
80+ - match: '/(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])'
81+ scope: string.regexp.coffee
82+ - match: |-
83+ (?x)
84+ \b(?<![\.\$])(
85+ break|by|catch|continue|else|finally|for|in|of|if|return|switch|
86+ then|throw|try|unless|when|while|until|loop|do|(?<=for)\s+own
87+ )(?!\s*:)\b
88+ scope: keyword.control.coffee
89+ - match: |-
90+ (?x)
91+ and=|or=|!|%|&|\^|\*|\/|(\-)?\-(?!>)|\+\+|\+|~|==|=(?!>)|!=|<=|>=|<<=|>>=|
92+ >>>=|<>|<|>|!|&&|\.\.(\.)?|\?|\||\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|
93+ \^=|\b(?<![\.\$])(instanceof|new|delete|typeof|and|or|is|isnt|not|super)\b
94+ scope: keyword.operator.coffee
95+ - match: '([a-zA-Z\$_](\w|\$|\.)*\s*(?!\::)((:)|(=[^=]))(?!(\s*\(.*\))?\s*((=|-)>)))'
96+ scope: variable.assignment.coffee
97+ captures:
98+ 1: variable.assignment.coffee
99+ 4: punctuation.separator.key-value
100+ 5: keyword.operator.coffee
101+ - match: '(?<=\s|^)([\[\{])(?=.*?[\]\}]\s+[:=])'
102+ captures:
103+ 0: keyword.operator.coffee
104+ push:
105+ - meta_scope: meta.variable.assignment.destructured.coffee
106+ - match: '([\]\}]\s*[:=])'
107+ captures:
108+ 0: keyword.operator.coffee
109+ pop: true
110+ - include: variable_name
111+ - include: instance_variable
112+ - include: single_quoted_string
113+ - include: double_quoted_string
114+ - include: numeric
115+ - match: |-
116+ (?x)
117+ (\s*)
118+ (?=[a-zA-Z\$_])
119+ (
120+ [a-zA-Z\$_](\w|\$|:|\.)*\s*
121+ (?=[:=](\s*\(.*\))?\s*([=-]>))
122+ )
123+ scope: meta.function.coffee
124+ captures:
125+ 2: entity.name.function.coffee
126+ 3: entity.name.function.coffee
127+ 4: variable.parameter.function.coffee
128+ 5: storage.type.function.coffee
129+ - match: ^\s*(describe|it|app\.(get|post|put|all|del|delete))
130+ comment: Show well-known functions from Express and Mocha in Go To Symbol view
131+ push:
132+ - meta_scope: meta.function.symbols.coffee
133+ - match: $
134+ pop: true
135+ - include: main
136+ - match: "[=-]>"
137+ scope: storage.type.function.coffee
138+ - match: '\b(?<!\.)(true|on|yes)(?!\s*[:=])\b'
139+ scope: constant.language.boolean.true.coffee
140+ - match: '\b(?<!\.)(false|off|no)(?!\s*[:=])\b'
141+ scope: constant.language.boolean.false.coffee
142+ - match: '\b(?<!\.)null(?!\s*[:=])\b'
143+ scope: constant.language.null.coffee
144+ - match: '\b(?<!\.)(this|extends)(?!\s*[:=])\b'
145+ scope: variable.language.coffee
146+ - match: '(class\b)\s+(@?[a-zA-Z\$_][\w\.]*)?(?:\s+(extends)\s+(@?[a-zA-Z\$\._][\w\.]*))?'
147+ scope: meta.class.coffee
148+ captures:
149+ 1: storage.type.class.coffee
150+ 2: entity.name.type.class.coffee
151+ 3: keyword.control.inheritance.coffee
152+ 4: entity.other.inherited-class.coffee
153+ - match: \b(debugger|\\)\b
154+ scope: keyword.other.coffee
155+ - match: |-
156+ (?x)\b(
157+ Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function|
158+ Int(8|16|32|64)Array|Math|Map|Number|
159+ Object|Proxy|RegExp|Set|String|WeakMap|
160+ window|Uint(8|16|32|64)Array|XMLHttpRequest
161+ )\b
162+ scope: support.class.coffee
163+ - match: ((?<=console\.)(debug|warn|info|log|error|time|timeEnd|assert))\b
164+ scope: support.function.console.coffee
165+ - match: |-
166+ (?x)\b(
167+ decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require
168+ )\b
169+ scope: support.function.coffee
170+ - match: |-
171+ (?x)((?<=\.)(
172+ apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|
173+ isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|
174+ reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|
175+ unshift|valueOf
176+ ))\b
177+ scope: support.function.method.array.coffee
178+ - match: |-
179+ (?x)((?<=Array\.)(
180+ isArray
181+ ))\b
182+ scope: support.function.static.array.coffee
183+ - match: |-
184+ (?x)((?<=Object\.)(
185+ create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|
186+ getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|
187+ isnt|keys|preventExtensions|seal
188+ ))\b
189+ scope: support.function.static.object.coffee
190+ - match: |-
191+ (?x)((?<=Math\.)(
192+ abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|
193+ hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|
194+ tan|tanh|trunc
195+ ))\b
196+ scope: support.function.static.math.coffee
197+ - match: |-
198+ (?x)((?<=Number\.)(
199+ is(Finite|Integer|NaN)|toInteger
200+ ))\b
201+ scope: support.function.static.number.coffee
202+ - match: \b(Infinity|NaN|undefined)\b
203+ scope: constant.language.coffee
204+ - match: \;
205+ scope: punctuation.terminator.statement.coffee
206+ - match: ',[ |\t]*'
207+ scope: meta.delimiter.object.comma.coffee
208+ - match: \.
209+ scope: meta.delimiter.method.period.coffee
210+ - match: '\{|\}'
211+ scope: meta.brace.curly.coffee
212+ - match: \(|\)
213+ scope: meta.brace.round.coffee
214+ - match: '\[|\]\s*'
215+ scope: meta.brace.square.coffee
216+ - include: instance_variable
217+ - include: single_quoted_string
218+ - include: double_quoted_string
219+ - include: numeric
220+ double_quoted_string:
221+ - match: '"'
222+ captures:
223+ 0: punctuation.definition.string.begin.coffee
224+ push:
225+ - meta_scope: string.quoted.double.coffee
226+ - match: '"'
227+ captures:
228+ 0: punctuation.definition.string.end.coffee
229+ pop: true
230+ - match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
231+ scope: constant.character.escape.coffee
232+ - include: interpolated_coffee
233+ embedded_comment:
234+ - match: (?<!\\)(#).*$\n?
235+ scope: comment.line.number-sign.coffee
236+ captures:
237+ 1: punctuation.definition.comment.coffee
238+ instance_variable:
239+ - match: '(@)([a-zA-Z_\$]\w*)?'
240+ scope: variable.other.readwrite.instance.coffee
241+ interpolated_coffee:
242+ - match: '\#\{'
243+ captures:
244+ 0: punctuation.section.embedded.coffee
245+ push:
246+ - meta_scope: source.coffee.embedded.source
247+ - match: '\}'
248+ captures:
249+ 0: punctuation.section.embedded.coffee
250+ pop: true
251+ - include: main
252+ numeric:
253+ - match: '(?<!\$)\b((0([box])[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?))\b'
254+ scope: constant.numeric.coffee
255+ single_quoted_string:
256+ - match: "'"
257+ captures:
258+ 0: punctuation.definition.string.begin.coffee
259+ push:
260+ - meta_scope: string.quoted.single.coffee
261+ - match: "'"
262+ captures:
263+ 0: punctuation.definition.string.end.coffee
264+ pop: true
265+ - match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)'
266+ scope: constant.character.escape.coffee
267+ variable_name:
268+ - match: '([a-zA-Z\$_]\w*(\.\w+)*)'
269+ scope: variable.assignment.coffee
270+ captures:
271+ 1: variable.assignment.coffee
assets/syntaxes/02_Extra/CpuInfo.sublime-syntaxnew file+14
@@ -0,0 +1,14 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: CpuInfo
5+file_extensions:
6+ - cpuinfo
7+scope: source.cpuinfo
8+
9+contexts:
10+ main:
11+ - match: '^([^:]+)\w*:\w*(.*)$'
12+ captures:
13+ 1: keyword.other.cpuinfo-key
14+ 2: string.other.cpuinfo-value
assets/syntaxes/02_Extra/Crystalnew file+1

Submodule changed.

assets/syntaxes/Crystal.sublime-syntax → assets/syntaxes/02_Extra/Crystal.sublime-syntaxrenamed+12−11
@@ -108,7 +108,7 @@ contexts:
108 - match: (?<!\.)\belse(\s)+if\b
108 - match: (?<!\.)\belse(\s)+if\b
109 comment: else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.
109 comment: else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.
110 scope: invalid.deprecated.crystal
110 scope: invalid.deprecated.crystal
111− - match: '(?<!\.)\b(BEGIN|alias|as|begin|case|select|abstract|class|END|ensure|for|fun|if|ifdef|in|lib|module|of|out|private|protected|rescue|struct|with|union|enum|macro|then|type|unless|until|while)\b(?![?!])'
111+ - match: '(?<!\.)\b(BEGIN|alias|as|begin|case|select|abstract|class|END|ensure|for|fun|if|ifdef|in|lib|module|of|out|private|protected|rescue|struct|with|union|enum|macro|then|unless|until|while)\b(?![?!])|(?<!\.)\btype\b\s*(?=[A-Z])'
112 comment: everything being a reserved word, not a value and needing a 'end' is a..
112 comment: everything being a reserved word, not a value and needing a 'end' is a..
113 scope: keyword.control.primary.crystal
113 scope: keyword.control.primary.crystal
114 - match: '(?<!\.)\b(when|else|elsif)\b(?![?!])'
114 - match: '(?<!\.)\b(when|else|elsif)\b(?![?!])'
@@ -131,9 +131,9 @@ contexts:
131 scope: keyword.control.pseudo-method.crystal
131 scope: keyword.control.pseudo-method.crystal
132 - match: '\b(nil|true|false)\b(?![?!])'
132 - match: '\b(nil|true|false)\b(?![?!])'
133 scope: constant.language.crystal
133 scope: constant.language.crystal
134− - match: '\b(__(DIR|FILE|LINE)__|self)\b(?![?!])'
134+ - match: '\b(__(DIR|FILE|LINE|END_LINE)__|self)\b(?![?!])|self[?]'
135 scope: variable.language.crystal
135 scope: variable.language.crystal
136− - match: '\b(initialize|new|loop|include|extend|raise|getter|setter|property|class_getter|class_setter|class_property|describe|it|with|delegate|def_hash|def_equals|def_equals_and_hash|forward_missing_to|record|assert_responds_to|spawn)\b[!?]?'
136+ - match: '\b(initialize|new|loop|include|extend|raise|getter|setter|property|class_getter|class_setter|class_property|describe|context|it|with|delegate|def_hash|def_equals|def_equals_and_hash|forward_missing_to|record|assert_responds_to|spawn|annotation|verbatim)\b[!?]?'
137 comment: everything being a method but having a special function is a..
137 comment: everything being a method but having a special function is a..
138 scope: keyword.control.special-method.crystal
138 scope: keyword.control.special-method.crystal
139 - match: \b(require)\b
139 - match: \b(require)\b
@@ -180,7 +180,7 @@ contexts:
180 (?<=^|\s)(def)\s+ # the def keyword
180 (?<=^|\s)(def)\s+ # the def keyword
181 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>\.|::))? # a method name prefix
181 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>\.|::))? # a method name prefix
182 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>[?!]|=(?!>))? # the method name
182 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>[?!]|=(?!>))? # the method name
183− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
183+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) # …or an operator method
184 \s*(\() # the openning parenthesis for arguments
184 \s*(\() # the openning parenthesis for arguments
185 comment: the method pattern comes from the symbol pattern, see there for a explaination
185 comment: the method pattern comes from the symbol pattern, see there for a explaination
186 captures:
186 captures:
@@ -190,7 +190,7 @@ contexts:
190 push:
190 push:
191 - meta_scope: meta.function.method.with-arguments.crystal
191 - meta_scope: meta.function.method.with-arguments.crystal
192 - meta_content_scope: variable.parameter.function.crystal
192 - meta_content_scope: variable.parameter.function.crystal
193− - match: \)\s*$|\)\s*:|\)\s*;
193+ - match: \)
194 captures:
194 captures:
195 0: punctuation.definition.parameters.crystal
195 0: punctuation.definition.parameters.crystal
196 pop: true
196 pop: true
@@ -201,7 +201,7 @@ contexts:
201 (?<=^|\s)(def)\s+ # the def keyword
201 (?<=^|\s)(def)\s+ # the def keyword
202 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
202 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
203 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
203 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
204− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
204+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) # …or an operator method
205 [ \t] # the space separating the arguments
205 [ \t] # the space separating the arguments
206 (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow
206 (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow
207 comment: same as the previous rule, but without parentheses around the arguments
207 comment: same as the previous rule, but without parentheses around the arguments
@@ -221,7 +221,7 @@ contexts:
221 ( \s+ # an optional group of whitespace followed by…
221 ( \s+ # an optional group of whitespace followed by…
222 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
222 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
223 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
223 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
224− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) )? # …or an operator method
224+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) )? # …or an operator method
225 comment: the optional name is just to catch the def also without a method-name
225 comment: the optional name is just to catch the def also without a method-name
226 scope: meta.function.method.without-arguments.crystal
226 scope: meta.function.method.without-arguments.crystal
227 captures:
227 captures:
@@ -588,7 +588,7 @@ contexts:
588 pop: true
588 pop: true
589 - match: \\.
589 - match: \\.
590 comment: Cant be named because its not neccesarily an escape.
590 comment: Cant be named because its not neccesarily an escape.
591− - match: '(?<!:)(:)(?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?|@@?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*)'
591+ - match: '(?<!:)(:)(?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?|@@?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*|!=?(?![?!]))'
592 comment: symbols
592 comment: symbols
593 scope: constant.other.symbol.crystal
593 scope: constant.other.symbol.crystal
594 captures:
594 captures:
@@ -705,6 +705,7 @@ contexts:
705 0: punctuation.definition.string.end.crystal
705 0: punctuation.definition.string.end.crystal
706 pop: true
706 pop: true
707 - include: heredoc
707 - include: heredoc
708+ - include: scope:text.html.basic
708 - include: scope:source.js
709 - include: scope:source.js
709 - include: interpolated_crystal
710 - include: interpolated_crystal
710 - include: escaped_char
711 - include: escaped_char
@@ -713,14 +714,14 @@ contexts:
713 captures:
714 captures:
714 0: punctuation.definition.string.begin.crystal
715 0: punctuation.definition.string.begin.crystal
715 push:
716 push:
716− - meta_scope: string.unquoted.embedded.js.jquery.crystal
717+ - meta_scope: string.unquoted.embedded.js.crystal
717− - meta_content_scope: text.js.jquery.embedded.crystal
718+ - meta_content_scope: text.js.embedded.crystal
718 - match: \s*\2$
719 - match: \s*\2$
719 captures:
720 captures:
720 0: punctuation.definition.string.end.crystal
721 0: punctuation.definition.string.end.crystal
721 pop: true
722 pop: true
722 - include: heredoc
723 - include: heredoc
723− - include: scope:source.js.jquery
724+ - include: scope:source.js
724 - include: interpolated_crystal
725 - include: interpolated_crystal
725 - include: escaped_char
726 - include: escaped_char
726 - match: '(?><<-("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1)'
727 - match: '(?><<-("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1)'
assets/syntaxes/02_Extra/Dartnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Dart.sublime-syntaxnew file+211
@@ -0,0 +1,211 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/syntax.html
4+name: Dart
5+file_extensions:
6+ - dart
7+scope: source.dart
8+contexts:
9+ main:
10+ - match: ^(#!.*)$
11+ scope: meta.preprocessor.script.dart
12+ - match: ^\w*\b(library|import|part of|part|export)\b
13+ captures:
14+ 0: keyword.other.import.dart
15+ push:
16+ - meta_scope: meta.declaration.dart
17+ - match: ;
18+ captures:
19+ 0: punctuation.terminator.dart
20+ pop: true
21+ - include: strings
22+ - include: comments
23+ - match: \b(as|show|hide)\b
24+ scope: keyword.other.import.dart
25+ - include: comments
26+ - include: punctuation
27+ - include: annotations
28+ - include: keywords
29+ - include: constants-and-special-vars
30+ - include: strings
31+ annotations:
32+ - match: '@[a-zA-Z]+'
33+ scope: storage.type.annotation.dart
34+ comments:
35+ - match: /\*\*/
36+ scope: comment.block.empty.dart
37+ captures:
38+ 0: punctuation.definition.comment.dart
39+ - include: comments-doc-oldschool
40+ - include: comments-doc
41+ - include: comments-inline
42+ comments-block:
43+ - match: /\*
44+ push:
45+ - meta_scope: comment.block.dart
46+ - match: \*/
47+ pop: true
48+ - include: comments-block
49+ comments-doc:
50+ - match: ///
51+ push:
52+ - meta_scope: comment.block.documentation.dart
53+ - match: .*
54+ pop: true
55+ - include: dartdoc
56+ comments-doc-oldschool:
57+ - match: /\*\*
58+ push:
59+ - meta_scope: comment.block.documentation.dart
60+ - match: \*/
61+ pop: true
62+ - include: comments-doc-oldschool
63+ - include: comments-block
64+ - include: dartdoc
65+ comments-inline:
66+ - include: comments-block
67+ - match: ((//).*)$
68+ captures:
69+ 1: comment.line.double-slash.dart
70+ constants-and-special-vars:
71+ - match: (?<!\$)\b(true|false|null)\b(?!\$)
72+ scope: constant.language.dart
73+ - match: (?<!\$)\b(this|super)\b(?!\$)
74+ scope: variable.language.dart
75+ - match: '(?<!\$)\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b(?!\$)'
76+ scope: constant.numeric.dart
77+ - match: '(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*|bool\b|num\b|int\b|double\b|dynamic\b)'
78+ scope: support.class.dart
79+ - match: '([_$]*[a-z][a-zA-Z0-9_$]*)(<|\(|\s+=>)'
80+ captures:
81+ 1: entity.name.function.dart
82+ dartdoc:
83+ - match: '(\[.*?\])'
84+ captures:
85+ 0: variable.name.source.dart
86+ - match: '^ {4,}(?![ \*]).*'
87+ captures:
88+ 0: variable.name.source.dart
89+ - match: '```.*?$'
90+ push:
91+ - meta_content_scope: variable.other.source.dart
92+ - match: '```'
93+ pop: true
94+ - match: (`.*?`)
95+ captures:
96+ 0: variable.other.source.dart
97+ - match: (`.*?`)
98+ captures:
99+ 0: variable.other.source.dart
100+ - match: (\* (( ).*))$
101+ captures:
102+ 2: variable.other.source.dart
103+ - match: (\* .*)$
104+ keywords:
105+ - match: (?<!\$)\bas\b(?!\$)
106+ scope: keyword.cast.dart
107+ - match: (?<!\$)\b(try|on|catch|finally|throw|rethrow)\b(?!\$)
108+ scope: keyword.control.catch-exception.dart
109+ - match: (?<!\$)\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b(?!\$)
110+ scope: keyword.control.dart
111+ - match: (?<!\$)\b(sync(\*)?|async(\*)?|await|yield(\*)?)\b(?!\$)
112+ scope: keyword.control.dart
113+ - match: (?<!\$)\bassert\b(?!\$)
114+ scope: keyword.control.dart
115+ - match: (?<!\$)\b(new)\b(?!\$)
116+ scope: keyword.control.new.dart
117+ - match: (?<!\$)\b(abstract|class|enum|extends|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\b(?!\$)
118+ scope: keyword.declaration.dart
119+ - match: (?<!\$)\b(is\!?)\b(?!\$)
120+ scope: keyword.operator.dart
121+ - match: '\?|:'
122+ scope: keyword.operator.ternary.dart
123+ - match: (<<|>>>?|~|\^|\||&)
124+ scope: keyword.operator.bitwise.dart
125+ - match: ((&|\^|\||<<|>>>?)=)
126+ scope: keyword.operator.assignment.bitwise.dart
127+ - match: (=>)
128+ scope: keyword.operator.closure.dart
129+ - match: (==|!=|<=?|>=?)
130+ scope: keyword.operator.comparison.dart
131+ - match: '(([+*/%-]|\~)=)'
132+ scope: keyword.operator.assignment.arithmetic.dart
133+ - match: (=)
134+ scope: keyword.operator.assignment.dart
135+ - match: (\-\-|\+\+)
136+ scope: keyword.operator.increment-decrement.dart
137+ - match: (\-|\+|\*|\/|\~\/|%)
138+ scope: keyword.operator.arithmetic.dart
139+ - match: (!|&&|\|\|)
140+ scope: keyword.operator.logical.dart
141+ - match: (?<!\$)\b(static|final|const)\b(?!\$)
142+ scope: storage.modifier.dart
143+ - match: (?<!\$)\b(?:void|var)\b(?!\$)
144+ scope: storage.type.primitive.dart
145+ punctuation:
146+ - match: ','
147+ scope: punctuation.comma.dart
148+ - match: ;
149+ scope: punctuation.terminator.dart
150+ - match: \.
151+ scope: punctuation.dot.dart
152+ string-interp:
153+ - match: '\$((\w+)|\{([^{}]+)\})'
154+ captures:
155+ 2: variable.parameter.dart
156+ 3: variable.parameter.dart
157+ - match: \\.
158+ scope: constant.character.escape.dart
159+ strings:
160+ - match: (?<!r)"""
161+ push:
162+ - meta_scope: string.interpolated.triple.double.dart
163+ - match: '"""(?!")'
164+ pop: true
165+ - include: string-interp
166+ - match: (?<!r)'''
167+ push:
168+ - meta_scope: string.interpolated.triple.single.dart
169+ - match: '''''''(?!'')'
170+ pop: true
171+ - include: string-interp
172+ - match: r"""
173+ push:
174+ - meta_scope: string.quoted.triple.double.dart
175+ - match: '"""(?!")'
176+ pop: true
177+ - match: r'''
178+ push:
179+ - meta_scope: string.quoted.triple.single.dart
180+ - match: '''''''(?!'')'
181+ pop: true
182+ - match: (?<!\|r)"
183+ push:
184+ - meta_scope: string.interpolated.double.dart
185+ - match: '"'
186+ pop: true
187+ - match: \n
188+ scope: invalid.string.newline
189+ - include: string-interp
190+ - match: r"
191+ push:
192+ - meta_scope: string.quoted.double.dart
193+ - match: '"'
194+ pop: true
195+ - match: \n
196+ scope: invalid.string.newline
197+ - match: (?<!\|r)'
198+ push:
199+ - meta_scope: string.interpolated.single.dart
200+ - match: "'"
201+ pop: true
202+ - match: \n
203+ scope: invalid.string.newline
204+ - include: string-interp
205+ - match: r'
206+ push:
207+ - meta_scope: string.quoted.single.dart
208+ - match: "'"
209+ pop: true
210+ - match: \n
211+ scope: invalid.string.newline
assets/syntaxes/02_Extra/Dockernew file+1

Submodule changed.

assets/syntaxes/02_Extra/DotENVnew file+1

Submodule changed.

assets/syntaxes/02_Extra/DotENV.sublime-syntaxnew file+93
@@ -0,0 +1,93 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: DotENV
5+file_extensions:
6+ - .env
7+ - .env.dist
8+ - .env.local
9+ - .env.sample
10+ - .env.example
11+ - .env.test
12+ - .env.test.local
13+ - .env.testing
14+ - .env.dev
15+ - .env.development
16+ - .env.development.local
17+ - .env.prod
18+ - .env.production
19+ - .env.production.local
20+ - .env.dusk.local
21+ - .env.staging
22+ - .env.default
23+ - .env.defaults
24+ - .envrc
25+ - .flaskenv
26+scope: source.env
27+contexts:
28+ main:
29+ - match: (#).*$\n?
30+ comment: "Comments - starts with #"
31+ scope: comment.line.number-sign.env
32+ captures:
33+ 1: punctuation.definition.comment.env
34+ - match: (\")
35+ comment: Strings (double)
36+ captures:
37+ 1: punctuation.definition.string.begin.env
38+ push:
39+ - meta_scope: string.quoted.double.env
40+ - match: (\")
41+ captures:
42+ 1: punctuation.definition.string.end
43+ pop: true
44+ - include: interpolation
45+ - include: variable
46+ - include: escape-characters
47+ - match: (\')
48+ comment: Strings (single)
49+ captures:
50+ 1: punctuation.definition.string.begin.env
51+ push:
52+ - meta_scope: string.quoted.single.env
53+ - match: (\')
54+ captures:
55+ 1: punctuation.definition.string.end
56+ pop: true
57+ - match: '(?<=[\w])\s?='
58+ comment: Assignment Operator
59+ scope: keyword.operator.assignment.env
60+ - match: '([\w]+)(?=\s?\=)'
61+ comment: Variable
62+ scope: variable.other.env
63+ - match: (?i)\s?(export)
64+ comment: Keywords
65+ scope: keyword.other.env
66+ - match: (?i)(?<=\=)\s?(true|false|null)
67+ comment: Constants
68+ scope: constant.language.env
69+ - match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
70+ comment: Numeric
71+ scope: constant.numeric.env
72+ escape-characters:
73+ - match: '\\[nrt\\\$\"\'']'
74+ scope: constant.character.escape.env
75+ interpolation:
76+ - match: '(\$\{|\{)'
77+ comment: 'Template Syntax: "foo ${bar} {$baz}"'
78+ captures:
79+ 1: string.interpolated.env keyword.other.template.begin.env
80+ push:
81+ - match: '(\})'
82+ captures:
83+ 1: string.interpolated.env keyword.other.template.end.env
84+ pop: true
85+ - match: '(?x)(\$+)?([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
86+ captures:
87+ 1: punctuation.definition.variable.env variable.other.env
88+ 2: variable.other.env
89+ variable:
90+ - match: '(?x)(\$+)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
91+ captures:
92+ 1: punctuation.definition.variable.env variable.other.env
93+ 2: variable.other.env
assets/syntaxes/02_Extra/Elixirnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Elmnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Emailnew file+1

Submodule changed.

assets/syntaxes/02_Extra/FSharpnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Fishnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Fortrannew file+1

Submodule changed.

assets/syntaxes/02_Extra/Fstab.sublime-syntaxnew file+135
@@ -0,0 +1,135 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: fstab
5+file_extensions:
6+ - fstab
7+ - crypttab
8+ - mtab
9+scope: source.fstab
10+
11+contexts:
12+ main:
13+ - include: comment
14+ - match: '^'
15+ push: fstab_device
16+ comment: leading spaces
17+
18+ fstab_device:
19+ - include: comment
20+ - match: '\s*([^=\s]+=)([^\s]+)\s*'
21+ comment: device by uuid or label
22+ set: fstab_mountpoint
23+ captures:
24+ 1: punctuation.accessor
25+ 2: keyword.other.device
26+ - match: '\s*(//|\\\\)([^\s]+)\s*'
27+ comment: device by samba share
28+ set: fstab_mountpoint
29+ captures:
30+ 1: punctuation.accessor
31+ 2: keyword.other.device
32+ - match: '\s*([^\s]+)(:)([^\s]+)\s*'
33+ comment: device by server
34+ set: fstab_mountpoint
35+ captures:
36+ 1: keyword.other.device
37+ 2: punctuation.accessor
38+ 3: keyword.other.device
39+ - match: '\s*[^\s/\\]+\s*'
40+ comment: device by dev name
41+ set: fstab_mountpoint
42+ scope: keyword.other.device
43+ - match: '\s*(/dev/)([^\s]+)\s*'
44+ comment: device by dev path
45+ set: fstab_mountpoint
46+ captures:
47+ 1: punctuation.accessor
48+ 2: keyword.other.device
49+ - match: '\s*([^\s/]*/)*([^\s]+)\s*'
50+ comment: device by unknown path
51+ set: fstab_mountpoint
52+ captures:
53+ 1: punctuation.accessor
54+ 2: keyword.other.device
55+ - include: clear
56+
57+ fstab_mountpoint:
58+ - include: comment
59+ - match: '\s*/[^\s]*\s*'
60+ comment: mount point
61+ set: fstab_filesystem
62+ scope: string.unquoted.mountpoint
63+ - match: '\s*[^\s]+\s*'
64+ comment: mount point without leading slash (invalid)
65+ set: fstab_filesystem
66+ scope: invalid.illegal
67+ - include: clear
68+
69+ fstab_filesystem:
70+ - include: comment
71+ - match: '\s*[^\s]+\s*'
72+ comment: filesystem type
73+ set: fstab_options
74+ scope: variable.parameter.filesystem
75+ - include: clear
76+
77+ fstab_options:
78+ - include: comment
79+ - match: '([^\s,=]+)(=)([^\s,]+)'
80+ comment: key-value option
81+ captures:
82+ 1: entity.name.option
83+ 2: entity.other.separator
84+ 3: variable.parameter
85+ - match: '[^\s,]+'
86+ comment: flag option
87+ scope: entity.name.option
88+ - match: ','
89+ comment: option separator
90+ scope: punctuation.separator
91+ - match: '\s+'
92+ comment: next field
93+ set: fstab_dump
94+ - include: clear
95+
96+ fstab_dump:
97+ - include: comment
98+ - match: '\s*[01]\s*'
99+ comment: dump field
100+ scope: constant.numeric
101+ set: fstab_pass
102+ - match: '\s*[^\s]+\s*'
103+ comment: invalid dump field
104+ scope: invalid.illegal
105+ set: fstab_pass
106+ - include: clear
107+
108+ fstab_pass:
109+ - include: comment
110+ - match: '\s*[01]\s*'
111+ comment: pass field
112+ scope: constant.numeric
113+ set: expected_eol
114+ - match: '\s*[^\s]+\s*'
115+ comment: invalid pass field
116+ scope: invalid.illegal
117+ set: expected_eol
118+ - include: clear
119+
120+ expected_eol:
121+ - include: comment
122+ - include: clear
123+ - match: '.*'
124+ scope: invalid.illegal
125+
126+ comment:
127+ - match: '\s*#.*$'
128+ comment: comment using the number sign
129+ scope: comment.line
130+
131+ clear:
132+ - match: '.*$'
133+ comment: used for clearing the context
134+ pop: true
135+
assets/syntaxes/02_Extra/GLSLnew file+1

Submodule changed.

assets/syntaxes/02_Extra/GraphQLnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Groffnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Group.sublime-syntaxnew file+48
@@ -0,0 +1,48 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: group
5+file_extensions:
6+ - group
7+scope: source.group
8+
9+contexts:
10+ main:
11+ - comment: name
12+ match: ^[^:]+
13+ scope: keyword
14+
15+ - comment: password
16+ match: ":"
17+ push: password
18+
19+ password:
20+ - comment: uid
21+ match: ":"
22+ set: gid
23+
24+ - comment: shadowpassword
25+ match: "[^:]+"
26+ scope: invalid
27+
28+ gid:
29+ - comment: gid
30+ match: ":"
31+ set: users
32+
33+ - comment: number
34+ match: "[0-9]+"
35+ scope: constant.numeric
36+
37+ users:
38+ - comment: newline
39+ match: "\n"
40+ pop: true
41+
42+ - comment: directory
43+ match: "[^:\n]+"
44+ scope: variable.parameter
45+
46+ - comment: separator
47+ match: ","
48+ scope: punctuation
assets/syntaxes/02_Extra/HTML (Twig)new file+1

Submodule changed.

assets/syntaxes/HTML (Twig).sublime-syntax → assets/syntaxes/02_Extra/HTML (Twig).sublime-syntaxrenamed

The content is the same.

assets/syntaxes/02_Extra/Hosts.sublime-syntaxnew file+23
@@ -0,0 +1,23 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: hosts
5+file_extensions:
6+ - hosts
7+scope: source.hosts
8+
9+contexts:
10+ main:
11+ - scope: comment.line.number-sign
12+ match: \#.*
13+ comment: comment
14+
15+ - match: ^\s*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9a-f:]+)
16+ comment: ipaddress
17+ scope: constant.numeric.ipaddress
18+
19+
20+ - match: \s(localhost|ip6-loopback|ip6-localhost|ip6-localnet|ip6-mcastprefix|ip6-allnodes|ip6-allrouters|ip6-allhosts|broadcasthost)\b
21+ scope: keyword.host.predefined}
22+ comment: prefdfined
23+
assets/syntaxes/INI → assets/syntaxes/02_Extra/INIrenamed

The content is the same.

assets/syntaxes/INI.sublime-syntax → assets/syntaxes/02_Extra/INI.sublime-syntaxrenamed+4−3
@@ -5,8 +5,8 @@ name: INI
5file_extensions:
5file_extensions:
6 - ini
6 - ini
7 - INI
7 - INI
8− - inf
8+ - "inf"
9− - INF
9+ - "INF"
10 - reg
10 - reg
11 - REG
11 - REG
12 - lng
12 - lng
@@ -25,12 +25,13 @@ contexts:
25 scope: comment.line.semicolon.ini
25 scope: comment.line.semicolon.ini
26 captures:
26 captures:
27 1: punctuation.definition.comment.ini
27 1: punctuation.definition.comment.ini
28− - match: '^\s*(\[)(.*?)(\])'
28+ - match: '^\s*(\[)(.*?)(\])\s*(;.*)?$\n?'
29 scope: meta.tag.section.ini
29 scope: meta.tag.section.ini
30 captures:
30 captures:
31 1: punctuation.definition.section.ini
31 1: punctuation.definition.section.ini
32 2: entity.section.ini
32 2: entity.section.ini
33 3: punctuation.definition.section.ini
33 3: punctuation.definition.section.ini
34+ 4: comment.definition.section.ini
34 - match: '^(\s*(["'']?)(.+?)(\2)\s*(=))?\s*((["'']?)(.*?)(\7))\s*(;.*)?$\n?'
35 - match: '^(\s*(["'']?)(.+?)(\2)\s*(=))?\s*((["'']?)(.*?)(\7))\s*(;.*)?$\n?'
35 scope: meta.declaration.ini
36 scope: meta.declaration.ini
36 captures:
37 captures:
assets/syntaxes/02_Extra/JavaScript (Babel)new file+1

Submodule changed.

assets/syntaxes/Javascript (Babel).sublime-syntax → assets/syntaxes/02_Extra/JavaScript (Babel).sublime-syntaxrenamed+2
@@ -4,9 +4,11 @@
4name: JavaScript (Babel)
4name: JavaScript (Babel)
5file_extensions:
5file_extensions:
6 - js
6 - js
7+ - mjs
7 - jsx
8 - jsx
8 - babel
9 - babel
9 - es6
10 - es6
11+ - cjs
10first_line_match: ^#!\s*/.*\b(node|js)$\n?
12first_line_match: ^#!\s*/.*\b(node|js)$\n?
11scope: source.js
13scope: source.js
12contexts:
14contexts:
assets/syntaxes/02_Extra/Jinja2new file+1

Submodule changed.

assets/syntaxes/02_Extra/Jsonnetnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Julianew file+1

Submodule changed.

assets/syntaxes/Kotlin → assets/syntaxes/02_Extra/Kotlinrenamed

The content is the same.

assets/syntaxes/Kotlin.sublime-syntax → assets/syntaxes/02_Extra/Kotlin.sublime-syntaxrenamed

The content is the same.

assets/syntaxes/02_Extra/LESSnew file+1

Submodule changed.

assets/syntaxes/02_Extra/LLVMnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Leannew file+1

Submodule changed.

assets/syntaxes/02_Extra/Lean.sublime-syntaxnew file+125
@@ -0,0 +1,125 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Lean
5+file_extensions:
6+ - lean
7+scope: source.lean
8+contexts:
9+ main:
10+ - include: comments
11+ - match: '\b(?<!\.)(inductive|coinductive|structure|theorem|axiom|axioms|abbreviation|lemma|definition|def|instance|class|constant)\b\s+(\{[^}]*\})?'
12+ captures:
13+ 1: keyword.other.definitioncommand.lean
14+ push:
15+ - meta_scope: meta.definitioncommand.lean
16+ - match: '(?=\bwith\b|\bextends\b|[:\|\(\[\{⦃<>])'
17+ pop: true
18+ - include: comments
19+ - include: definitionName
20+ - match: ","
21+ - match: \b(Prop|Type|Sort)\b
22+ scope: storage.type.lean
23+ - match: '\battribute\b\s*\[[^\]]*\]'
24+ scope: storage.modifier.lean
25+ - match: '@\[[^\]]*\]'
26+ scope: storage.modifier.lean
27+ - match: \b(?<!\.)(private|meta|mutual|protected|noncomputable)\b
28+ scope: keyword.control.definition.modifier.lean
29+ - match: \b(sorry)\b
30+ scope: invalid.illegal.lean
31+ - match: '#print\s+(def|definition|inductive|instance|structure|axiom|axioms|class)\b'
32+ scope: keyword.other.command.lean
33+ - match: '#(print|eval|reduce|check|help|exit|find|where)\b'
34+ scope: keyword.other.command.lean
35+ - match: \b(?<!\.)(import|export|prelude|theory|definition|def|abbreviation|instance|renaming|hiding|exposing|parameter|parameters|begin|constant|constants|lemma|variable|variables|theorem|example|open|axiom|inductive|coinductive|with|structure|universe|universes|alias|precedence|reserve|postfix|prefix|infix|infixl|infixr|notation|end|using|namespace|section|local|set_option|extends|include|omit|class|classes|instances|raw|run_cmd|restate_axiom)(?!\.)\b
36+ scope: keyword.other.lean
37+ - match: \b(?<!\.)(calc|have|this|match|do|suffices|show|by|in|at|let|forall|fun|exists|assume|from|obtain|haveI|λ)(?!\.)\b
38+ scope: keyword.other.lean
39+ - match: «
40+ push:
41+ - meta_content_scope: entity.name.lean
42+ - match: »
43+ pop: true
44+ - match: \b(?<!\.)(if|then|else)\b
45+ scope: keyword.control.lean
46+ - match: '"'
47+ captures:
48+ 0: punctuation.definition.string.begin.lean
49+ push:
50+ - meta_scope: string.quoted.double.lean
51+ - match: '"'
52+ captures:
53+ 0: punctuation.definition.string.end.lean
54+ pop: true
55+ - match: '\\[\\"nt'']'
56+ scope: constant.character.escape.lean
57+ - match: '\\x[0-9A-Fa-f][0-9A-Fa-f]'
58+ scope: constant.character.escape.lean
59+ - match: '\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]'
60+ scope: constant.character.escape.lean
61+ - match: '''[^\\'']'''
62+ scope: string.quoted.single.lean
63+ - match: '''(\\(x..|u....|.))'''
64+ scope: string.quoted.single.lean
65+ captures:
66+ 1: constant.character.escape.lean
67+ - match: '`+[^\[(]\S+'
68+ scope: entity.name.lean
69+ - match: '\b([0-9]+|0([xX][0-9a-fA-F]+))\b'
70+ scope: constant.numeric.lean
71+ blockComment:
72+ - match: /-
73+ push:
74+ - meta_scope: comment.block.lean
75+ - match: "-/"
76+ pop: true
77+ - include: scope:source.lean.markdown
78+ - include: blockComment
79+ comments:
80+ - include: dashComment
81+ - include: docComment
82+ - include: stringBlock
83+ - include: modDocComment
84+ - include: blockComment
85+ dashComment:
86+ - match: (--)
87+ captures:
88+ 0: punctuation.definition.comment.lean
89+ push:
90+ - meta_scope: comment.line.double-dash.lean
91+ - match: $
92+ pop: true
93+ - include: scope:source.lean.markdown
94+ definitionName:
95+ - match: '\b[^:«»\(\)\{\}[:space:]=→λ∀?][^:«»\(\)\{\}[:space:]]*'
96+ scope: entity.name.function.lean
97+ - match: «
98+ push:
99+ - meta_content_scope: entity.name.function.lean
100+ - match: »
101+ pop: true
102+ docComment:
103+ - match: /--
104+ push:
105+ - meta_scope: comment.block.documentation.lean
106+ - match: "-/"
107+ pop: true
108+ - include: scope:source.lean.markdown
109+ - include: blockComment
110+ modDocComment:
111+ - match: /-!
112+ push:
113+ - meta_scope: comment.block.documentation.lean
114+ - match: "-/"
115+ pop: true
116+ - include: scope:source.lean.markdown
117+ - include: blockComment
118+ stringBlock:
119+ - match: /-"
120+ push:
121+ - meta_scope: comment.block.string.lean
122+ - match: '"-/'
123+ pop: true
124+ - include: scope:source.lean.markdown
125+ - include: blockComment
assets/syntaxes/02_Extra/LiveScriptnew file+1

Submodule changed.

assets/syntaxes/02_Extra/LiveScript.sublime-syntaxnew file+400
@@ -0,0 +1,400 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: LiveScript
5+comment: "LiveScript Syntax: version 1"
6+file_extensions:
7+ - ls
8+ - Slakefile
9+ - ls.erb
10+first_line_match: ^#!.*\bls
11+scope: source.livescript
12+contexts:
13+ main:
14+ - match: |-
15+ (?x)
16+ !?[~-]{1,2}>\*?
17+ |<[~-]{1,2}!?
18+ |\(\s* (?= instanceof[\s)]|and[\s)]|or[\s)]|is[\s)]|isnt[\s)]|in[\s)]|import[\s)]|import\ all[\s)] |\.|[-+/*%^&<>=|][\b\s)\w$]|\*\*|\%\%)
19+ | (?<=[\s(]instanceof|[\s(]and|[\s(]or|[\s(]is|[\s(]isnt|[\s(]in|[\s(]import|[\s(]import\ all|[\s(]do|\.|\*\*|\%\%|[\b\s(\w$][-+/*%^&<>=|]) \s*\)
20+ scope: storage.type.function.livescript
21+ - match: \/\*
22+ captures:
23+ 0: punctuation.definition.comment.livescript
24+ push:
25+ - meta_scope: comment.block.livescript
26+ - match: \*\/
27+ captures:
28+ 0: punctuation.definition.comment.livescript
29+ pop: true
30+ - match: '@\w*'
31+ scope: storage.type.annotation.livescriptscript
32+ - match: '(#)(?!\{).*$\n?'
33+ scope: comment.line.number-sign.livescript
34+ captures:
35+ 1: punctuation.definition.comment.livescript
36+ - match: '((?:!|~|!~|~!)?function\*?)\s+([$\w\-]*[$\w]+)'
37+ captures:
38+ 1: storage.type.function.livescript
39+ 2: entity.name.function.livescript
40+ - match: (new)\s+(\w+(?:\.\w*)*)
41+ captures:
42+ 1: keyword.operator.new.livescript
43+ 2: entity.name.type.instance.livescript
44+ - match: \b(package|private|protected|public|interface|enum|static)(?!-)\b
45+ scope: keyword.illegal.livescript
46+ - match: "'''"
47+ captures:
48+ 0: punctuation.definition.string.begin.livescript
49+ push:
50+ - meta_scope: string.quoted.heredoc.livescript
51+ - match: "'''"
52+ captures:
53+ 0: punctuation.definition.string.end.livescript
54+ pop: true
55+ - match: '"""'
56+ captures:
57+ 0: punctuation.definition.string.begin.livescript
58+ push:
59+ - meta_scope: string.quoted.double.heredoc.livescript
60+ - match: '"""'
61+ captures:
62+ 0: punctuation.definition.string.end.livescript
63+ pop: true
64+ - match: \\.
65+ scope: constant.character.escape.livescript
66+ - include: interpolated_livescript
67+ - match: "``"
68+ captures:
69+ 0: punctuation.definition.string.begin.livescript
70+ push:
71+ - meta_scope: string.quoted.script.livescript
72+ - match: "``"
73+ captures:
74+ 0: punctuation.definition.string.end.livescript
75+ pop: true
76+ - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
77+ scope: constant.character.escape.livescript
78+ - match: '<\['
79+ push:
80+ - meta_scope: string.array-literal.livescript
81+ - match: '\]>'
82+ pop: true
83+ - match: '/{2}(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}'
84+ scope: string.regexp.livescript
85+ - match: '/{2}\n'
86+ push:
87+ - meta_scope: string.regexp.livescript
88+ - match: "/{2}[imgy]{0,4}"
89+ pop: true
90+ - include: embedded_spaced_comment
91+ - include: interpolated_livescript
92+ - match: "/{2}"
93+ push:
94+ - meta_scope: string.regexp.livescript
95+ - match: "/{2}[imgy]{0,4}"
96+ pop: true
97+ - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
98+ scope: constant.character.escape.livescript
99+ - include: interpolated_livescript
100+ - match: '/(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])'
101+ scope: string.regexp.livescript
102+ - match: |-
103+ (?x)
104+ \b(?<![\.\$\-@])(
105+ instanceof|new|delete|typeof|and|or|is|isnt|not
106+ )(?!\-|\s*:)\b
107+ scope: keyword.operator.livescript
108+ - match: <\||\|>
109+ scope: keyword.operator.livescript
110+ - match: "=>"
111+ scope: keyword.control.livescript
112+ - match: |-
113+ (?x)
114+ \b(?<![\.\$\-@])(?:
115+ return|break|continue|throw
116+ |try|if|while|for|for\s+own|switch|unless|until
117+ |catch|finally|else|nobreak|case|default|fallthrough|when|otherwise|then
118+ |yield
119+ )(?!\-|\s*:)\b
120+ scope: keyword.control.livescript
121+ - match: |-
122+ (?x)
123+ and=|or=|%|&|\^|\*|\/|(?<![a-zA-Z$_])(\-)?\-(?!\-?>)|\+\+|\+|
124+ ~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|
125+ >>>=|<>|<(?!\[)|(?<!\])>|(?<!\w)!(?!([~\-]+)?>)|&&|\.\.(\.)?|\s\.\s|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|\.=|&=
126+ |\^=
127+ scope: keyword.operator.livescript
128+ - match: |-
129+ (?x)
130+ \b(?<![\.\$\-@])(?:
131+ function
132+ )(?!\-|\s*:)\b
133+ scope: storage.type.function.livescript
134+ - match: |-
135+ (?x)
136+ \b(?<![\.\$\-@])(?:
137+ this|throw|then|try|typeof!?|til|to
138+ |continue|const|case|catch|class
139+ |in|instanceof|import|import\s+all|implements|if|is
140+ |default|delete|debugger|do
141+ |for|for\s+own|finally|function|from|fallthrough
142+ |super|switch
143+ |else|nobreak|extends|export|eval
144+ |and|arguments
145+ |new|not
146+ |unless|until
147+ |while|with|when
148+ |of|or|otherwise
149+ |let|var|loop
150+ |match
151+ |by|yield
152+ )(?!\-|\s*:)\b
153+ scope: keyword.other.livescript
154+ - match: '([a-zA-Z\$_](?:[\w$.-])*)\s*(?!\::)((:)|(=(?!>)))\s*(?!(\s*!?\s*\(.*\))?\s*(!?[~-]{1,2}>\*?))'
155+ captures:
156+ 1: variable.assignment.livescript
157+ 3: punctuation.separator.key-value, keyword.operator.livescript
158+ 4: keyword.operator.livescript
159+ - match: '(?<=\s|^)([\[\{])(?=.*?[\]\}]\s+[:=])'
160+ captures:
161+ 0: keyword.operator.livescript
162+ push:
163+ - meta_scope: meta.variable.assignment.destructured.livescript
164+ - match: '([\]\}]\s*[:=])'
165+ captures:
166+ 0: keyword.operator.livescript
167+ pop: true
168+ - include: variable_name
169+ - include: instance_variable
170+ - include: single_quoted_string
171+ - include: double_quoted_string
172+ - include: numeric
173+ - match: |-
174+ (?x)
175+ (\s*)
176+ (?=[a-zA-Z\$_])
177+ ([a-zA-Z\$_]([\w$.:-])*)\s*
178+ (?=[:=](\s*!?\s*\(.*\))?\s*(!?[~-]{1,2}>\*?))
179+ scope: meta.function.livescript
180+ captures:
181+ 2: entity.name.function.livescript
182+ 3: entity.name.function.livescript
183+ 4: variable.parameter.function.livescript
184+ 5: storage.type.function.livescript
185+ - match: \b(?<!\.)(true|on|yes)(?!\s*:)\b
186+ scope: constant.language.boolean.true.livescript
187+ - match: \b(?<!\.)(false|off|no)(?!\s*:)\b
188+ scope: constant.language.boolean.false.livescript
189+ - match: \b(?<!\.)(null|void)(?!\s*:)\b
190+ scope: constant.language.null.livescript
191+ - match: \b(?<!\.)(super|this|extends)(?!\s*:)\b
192+ scope: variable.language.livescript
193+ - match: '(class\b)\s+(@?[a-zA-Z$_][\w$.-]*)?(?:\s+(extends)\s+(@?[a-zA-Z$_][\w$.-]*))?'
194+ scope: meta.class.livescript
195+ captures:
196+ 1: storage.type.class.livescript
197+ 2: entity.name.type.class.livescript
198+ 3: keyword.control.inheritance.livescript
199+ 4: entity.other.inherited-class.livescript
200+ - match: \b(debugger|\\)\b
201+ scope: keyword.other.livescript
202+ - match: |-
203+ (?x)\b(
204+ Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function|
205+ Int(8|16|32|64)Array|Math|Map|Number|
206+ Object|Proxy|RegExp|Set|String|WeakMap|
207+ window|Uint(8|16|32|64)Array|XMLHttpRequest
208+ )\b
209+ scope: support.class.livescript
210+ - match: \b(console)\b
211+ scope: entity.name.type.object.livescript
212+ - match: \b(Infinity|NaN|undefined)\b
213+ scope: constant.language.livescript
214+ - match: \;
215+ scope: punctuation.terminator.statement.livescript
216+ - match: ',[ |\t]*'
217+ scope: meta.delimiter.object.comma.livescript
218+ - match: \.
219+ scope: meta.delimiter.method.period.livescript
220+ - match: '\{|\}'
221+ scope: meta.brace.curly.livescript
222+ - match: \(|\)
223+ scope: meta.brace.round.livescript
224+ - match: '\[|\]\s*'
225+ scope: meta.brace.square.livescript
226+ - include: instance_variable
227+ - include: backslash_string
228+ - include: single_quoted_string
229+ - include: double_quoted_string
230+ - include: numeric
231+ - match: '()(@|@@|[$\w\-]*[$\w]+)\s*(`)'
232+ captures:
233+ 1: keyword.operator.livescript
234+ 2: meta.function-call.livescript
235+ 3: keyword.operator.livescript
236+ - match: "`"
237+ scope: keyword.operator.livescript
238+ - match: '()(@|@@|[$\w\-]*[$\w]+)(?:(\??\!)|[(])'
239+ captures:
240+ 1: keyword.operator.livescript
241+ 2: meta.function-call.livescript
242+ 3: keyword.operator.livescript
243+ - match: '(@|@@|[$\w\-]*[$\w]+)(\?)? (?!\s*(((by|of|and|or|with|when|unless|if|is|isnt|else|nobreak|for|from|not in|in|catch|til|to|then|import|extends|implements|instanceof)\b)|[=:.*\/+\-%\^<>][ =)]|[`}%*)]|/(?!.*?/)|&&|[.][^.]|=>|\/ +|\||\|\||\-\-|\+\+|\|>|<|\||$|\n|\#|/\*))'
244+ captures:
245+ 1: meta.function-call.livescript
246+ 2: keyword.operator.livescript
247+ - match: \| _
248+ scope: keyword.control.livescript
249+ - match: '\|(?![.])'
250+ scope: keyword.control.livescript
251+ - match: \|
252+ scope: keyword.operator.livescript
253+ - match: ((?<=console\.)(debug|warn|info|log|error|time(End|-end)|assert))\b
254+ scope: support.function.console.livescript
255+ - match: |-
256+ (?x)\b(
257+ decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require
258+ )\b
259+ scope: support.function.livescript
260+ - match: |-
261+ (?x)(?<![.-])\b(
262+ map|filter|reject|partition|find|each|head|tail|last|initial|empty|
263+ values|keys|length|cons|append|join|reverse|fold(l|r)?1?|unfoldr|
264+ and(List|-list)|or(List|-list)|any|all|unique|sum|product|mean|compact|
265+ concat(Map|-map)?|maximum|minimum|scan(l|r)?1?|replicate|slice|apply|
266+ split(At|-at)?|take(While|-while)?|drop(While|-while)?|span|first|
267+ break(It|-it)|list(ToObj|-to-obj)|obj(ToFunc|-to-func)|
268+ pairs(ToObj|-to-obj)|obj(ToPairs|-to-pairs|ToLists|-to-lists)|
269+ zip(All|-all)?(With|-with)?|compose|curry|partial|flip|fix|
270+ sort(With|-with|By|-by)?|group(By|-by)|break(List|-list|Str|-str)|
271+ difference|intersection|union|average|flatten|chars|unchars|repeat|
272+ lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|
273+ recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|
274+ round|ceiling|floor|is(It|-it)NaN|even|odd|gcd|lcm|disabled__id
275+ )\b(?![.-])
276+ comment: |
277+ Generated by DOM query from http://gkz.github.com/prelude-ls/:
278+ [].slice
279+ .call(document.querySelectorAll(".nav-pills li a"))
280+ .map(function(_) {return _.innerText})
281+ .filter(function(_) {return _.trim() !== '})
282+ .slice(2)
283+ .join("|")
284+ scope: support.function.prelude.livescript
285+ - match: '(?x)(?<![.-])\b(that|it|e|_)\b'
286+ scope: support.function.semireserved.livescript
287+ - match: |-
288+ (?x)((?<=(\.|\]|\)))(
289+ apply|call|concat|every|filter|for(Each|-each)|
290+ from|has(Own|-own)(Property|-property)|index(Of|-of)|
291+ is(Prototype|-prototype)(Of|-of)|join|last(Index|-index)(Of|-of)|
292+ map|of|pop|property(Is|-is)(Enumerable|-enumerable)|push|
293+ reduce(Right|-right)?|reverse|shift|slice|some|sort|
294+ splice|to(Locale|-locale)?(String|-string)|unshift|valueOf
295+ ))\b(?!-)
296+ scope: support.function.method.array.livescript
297+ - match: |-
298+ (?x)((?<=Array\.)(
299+ isArray
300+ ))\b
301+ scope: support.function.static.array.livescript
302+ - match: |-
303+ (?x)((?<=Object\.)(
304+ create|define(Propert|-propert)(ies|y)|freeze|
305+ get(Own|-own)(Property|-property)(Descriptors?|Names)|
306+ get(Property|-property)(Descriptor|Names)|getPrototypeOf|
307+ is((Extensible|-extensible)|(Frozen|-frozen)|(Sealed|-sealed))?|
308+ keys|prevent(Extensions|-extensions)|seal
309+ ))\b
310+ scope: support.function.static.object.livescript
311+ - match: |-
312+ (?x)((?<=Math\.)(
313+ abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|
314+ hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|
315+ tan|tanh|trunc
316+ ))\b
317+ scope: support.function.static.math.livescript
318+ - match: |-
319+ (?x)((?<=Number\.)(
320+ is(Finite|Integer|NaN)|to(Integer|-integer)
321+ ))\b
322+ scope: support.function.static.number.livescript
323+ - match: '[\$\w][\w-]*'
324+ scope: variable.other.livescript
325+ backslash_string:
326+ - match: '\\([\\)\s,\};\]])?'
327+ captures:
328+ 0: string.quoted.single.livescript
329+ push:
330+ - meta_content_scope: string.quoted.single.livescript
331+ - match: '([\\)\s,\};\]])'
332+ captures:
333+ 0: punctuation.definition.string.end.livescript
334+ pop: true
335+ constructor_variable:
336+ - match: '([a-zA-Z$_][\w$-]*)(@{2})([a-zA-Z$_][\w$-]*)?'
337+ scope: variable.other.readwrite.constructor.livescript
338+ double_quoted_string:
339+ - match: '"'
340+ captures:
341+ 0: punctuation.definition.string.begin.livescript
342+ push:
343+ - meta_scope: string.quoted.double.livescript
344+ - match: '"'
345+ captures:
346+ 0: punctuation.definition.string.end.livescript
347+ pop: true
348+ - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
349+ scope: constant.character.escape.livescript
350+ - include: interpolated_livescript
351+ embedded_comment:
352+ - match: (?<!\\)(#).*$\n
353+ scope: comment.line.number-sign.livescript
354+ captures:
355+ 1: punctuation.definition.comment.livescript
356+ embedded_spaced_comment:
357+ - match: (?<!\\)(#\s).*$\n
358+ scope: comment.line.number-sign.livescript
359+ captures:
360+ 1: punctuation.definition.comment.livescript
361+ instance_variable:
362+ - match: '(?<![$\w\-])(@)'
363+ scope: variable.other.readwrite.instance.livescript
364+ interpolated_livescript:
365+ - match: '\#\{'
366+ captures:
367+ 0: punctuation.section.embedded.livescript
368+ push:
369+ - meta_scope: source.livescript.embedded.source
370+ - match: '\}'
371+ captures:
372+ 0: punctuation.section.embedded.livescript
373+ pop: true
374+ - include: main
375+ - match: '\#'
376+ push:
377+ - meta_scope: source.livescript.embedded.source.simple
378+ - match: ""
379+ pop: true
380+ - include: main
381+ numeric:
382+ - match: '(?<![\$@a-zA-Z_])(([0-9]+r[0-9_]+)|((16r|0[xX])[0-9a-fA-F_]+)|([0-9]+(\.[0-9]+[0-9_]*)?(e[+\-]?[0-9_]+)?)[_a-zA-Z0-9]*)'
383+ scope: constant.numeric.livescript
384+ single_quoted_string:
385+ - match: "'"
386+ captures:
387+ 0: punctuation.definition.string.begin.livescript
388+ push:
389+ - meta_scope: string.quoted.single.livescript
390+ - match: "'"
391+ captures:
392+ 0: punctuation.definition.string.end.livescript
393+ pop: true
394+ - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)'
395+ scope: constant.character.escape.livescript
396+ variable_name:
397+ - match: '([a-zA-Z\$_][\w$-]*(\.\w+)*)(?!\-)'
398+ scope: variable.assignment.livescript
399+ captures:
400+ 1: variable.assignment.livescript
assets/syntaxes/02_Extra/Manpage.sublime-syntaxnew file+171
@@ -0,0 +1,171 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Manpage
5+file_extensions:
6+ - man
7+scope: source.man
8+
9+variables:
10+ section_heading: '^(?!#)\S.*$'
11+ command_line_option: '(--?[A-Za-z0-9][_A-Za-z0-9-]*)'
12+
13+contexts:
14+ prototype:
15+ # ignore syntax test lines
16+ - match: '^#'
17+ push:
18+ - meta_scope: comment.syntax-test.man
19+ - match: $\n?
20+ pop: true
21+ main:
22+ - match: ^
23+ push: first_line
24+
25+ first_line:
26+ - match: '([A-Z0-9_\-]+)(\()([^)]+)(\))\s*'
27+ captures:
28+ 1: meta.preprocessor.man
29+ 2: keyword.operator.man
30+ 3: string.quoted.other.man
31+ 4: keyword.operator.man
32+ push:
33+ - match: (?:[\w'-]+|\s(?!\s))
34+ scope: markup.heading.title.man
35+ - match: \s\s
36+ pop: true
37+ - match: '(?=\S|$)'
38+ pop: true
39+
40+ - match: '$'
41+ set: body
42+
43+ body:
44+ # English, ..., ..., ..., Russian, ...
45+
46+ - match: '^(?:SYNOPSIS|SYNTAX|SINTASSI|SKŁADNIA|СИНТАКСИС|書式)'
47+ scope: markup.heading.synopsis.man
48+ embed: synopsis
49+ escape: '(?={{section_heading}})'
50+
51+ - match: '^(?:USAGE)'
52+ scope: markup.heading.synopsis.man
53+ embed: synopsis
54+ escape: '(?={{section_heading}})'
55+
56+ - match: '{{section_heading}}'
57+ scope: markup.heading.other.man
58+ embed: options # some man pages put command line options under the description heading
59+ escape: '(?={{section_heading}})'
60+
61+ function-call:
62+ - match: '\b([A-Za-z0-9_\-]+\.)?([A-Za-z0-9_\-]+)(\()([^)]*)(\))'
63+ captures:
64+ 1: entity.name.function.man
65+ 2: entity.name.function.man
66+ 3: keyword.operator.man
67+ 4: constant.numeric.man
68+ 5: keyword.operator.man
69+
70+ env-var:
71+ - match: '(\$)(?!\d)(\w+)\b'
72+ captures:
73+ 1: punctuation.definition.variable.man
74+ 2: constant.other.man
75+
76+ options:
77+ # command-line options like --option=value, --some-flag, or -x
78+ - match: '^[ ]{7}(?=-)'
79+ push: expect-command-line-option
80+ - match: '(?:[^a-zA-Z0-9_-]|^|\s){{command_line_option}}'
81+ captures:
82+ 1: entity.name.command-line-option
83+ push:
84+ - match: '='
85+ scope: keyword.operator.man
86+ set:
87+ - match: '[^],.() ]+'
88+ scope: variable.parameter.man
89+ pop: true
90+ - match: $
91+ pop: true
92+ - match: ''
93+ pop: true
94+ - include: function-call
95+ - include: c-code
96+ - include: env-var
97+
98+ expect-command-line-option:
99+ - match: '[A-Za-z0-9-]+'
100+ scope: entity.name.command-line-option.man
101+ - match: '(\[)(=)'
102+ captures:
103+ 1: punctuation.section.brackets.begin.man
104+ 2: keyword.operator.man
105+ push: [command-line-option-or-pipe, expect-parameter]
106+ - match: '\['
107+ push:
108+ - meta_scope: entity.name.command-line-option.man
109+ - match: '\]'
110+ pop: true
111+ - match: '='
112+ scope: keyword.operator.man
113+ push: expect-parameter
114+ - match: (?=.*\.)
115+ pop: true
116+ - match: '\s'
117+ push: expect-parameter
118+ - match: '(,)\s*'
119+ captures:
120+ 1: punctuation.separator.man
121+ - match: $|(?=\])
122+ pop: true
123+
124+ expect-parameter:
125+ - match: '[A-Za-z0-9-]+'
126+ scope: variable.parameter.man
127+ - match: (?=\s+\|)
128+ pop: true
129+ - match: \|
130+ scope: keyword.operator.logical.man
131+ - match: '\['
132+ scope: punctuation.section.brackets.begin.man
133+ push:
134+ - match: '\]'
135+ scope: punctuation.section.brackets.end.man
136+ pop: true
137+ - include: expect-parameter
138+ - match: '$|(?=[],]|{{command_line_option}})'
139+ pop: true
140+
141+ c-code:
142+ - match: '^(?=\s+(?:#include\b|#define\b|/\*|struct\s+(\w+\s*)?\{))'
143+ embed: scope:source.c
144+ #embed_scope: source.c.embedded.man
145+ #escape: ^(?!#|\1|\s*(?:$|/\*|#include\b|#define\b))
146+ escape: ^(?=\s*(?:\(.*\.\)\s*$|[A-Z](?![A-Z])))
147+
148+ synopsis:
149+ - include: c-code
150+ - match: \[
151+ scope: punctuation.section.brackets.begin.man
152+ push: command-line-option-or-pipe
153+ - include: options
154+
155+ command-line-option-or-pipe:
156+ - match: (\|)\s*
157+ captures:
158+ 1: keyword.operator.logical.man
159+ #- match: (?={{command_line_option}})
160+ - match: \w+-\w+
161+ - match: (?=-)
162+ push:
163+ - match: (?=\s*\|)
164+ pop: true
165+ - include: expect-command-line-option
166+ - match: \]
167+ scope: punctuation.section.brackets.end.man
168+ pop: true
169+ - match: \[
170+ scope: punctuation.section.brackets.begin.man
171+ push: command-line-option-or-pipe
assets/syntaxes/02_Extra/MediaWikinew file+1

Submodule changed.

assets/syntaxes/02_Extra/MemInfo.sublime-syntaxnew file+14
@@ -0,0 +1,14 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: MemInfo
5+file_extensions:
6+ - meminfo
7+scope: source.meminfo
8+
9+contexts:
10+ main:
11+ - match: '^([^:]+)\w*:\w*(.*)$'
12+ captures:
13+ 1: keyword.other.meminfo-key
14+ 2: string.other.meminfo-value
assets/syntaxes/02_Extra/Nginxnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Nim.sublime-syntaxnew file+258
@@ -0,0 +1,258 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Nim
5+file_extensions:
6+ - nim
7+ - nims
8+ - nimble
9+scope: source.nim
10+contexts:
11+ main:
12+ - match: '(\#\[\s*(TODO|todo)?)'
13+ comment: A multiline comment.
14+ captures:
15+ 1: punctuation.definition.multi-comment.nim
16+ 2: invalid.illegal.TODO.nim
17+ push:
18+ - meta_scope: comment.line.number-sign.multi-comment.nim
19+ - match: '(.*]\#)'
20+ captures:
21+ 1: punctuation.definition.multi-comment.nim
22+ 2: invalid.illegal.TODO.nim
23+ pop: true
24+ - match: (##\s*(TODO|todo)?).+$\n?
25+ comment: A documentation comment.
26+ scope: comment.line.number-sign.doc-comment.nim
27+ captures:
28+ 1: punctuation.definition.doc-comment.nim
29+ 2: invalid.illegal.TODO.nim
30+ - match: (##\s*)$\n?
31+ comment: An empty documentation comment.
32+ scope: comment.line.number-sign.doc-comment.empty.nim
33+ captures:
34+ 1: punctuation.definition.doc-comment.empty.nim
35+ - match: (#\s*(TODO|todo)?).*$\n?
36+ comment: A regular comment
37+ scope: comment.line.number-sign.comment.nim
38+ captures:
39+ 1: punctuation.definition.comment.nim
40+ 2: invalid.illegal.TODO.nim
41+ - match: '\{\.'
42+ comment: Pragmas
43+ push:
44+ - meta_scope: pragma
45+ - match: '\.?\}'
46+ pop: true
47+ - match: \"
48+ push:
49+ - meta_scope: string.something.nim
50+ - match: \"
51+ pop: true
52+ - match: '([\w\x{80}-\x{10FFFF}]+)'
53+ scope: entity.other.attribute-name.pragma.nim
54+ - match: discard \"\"\"
55+ comment: A discarded triple string literal comment
56+ push:
57+ - meta_scope: comment.line.discarded.nim
58+ - match: \"\"\"
59+ pop: true
60+ - match: '(?<![\w\x{80}-\x{10FFFF}])(\d[_\d]*((\.[_\d]+([eE][\+\-]?\d[_\d]*)?)|([eE][\+\-]?\d[_\d]*)))(''?([fF](32|64|128))|[fFdD])?'
61+ comment: A float literal
62+ scope: constant.numeric.float.decimal.nim
63+ - match: '(?<![\w\x{80}-\x{10FFFF}])(0[xX][0-9A-Fa-f][_0-9A-Fa-f]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
64+ comment: A hexadecimal literal
65+ scope: constant.numeric.integer.hexadecimal.nim
66+ - match: '(?<![\w\x{80}-\x{10FFFF}])(0[ocC][0-7][_0-7]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
67+ comment: A base-8 integer literal
68+ scope: constant.numeric.integer.octal.nim
69+ - match: '(?<![\w\x{80}-\x{10FFFF}])(0(b|B)[01][_01]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
70+ comment: A base-2 integer literal
71+ scope: constant.numeric.integer.binary.nim
72+ - match: '(?<![\w\x{80}-\x{10FFFF}])(\d[_\d]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
73+ comment: A base-10 integer literal
74+ scope: constant.numeric.integer.decimal.nim
75+ - match: '(?<![\w\x{80}-\x{10FFFF}])(true|false|inf|nil)(?![\w\x{80}-\x{10FFFF}])'
76+ comment: Language Constants.
77+ scope: constant.language.nim
78+ - match: (?:^|\s+|=)(when|if)\b
79+ comment: Primary branching keywords
80+ captures:
81+ 1: keyword.control.primary.nim
82+ push:
83+ - match: (?=:)
84+ captures:
85+ 1: control.variable.parameter.nim
86+ pop: true
87+ - include: scope:source.nim
88+ - match: (?:^|\s+|=)(case)\b
89+ comment: Primary branching keyword 'case'
90+ captures:
91+ 1: keyword.control.primary.nim
92+ push:
93+ - match: (?=\bof\b)
94+ captures:
95+ 1: control.variable.parameter.nim
96+ pop: true
97+ - include: scope:source.nim
98+ - match: (?:^|\s+)(of|else|elif)\b
99+ comment: Secondary branching keywords and their conditions
100+ captures:
101+ 1: keyword.control.secondary.nim
102+ push:
103+ - match: (?=:)
104+ captures:
105+ 1: control.variable.parameter.nim
106+ pop: true
107+ - include: scope:source.nim
108+ - match: '(?<![\w\x{80}-\x{10FFFF}])(await|block|break|continue|do|end|except|finally|raise|return|try|while|yield)(?![\w\x{80}-\x{10FFFF}])'
109+ comment: Keywords that affect program control flow or scope.
110+ scope: keyword.control.nim
111+ - match: '((?<![\w\x{80}-\x{10FFFF}])(and|in|is|isnot|not|notin|or|xor)(?![\w\x{80}-\x{10FFFF}]))'
112+ comment: Keyword boolean operators for expressions.
113+ scope: keyword.operator.boolean.nim
114+ - match: '((?<![\w\x{80}-\x{10FFFF}])(addr|as|atomic|bind|cast|const|converter|defer|discard|distinct|div|enum|export|include|let|mixin|object|of|ptr|ref|shl|shr|static|type|var)(?![\w\x{80}-\x{10FFFF}]))'
115+ comment: Other keywords.
116+ scope: keyword.other.nim
117+ - match: (\b()\b|(=|\+|-|\*|/|<|>|@|\$|~|&|%|!|\?|\^|\.|:|\\)+)
118+ comment: Generic operators for expressions.
119+ scope: keyword.operator.nim
120+ - match: (for)\s+
121+ comment: in keyword in a 'for' loop
122+ captures:
123+ 1: keyword.control.nim
124+ push:
125+ - meta_scope: meta.forloop.nim
126+ - match: (?=:)
127+ captures:
128+ 1: keyword.control.nim
129+ pop: true
130+ - match: '\ [\w\x{80}-\x{10FFFF},]+\s+(in)\s+'
131+ captures:
132+ 1: keyword.control.nim
133+ - include: scope:source.nim
134+ - match: '((import)\s+[\.|\w|\/]+,?)'
135+ comment: Import syntax
136+ captures:
137+ 2: keyword.control.nim
138+ - match: '(from)\s+[\/\w]+\s+(?=import)'
139+ captures:
140+ 1: keyword.control.nim
141+ - match: (var|let)\s*\(
142+ comment: Destructure syntax
143+ captures:
144+ 1: keyword.other.nim
145+ push:
146+ - match: \)
147+ captures:
148+ 1: keyword.other.nim
149+ pop: true
150+ - match: '((?<![\w\x{80}-\x{10FFFF}])(generic|interface|lambda|out|shared|with|without)(?![\w\x{80}-\x{10FFFF}]))'
151+ comment: Invalid and unused keywords.
152+ scope: keyword.invalid.nim
153+ - match: '(?<![\w\x{80}-\x{10FFFF}])(new|GC_ref|GC_unref|assert|echo|defined|declared|newException|countup|countdown|len|high|low)(?![\w\x{80}-\x{10FFFF}])'
154+ comment: Common functions
155+ scope: keyword.other.common.function.nim
156+ - match: '(?<![\w\x{80}-\x{10FFFF}])(((uint|int|float)(8|16|32|64)?)|clong|culong|cchar|cschar|cshort|cint|csize|clonglong|cfloat|cdouble|clongdouble|cuchar|cushort|cuint|culonglong|cstringArray|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)(?![\w\x{80}-\x{10FFFF}])'
157+ comment: Built-in, concrete types.
158+ scope: storage.type.concrete.nim
159+ - match: '(?<![\w\x{80}-\x{10FFFF}])(range|array|seq|tuple|natural|set|ref|ptr|pointer)(?![\w\x{80}-\x{10FFFF}])'
160+ comment: Built-in, generic types.
161+ scope: storage.type.generic.nim
162+ - match: '(?<![\w\x{80}-\x{10FFFF}])(proc|iterator|method|template|macro)(?![\w\x{80}-\x{10FFFF}])'
163+ comment: Function types
164+ scope: storage.type.function.nim
165+ - match: '(?<![\w\x{80}-\x{10FFFF}])(openarray|varargs|void)(?![\w\x{80}-\x{10FFFF}])'
166+ comment: Special types.
167+ scope: storage.type.generic.nim
168+ - match: '(?<![\w\x{80}-\x{10FFFF}])([A-Z][A-Z0-9_]+)(?![\w\x{80}-\x{10FFFF}])'
169+ comment: Other constants.
170+ scope: support.constant.nim
171+ - match: '(?<![\w\x{80}-\x{10FFFF}])([A-Z]\w+)(?![\w\x{80}-\x{10FFFF}])'
172+ comment: Other types.
173+ scope: support.type.nim
174+ - match: '(?<![\w\x{80}-\x{10FFFF}])(\w+)(?![\w\x{80}-\x{10FFFF}])(?=\()'
175+ comment: Function call.
176+ scope: support.function.any-method.nim
177+ - match: r?\"\"\"
178+ comment: (Raw) Triple Quoted String
179+ push:
180+ - meta_scope: string.quoted.triple.nim
181+ - match: '\"\"\"[^\"]'
182+ pop: true
183+ - match: r\"
184+ comment: Raw Double Quoted String
185+ push:
186+ - meta_scope: string.quoted.double.raw.nim
187+ - match: \"
188+ pop: true
189+ - match: \"\"
190+ - match: \"
191+ comment: Double Quoted String
192+ push:
193+ - meta_scope: string.quoted.double.nim
194+ - match: \"
195+ pop: true
196+ - include: escaped_char
197+ - match: \'
198+ comment: Single quoted character literal
199+ push:
200+ - meta_scope: string.quoted.single.nim
201+ - match: \'
202+ pop: true
203+ - match: \\n
204+ scope: invalid.illegal.character.nim
205+ - include: escaped_char
206+ - match: '([^\''][^\'']+?)'
207+ scope: invalid.illegal.character.nim
208+ - match: '([\w\x{80}-\x{10FFFF}\`]+)\s*(?=\(|\[.+?\]\s*\()'
209+ comment: Call syntax
210+ captures:
211+ 1: support.function.any-method.nim
212+ push:
213+ - match: \)
214+ captures:
215+ 1: support.function.any-method.nim
216+ pop: true
217+ - include: scope:source.nim
218+ - match: '([\w\x{80}-\x{10FFFF}]+)(?=\s+[\w](?![\w\x{80}-\x{10FFFF}]+((?!\n)\s)+))'
219+ comment: Command syntax
220+ captures:
221+ 1: support.function.any-method.nim
222+ - match: '([\w\x{80}-\x{10FFFF}]+)(?=\s+[\"\''\`])'
223+ captures:
224+ 1: support.function.any-method.nim
225+ - match: (tmpl(i)?)(?=( (nim|html|xml|js|css|glsl|md))?\"\"\")
226+ comment: tmpl specifier
227+ captures:
228+ 1: storage.type.function.nim
229+ 2: keyword.operator.nim
230+ escaped_char:
231+ - match: '\\[nN]'
232+ scope: constant.character.escape.newline.nim
233+ - match: '\\[cC]|\\[rR]'
234+ scope: constant.character.escape.carriagereturn.nim
235+ - match: '\\[lL]'
236+ scope: constant.character.escape.linefeed.nim
237+ - match: '\\[fF]'
238+ scope: constant.character.escape.formfeed.nim
239+ - match: '\\[tT]'
240+ scope: constant.character.escape.tabulator.nim
241+ - match: '\\[vV]'
242+ scope: constant.character.escape.verticaltabulator.nim
243+ - match: \\\"
244+ scope: constant.character.escape.double-quote.nim
245+ - match: \\'
246+ scope: constant.character.escape.single-quote.nim
247+ - match: '\\[0-9]+'
248+ scope: constant.character.escape.chardecimalvalue.nim
249+ - match: '\\[aA]'
250+ scope: constant.character.escape.alert.nim
251+ - match: '\\[bB]'
252+ scope: constant.character.escape.backspace.nim
253+ - match: '\\[eE]'
254+ scope: constant.character.escape.escape.nim
255+ - match: '\\[xX][0-9A-Fa-f]{2}'
256+ scope: constant.character.escape.hex.nim
257+ - match: \\\\
258+ scope: constant.character.escape.backslash.nim
assets/syntaxes/02_Extra/Ninjanew file+1

Submodule changed.

assets/syntaxes/02_Extra/Ninja.sublime-syntaxnew file+52
@@ -0,0 +1,52 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Ninja
5+file_extensions:
6+ - ninja
7+scope: source.ninja
8+contexts:
9+ main:
10+ - match: (#).*$\n?
11+ comment: Comment line.
12+ scope: comment.line.number-sign.ninja
13+ captures:
14+ 1: punctuation.definition.comment.ninja
15+ - match: ^(rule)\b
16+ comment: Rule keyword and keywords for a rule.
17+ captures:
18+ 1: keyword.other.ninja
19+ push:
20+ - match: ^(?=\S)
21+ pop: true
22+ - include: main
23+ - match: \b(?:command|deps|depfile|description|generator|pool|restat|rspfile|rspfile_content)\b
24+ scope: keyword.other.ninja
25+ - match: ^(pool)\b
26+ comment: Pool keyword and keywords for a pool.
27+ captures:
28+ 1: keyword.other.ninja
29+ push:
30+ - match: ^(?=\S)
31+ pop: true
32+ - include: main
33+ - match: \b(?:depth)\b
34+ scope: keyword.other.ninja
35+ - match: ^(?:build|rule|default|include|subninja)\b
36+ comment: Other Keywords.
37+ scope: keyword.other.ninja
38+ - match: '(?:[=:]|\|{1,2})(?=\s)'
39+ comment: Operators for variable assignment (=), rule definition (:), implicit (|) and order only (||) dependencies.
40+ scope: keyword.operator.ninja
41+ - match: \$$
42+ comment: Line wrap.
43+ scope: keyword.operator.ninja
44+ - match: \$\$
45+ comment: Dollar literal.
46+ scope: keyword.operator.ninja
47+ - match: '\$[[:alnum:]_-]+'
48+ comment: Simple variables, e.g. $var.
49+ scope: variable.other.ninja
50+ - match: '\${[[:alnum:]_.-]+}'
51+ comment: "Variables, e.g. ${some.var.name}."
52+ scope: variable.other.ninja
assets/syntaxes/02_Extra/Nixnew file+1

Submodule changed.

assets/syntaxes/Nix.sublime-syntax → assets/syntaxes/02_Extra/Nix.sublime-syntaxrenamed+2−2
@@ -140,7 +140,7 @@ contexts:
140 push:
140 push:
141 - match: '(?=([\])};]|\b(else|then)\b))'
141 - match: '(?=([\])};]|\b(else|then)\b))'
142 pop: true
142 pop: true
143− - match: '(?=(\s*\}|\"|\binherit\b|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*(\s*\.|\s*=[^=])))'
143+ - match: '(?=(\s*\}|\"|\binherit\b|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*(\s*\.|\s*=[^=])|\$\{[a-zA-z0-9\_\''\-]+\}(\s*\.|\s*=[^=])))'
144 push:
144 push:
145 - match: '(?=([\])};,]|\b(else|then)\b))'
145 - match: '(?=([\])};,]|\b(else|then)\b))'
146 pop: true
146 pop: true
@@ -563,7 +563,7 @@ contexts:
563 pop: true
563 pop: true
564 - include: string-quoted
564 - include: string-quoted
565 - include: expression-cont
565 - include: expression-cont
566− - match: '([a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+)'
566+ - match: '(~?[a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+)'
567 captures:
567 captures:
568 0: string.unquoted.path.nix
568 0: string.unquoted.path.nix
569 push:
569 push:
assets/syntaxes/Org mode → assets/syntaxes/02_Extra/Org moderenamed

The content is the same.

assets/syntaxes/Org mode.sublime-syntax → assets/syntaxes/02_Extra/Org mode.sublime-syntaxrenamed

The content is the same.

assets/syntaxes/02_Extra/Passwd.sublime-syntaxnew file+71
@@ -0,0 +1,71 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: passwd
5+file_extensions:
6+ - passwd
7+scope: source.passwd
8+
9+contexts:
10+ main:
11+ - comment: name
12+ match: ^[^:]+
13+ scope: keyword
14+
15+ - comment: password
16+ match: ":"
17+ push: password
18+
19+ password:
20+ - comment: uid
21+ match: ":"
22+ set: uid
23+
24+ - comment: shadowpassword
25+ match: "[^:]+"
26+ scope: invalid
27+
28+ uid:
29+ - comment: gid
30+ match: ":"
31+ set: gid
32+
33+ - comment: number
34+ match: "[0-9]+"
35+ scope: constant.numeric
36+
37+ gid:
38+ - comment: comment
39+ match: ":"
40+ set: comment
41+
42+ - comment: number
43+ match: "[0-9]+"
44+ scope: constant.language
45+
46+ comment:
47+ - comment: directory
48+ match: ":"
49+ set: directory
50+
51+ - comment: comment
52+ match: "[^:]+"
53+ scope: entity.name
54+
55+ directory:
56+ - comment: shell
57+ match: ":"
58+ set: shell
59+
60+ - comment: directory
61+ match: "[^:]+"
62+ scope: string.unquoted
63+
64+ shell:
65+ - comment: newline
66+ match: "\n"
67+ pop: true
68+
69+ - comment: directory
70+ match: "[^:\n]+"
71+ scope: variable.parameter
assets/syntaxes/02_Extra/PowerShellnew file+1

Submodule changed.

assets/syntaxes/PowerShell.sublime-syntax → assets/syntaxes/02_Extra/PowerShell.sublime-syntaxrenamed+71−76
@@ -24,7 +24,7 @@ contexts:
24 - include: commands
24 - include: commands
25 - include: commentLine
25 - include: commentLine
26 - include: variable
26 - include: variable
27− - include: interpolatedStringContent
27+ - include: subexpression
28 - include: function
28 - include: function
29 - include: attribute
29 - include: attribute
30 - include: UsingDirective
30 - include: UsingDirective
@@ -33,32 +33,38 @@ contexts:
33 - include: doubleQuotedString
33 - include: doubleQuotedString
34 - include: scriptblock
34 - include: scriptblock
35 - include: doubleQuotedStringEscapes
35 - include: doubleQuotedStringEscapes
36− - match: (?<!')'
36+ - match: '[''\x{2018}-\x{201B}]'
37 captures:
37 captures:
38 0: punctuation.definition.string.begin.powershell
38 0: punctuation.definition.string.begin.powershell
39 push:
39 push:
40 - meta_scope: string.quoted.single.powershell
40 - meta_scope: string.quoted.single.powershell
41− - match: "'(?!')"
41+ - match: '[''\x{2018}-\x{201B}]{2}'
42+ scope: constant.character.escape.powershell
43+ - match: '[''\x{2018}-\x{201B}]'
42 captures:
44 captures:
43 0: punctuation.definition.string.end.powershell
45 0: punctuation.definition.string.end.powershell
44 pop: true
46 pop: true
45− - match: "''"
46− scope: constant.character.escape.powershell
47− - match: \@"(?=$)
47+ - match: '(@["\x{201C}-\x{201E}])\s*$'
48+ captures:
49+ 1: punctuation.definition.string.begin.powershell
48 push:
50 push:
49 - meta_scope: string.quoted.double.heredoc.powershell
51 - meta_scope: string.quoted.double.heredoc.powershell
50− - match: ^"@
52+ - match: '^["\x{201C}-\x{201E}]@'
53+ captures:
54+ 0: punctuation.definition.string.end.powershell
51 pop: true
55 pop: true
52 - include: variableNoProperty
56 - include: variableNoProperty
53 - include: doubleQuotedStringEscapes
57 - include: doubleQuotedStringEscapes
54 - include: interpolation
58 - include: interpolation
55− - match: \@'(?=$)
59+ - match: '(@[''\x{2018}-\x{201B}])\s*$'
60+ captures:
61+ 1: punctuation.definition.string.begin.powershell
56 push:
62 push:
57 - meta_scope: string.quoted.single.heredoc.powershell
63 - meta_scope: string.quoted.single.heredoc.powershell
58− - match: ^'@
64+ - match: '^[''\x{2018}-\x{201B}]@'
65+ captures:
66+ 0: punctuation.definition.string.end.powershell
59 pop: true
67 pop: true
60− - match: "''"
61− scope: constant.character.escape.powershell
62 - include: numericConstant
68 - include: numericConstant
63 - match: (@)(\()
69 - match: (@)(\()
64 captures:
70 captures:
@@ -71,11 +77,12 @@ contexts:
71 0: punctuation.section.group.end.powershell
77 0: punctuation.section.group.end.powershell
72 pop: true
78 pop: true
73 - include: main
79 - include: main
74− - match: (\$)(\()
80+ - match: ((\$))(\()
75 comment: "TODO: move to repo; make recursive."
81 comment: "TODO: move to repo; make recursive."
76 captures:
82 captures:
77− 1: punctuation.definition.variable.powershell
83+ 1: keyword.other.substatement.powershell
84+ 2: punctuation.definition.subexpression.powershell
78− 2: punctuation.section.group.begin.powershell
85+ 3: punctuation.section.group.begin.powershell
79 push:
86 push:
80 - meta_scope: meta.group.complex.subexpression.powershell
87 - meta_scope: meta.group.complex.subexpression.powershell
81 - match: \)
88 - match: \)
@@ -85,7 +92,7 @@ contexts:
85 - include: main
92 - include: main
86 - match: '(\b(([A-Za-z0-9\-_\.]+)\.(?i:exe|com|cmd|bat))\b)'
93 - match: '(\b(([A-Za-z0-9\-_\.]+)\.(?i:exe|com|cmd|bat))\b)'
87 scope: support.function.powershell
94 scope: support.function.powershell
88− - match: (?<!\w|-|\.)((?i:begin|break|catch|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\?)(?!\w)
95+ - match: (?<!\w|-|\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\?)(?!\w)
89 scope: keyword.control.powershell
96 scope: keyword.control.powershell
90 - match: '(?<!\w|-|[^\)]\.)((?i:(foreach|where)(?!-object))|%|\?)(?!\w)'
97 - match: '(?<!\w|-|[^\)]\.)((?i:(foreach|where)(?!-object))|%|\?)(?!\w)'
91 scope: keyword.control.powershell
98 scope: keyword.control.powershell
@@ -135,7 +142,7 @@ contexts:
135 - meta_scope: meta.requires.powershell
142 - meta_scope: meta.requires.powershell
136 - match: $
143 - match: $
137 pop: true
144 pop: true
138− - match: \-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version)
145+ - match: \-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)
139 scope: keyword.other.powershell
146 scope: keyword.other.powershell
140 - match: '(?<!-)\b\p{L}+|\d+(?:\.\d+)*'
147 - match: '(?<!-)\b\p{L}+|\d+(?:\.\d+)*'
141 scope: variable.parameter.powershell
148 scope: variable.parameter.powershell
@@ -147,7 +154,7 @@ contexts:
147 2: keyword.other.powershell
154 2: keyword.other.powershell
148 3: variable.parameter.powershell
155 3: variable.parameter.powershell
149 attribute:
156 attribute:
150− - match: '(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength)\b'
157+ - match: '(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\b'
151 captures:
158 captures:
152 1: punctuation.section.bracket.begin.powershell
159 1: punctuation.section.bracket.begin.powershell
153 2: support.function.attribute.powershell
160 2: support.function.attribute.powershell
@@ -165,31 +172,11 @@ contexts:
165 captures:
172 captures:
166 0: punctuation.section.group.end.powershell
173 0: punctuation.section.group.end.powershell
167 pop: true
174 pop: true
168− - include: variable
169− - include: variableNoProperty
170− - include: hashtable
171− - include: scriptblock
172− - include: doubleQuotedStringEscapes
173− - include: doubleQuotedString
174− - include: type
175− - include: numericConstant
176− - include: doubleQuotedString
177 - include: main
175 - include: main
178 - match: (?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?
176 - match: (?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?
179 captures:
177 captures:
180 1: variable.parameter.attribute.powershell
178 1: variable.parameter.attribute.powershell
181 2: keyword.operator.assignment.powershell
179 2: keyword.operator.assignment.powershell
182− - match: (?<!')'
183− captures:
184− 0: punctuation.definition.string.begin.powershell
185− push:
186− - meta_scope: string.quoted.single.powershell
187− - match: "'(?!')"
188− captures:
189− 0: punctuation.definition.string.end.powershell
190− pop: true
191− - match: "''"
192− scope: constant.character.escape.powershell
193 commands:
180 commands:
194 - match: '(?:(\p{L}|\d|_|-|\\|\:)*\\)?\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\-.+?(?:\.(?i:exe|cmd|bat|ps1))?\b'
181 - match: '(?:(\p{L}|\d|_|-|\\|\:)*\\)?\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\-.+?(?:\.(?i:exe|cmd|bat|ps1))?\b'
195 comment: "Verb-Noun pattern:"
182 comment: "Verb-Noun pattern:"
@@ -207,51 +194,53 @@ contexts:
207 comment: Builtin cmdlets with reserved verbs
194 comment: Builtin cmdlets with reserved verbs
208 scope: support.function.powershell
195 scope: support.function.powershell
209 commentEmbeddedDocs:
196 commentEmbeddedDocs:
210− - match: ^(?i:(?:\s?|#)+(\.)(COMPONENT|DESCRIPTION|EXAMPLE|EXTERNALHELP|FORWARDHELPCATEGORY|FORWARDHELPTARGETNAME|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|REMOTEHELPRUNSPACE|ROLE|SYNOPSIS))
197+ - match: (?:^|\G)(?i:\s*(\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\s*$
198+ comment: these embedded doc keywords do not support arguments, must be the only thing on the line
211 scope: comment.documentation.embedded.powershell
199 scope: comment.documentation.embedded.powershell
212 captures:
200 captures:
213 1: constant.string.documentation.powershell
201 1: constant.string.documentation.powershell
214 2: keyword.operator.documentation.powershell
202 2: keyword.operator.documentation.powershell
215− - match: '(?i:\s?(\.)(PARAMETER|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP)\s+([a-z0-9-_]+))'
203+ - match: (?:^|\G)(?i:\s*(\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\s+(.+?)\s*$
204+ comment: these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match
216 scope: comment.documentation.embedded.powershell
205 scope: comment.documentation.embedded.powershell
217 captures:
206 captures:
218 1: constant.string.documentation.powershell
207 1: constant.string.documentation.powershell
219 2: keyword.operator.documentation.powershell
208 2: keyword.operator.documentation.powershell
220 3: keyword.operator.documentation.powershell
209 3: keyword.operator.documentation.powershell
221 commentLine:
210 commentLine:
222− - match: '(?<![`\\-])#'
211+ - match: '(?<![`\\-])(#)#*'
223 captures:
212 captures:
224− 0: punctuation.definition.comment.powershell
213+ 1: punctuation.definition.comment.powershell
225 push:
214 push:
226 - meta_scope: comment.line.powershell
215 - meta_scope: comment.line.powershell
227 - match: $\n?
216 - match: $\n?
228 captures:
217 captures:
229− 0: punctuation.definition.comment.powershell
218+ 1: punctuation.definition.comment.powershell
230 pop: true
219 pop: true
231 - include: commentEmbeddedDocs
220 - include: commentEmbeddedDocs
232 - include: RequiresDirective
221 - include: RequiresDirective
233 doubleQuotedString:
222 doubleQuotedString:
234− - match: (?<!(?<!`)")"
223+ - match: '["\x{201C}-\x{201E}]'
235 captures:
224 captures:
236 0: punctuation.definition.string.begin.powershell
225 0: punctuation.definition.string.begin.powershell
237 push:
226 push:
238 - meta_scope: string.quoted.double.powershell
227 - meta_scope: string.quoted.double.powershell
239− - match: '"(?!")'
240− captures:
241− 0: punctuation.definition.string.end.powershell
242− pop: true
243 - match: '(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b'
228 - match: '(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b'
244 - include: variableNoProperty
229 - include: variableNoProperty
245− - include: variable
246 - include: doubleQuotedStringEscapes
230 - include: doubleQuotedStringEscapes
231+ - match: '["\x{201C}-\x{201E}]{2}'
232+ scope: constant.character.escape.powershell
247 - include: interpolation
233 - include: interpolation
248 - match: '`\s*$'
234 - match: '`\s*$'
249 scope: keyword.other.powershell
235 scope: keyword.other.powershell
236+ - match: '["\x{201C}-\x{201E}]'
237+ captures:
238+ 0: punctuation.definition.string.end.powershell
239+ pop: true
250 doubleQuotedStringEscapes:
240 doubleQuotedStringEscapes:
251− - match: '`[0abnfrvt"''$`]'
241+ - match: '`[`0abefnrtv''"\x{2018}-\x{201E}$]'
252− scope: constant.character.escape.powershell
253− - match: '""'
254 scope: constant.character.escape.powershell
242 scope: constant.character.escape.powershell
243+ - include: unicodeEscape
255 function:
244 function:
256 - match: '^(?:\s*+)(?i)(function|filter|configuration|workflow)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)'
245 - match: '^(?:\s*+)(?i)(function|filter|configuration|workflow)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)'
257 captures:
246 captures:
@@ -283,33 +272,23 @@ contexts:
283 4: keyword.operator.assignment.powershell
272 4: keyword.operator.assignment.powershell
284 - include: scriptblock
273 - include: scriptblock
285 - include: main
274 - include: main
286− interpolatedStringContent:
287− - match: \(
288− captures:
289− 0: punctuation.section.group.begin.powershell
290− push:
291− - meta_content_scope: interpolated.simple.source.powershell
292− - match: \)
293− captures:
294− 0: punctuation.section.group.end.powershell
295− pop: true
296− - include: main
297− - include: interpolation
298− - include: interpolatedStringContent
299 interpolation:
275 interpolation:
300− - match: (\$)(\()
276+ - match: (((\$)))((\())
301 captures:
277 captures:
302− 1: punctuation.definition.variable.powershell
278+ 1: keyword.other.substatement.powershell
279+ 2: punctuation.definition.substatement.powershell
280+ 3: punctuation.section.embedded.substatement.begin.powershell
303− 2: punctuation.section.group.begin.powershell
281+ 4: punctuation.section.group.begin.powershell
282+ 5: punctuation.section.embedded.substatement.begin.powershell
304 push:
283 push:
284+ - meta_scope: meta.embedded.substatement.powershell
305 - meta_content_scope: interpolated.complex.source.powershell
285 - meta_content_scope: interpolated.complex.source.powershell
306− - match: \)
286+ - match: (\))
307 captures:
287 captures:
308 0: punctuation.section.group.end.powershell
288 0: punctuation.section.group.end.powershell
289+ 1: punctuation.section.embedded.substatement.end.powershell
309 pop: true
290 pop: true
310 - include: main
291 - include: main
311− - include: interpolation
312− - include: interpolatedStringContent
313 numericConstant:
292 numericConstant:
314 - match: '(?<!\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b'
293 - match: '(?<!\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b'
315 captures:
294 captures:
@@ -350,6 +329,17 @@ contexts:
350 0: punctuation.section.braces.end.powershell
329 0: punctuation.section.braces.end.powershell
351 pop: true
330 pop: true
352 - include: main
331 - include: main
332+ subexpression:
333+ - match: \(
334+ captures:
335+ 0: punctuation.section.group.begin.powershell
336+ push:
337+ - meta_scope: meta.group.simple.subexpression.powershell
338+ - match: \)
339+ captures:
340+ 0: punctuation.section.group.end.powershell
341+ pop: true
342+ - include: main
353 type:
343 type:
354 - match: '\['
344 - match: '\['
355 captures:
345 captures:
@@ -362,6 +352,11 @@ contexts:
362 - match: '(?!\d+|\.)(?:\p{L}|\p{N}|\.)+'
352 - match: '(?!\d+|\.)(?:\p{L}|\p{N}|\.)+'
363 scope: storage.type.powershell
353 scope: storage.type.powershell
364 - include: main
354 - include: main
355+ unicodeEscape:
356+ - match: '`u\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\g<1>{1,5})}'
357+ scope: constant.character.escape.powershell
358+ - match: '`u(?:\{[0-9a-fA-F]{,6}.)?'
359+ scope: invalid.character.escape.powershell
365 variable:
360 variable:
366 - match: (\$)(?i:(False|Null|True))\b
361 - match: (\$)(?i:(False|Null|True))\b
367 comment: These are special constants.
362 comment: These are special constants.
@@ -374,13 +369,13 @@ contexts:
374 0: support.constant.variable.powershell
369 0: support.constant.variable.powershell
375 1: punctuation.definition.variable.powershell
370 1: punctuation.definition.variable.powershell
376 3: variable.other.member.powershell
371 3: variable.other.member.powershell
377− - match: '(\$)(?i:(\$|\^|\?|_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
372+ - match: '(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)((?:\.(?:\p{L}|\d|_)+)*\b)?'
378 comment: Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.
373 comment: Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.
379 captures:
374 captures:
380− 0: support.constant.automatic.powershell
375+ 0: support.variable.automatic.powershell
381 1: punctuation.definition.variable.powershell
376 1: punctuation.definition.variable.powershell
382 3: variable.other.member.powershell
377 3: variable.other.member.powershell
383− - match: '(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|ProgressPreference|PsCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|VerbosePreference|WarningPreference|WhatIfPreference))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
378+ - match: '(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
384 comment: Style preference variables as language variables so that they stand out.
379 comment: Style preference variables as language variables so that they stand out.
385 captures:
380 captures:
386 0: variable.language.powershell
381 0: variable.language.powershell
@@ -426,19 +421,19 @@ contexts:
426 0: support.constant.variable.powershell
421 0: support.constant.variable.powershell
427 1: punctuation.definition.variable.powershell
422 1: punctuation.definition.variable.powershell
428 3: variable.other.member.powershell
423 3: variable.other.member.powershell
429− - match: (\$)(?i:(\$|\^|\?|_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This))\b
424+ - match: '(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)'
430 comment: Automatic variables are not constants, but they are read-only...
425 comment: Automatic variables are not constants, but they are read-only...
431 captures:
426 captures:
432 0: support.variable.automatic.powershell
427 0: support.variable.automatic.powershell
433 1: punctuation.definition.variable.powershell
428 1: punctuation.definition.variable.powershell
434 3: variable.other.member.powershell
429 3: variable.other.member.powershell
435− - match: (\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|ProgressPreference|PsCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|VerbosePreference|WarningPreference|WhatIfPreference))\b
430+ - match: (\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\b
436 comment: Style preference variables as language variables so that they stand out.
431 comment: Style preference variables as language variables so that they stand out.
437 captures:
432 captures:
438 0: variable.language.powershell
433 0: variable.language.powershell
439 1: punctuation.definition.variable.powershell
434 1: punctuation.definition.variable.powershell
440 3: variable.other.member.powershell
435 3: variable.other.member.powershell
441− - match: '(?i:(\$|@)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))'
436+ - match: '(?i:(\$)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))'
442 captures:
437 captures:
443 0: variable.other.readwrite.powershell
438 0: variable.other.readwrite.powershell
444 1: punctuation.definition.variable.powershell
439 1: punctuation.definition.variable.powershell
assets/syntaxes/02_Extra/Protobufnew file+1

Submodule changed.

assets/syntaxes/Puppet → assets/syntaxes/02_Extra/Puppetrenamed

The content is the same.

assets/syntaxes/02_Extra/PureScriptnew file+1

Submodule changed.

assets/syntaxes/02_Extra/QMLnew file+1

Submodule changed.

assets/syntaxes/02_Extra/QML.sublime-syntaxnew file+103
@@ -0,0 +1,103 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: QML
5+file_extensions:
6+ - qml
7+ - qmlproject
8+scope: source.qml
9+contexts:
10+ main:
11+ - match: /\*(?!/)
12+ comment: Block comment.
13+ push:
14+ - meta_scope: comment.block.documentation.qml
15+ - match: \*/
16+ pop: true
17+ - match: //.*$
18+ comment: Line comment.
19+ scope: comment.line.double-slash.qml
20+ - match: \b(import)\s+
21+ comment: import statement.
22+ captures:
23+ 1: keyword.other.import.qml
24+ push:
25+ - meta_scope: meta.import.qml
26+ - match: $
27+ pop: true
28+ - match: '([\w\d\.]+)\s+(\d+\.\d+)(?:\s+(as)\s+([A-Z][\w\d]*))?'
29+ comment: "import Namespace VersionMajor.VersionMinor [as SingletonTypeIdentifier]"
30+ scope: meta.import.namespace.qml
31+ captures:
32+ 1: entity.name.class.qml
33+ 2: constant.numeric.qml
34+ 3: keyword.other.import.qml
35+ 4: entity.name.class.qml
36+ - match: '(\"[^\"]+\")(?:\s+(as)\s+([A-Z][\w\d]*))?'
37+ comment: "import <string> [as Script]"
38+ scope: meta.import.dirjs.qml
39+ captures:
40+ 1: string.quoted.double.qml
41+ 2: keyword.other.import.qml
42+ 3: entity.name.class.qml
43+ - match: '\b[A-Z]\w*\b'
44+ comment: Capitalized word (class or enum).
45+ scope: support.class.qml
46+ - match: '(((^|\{)\s*)|\b)on[A-Z]\w*\b'
47+ comment: onSomething - handler.
48+ scope: support.class.qml
49+ - match: '(?:^|\{)\s*(id)\s*\:\s*([^;\s]+)\b'
50+ comment: "id: <something>"
51+ scope: meta.id.qml
52+ captures:
53+ 1: keyword.other.qml
54+ 2: storage.modifier.qml
55+ - match: '^\s*(?:(default|readonly)\s+)?(property)\s+(?:(alias)|([\w\<\>]+))\s+(\w+)'
56+ comment: property definition.
57+ scope: meta.propertydef.qml
58+ captures:
59+ 1: keyword.other.qml
60+ 2: keyword.other.qml
61+ 3: keyword.other.qml
62+ 4: storage.type.qml
63+ 5: entity.other.attribute-name.qml
64+ - match: \b(signal)\s+(\w+)\s*
65+ comment: "signal <signalName>[([<type> <parameter>[, ...]])]"
66+ captures:
67+ 1: keyword.other.qml
68+ 2: support.function.qml
69+ push:
70+ - meta_scope: meta.signal.qml
71+ - match: ;|(?=/)|$
72+ pop: true
73+ - match: (\w+)\s+(\w+)
74+ scope: meta.signal.parameters.qml
75+ captures:
76+ 1: storage.type.qml
77+ 2: variable.parameter.qml
78+ - match: (?:\b|\s+)(?:(true|false|null|undefined)|(var|void)|(on|as|enum|connect|break|case|catch|continue|debugger|default|delete|do|else|finally|for|if|in|instanceof|new|return|switch|this|throw|try|typeof|while|with))\b
79+ comment: js keywords.
80+ scope: meta.keyword.qml
81+ captures:
82+ 1: constant.language.qml
83+ 2: storage.type.qml
84+ 3: keyword.control.qml
85+ - match: '\b(function)\s+([\w_]+)\s*(?=\()'
86+ comment: function definition.
87+ scope: meta.function.qml
88+ captures:
89+ 1: storage.type.qml
90+ 2: entity.name.function.untitled
91+ - match: '\b[\w_]+\s*(?=\()'
92+ comment: function call.
93+ scope: support.function.qml
94+ - match: '(?:^|\{|;)\s*[a-z][\w\.]*\s*(?=\:)'
95+ comment: "property (property: <something>)."
96+ scope: entity.other.attribute-name.qml
97+ - match: (?<=\.)\b\w*
98+ comment: property of the variable (name.property).
99+ scope: entity.other.attribute-name.qml
100+ - match: '\b([a-z_]\w*)\b'
101+ comment: All non colored words are assumed to be variables.
102+ scope: variable.parameter
103+ - include: scope:source.js
assets/syntaxes/02_Extra/Racketnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Racket.sublime-syntaxnew file+52
@@ -0,0 +1,52 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Racket
5+file_extensions:
6+ - rkt
7+scope: source.racket
8+contexts:
9+ main:
10+ - match: '[^\\](\"[^\"]*\")'
11+ captures:
12+ 1: string.quoted.double.source.racket
13+ - match: '\((define)\s+([a-zA-Z0-9_\-?\+^]+)\s*'
14+ scope: meta.variable.source.racket
15+ captures:
16+ 1: keyword.source.racket
17+ 2: entity.name.variable.source.racket
18+ - match: '\((define)\s+\(([a-zA-Z0-9_\-?\+^]+)\s*'
19+ scope: meta.function.source.racket
20+ captures:
21+ 1: keyword.source.racket
22+ 2: entity.name.function
23+ - match: '\((struct)\s+([a-zA-Z0-9_\-?\+^]+)\s+'
24+ scope: meta.struct.source.racket
25+ captures:
26+ 1: keyword.source.racket
27+ 2: entity.name.type
28+ - match: '[\s\(](if|lambda|cond|define|type-case|let|letrec|let!|\#lang|require|test|else|first|rest|define-type|define-type-alias|define-struct|not|local|error|lang)[\s\)]'
29+ scope: meta.keywords.source.racket
30+ captures:
31+ 1: keyword.source.racket
32+ - match: '[\s\(](true|false|empty|null)[\s\)]'
33+ captures:
34+ 1: constant.language.source.racket
35+ - match: '[\s\(\[\{](#t|#true|#f|#false)[\s\)\]\}]'
36+ captures:
37+ 1: constant.language.source.racket
38+ - match: '(#\\[a-zA-Z0-9_\-?\+\.\!\"]+)'
39+ captures:
40+ 1: constant.language.source.racket
41+ - match: '\b(0|([1-9][0-9_]*))\b'
42+ scope: constant.numeric.integer.source.racket
43+ - match: ;
44+ push:
45+ - meta_scope: comment.line.documentation.source.racket
46+ - match: $\n
47+ pop: true
48+ - match: '#\|'
49+ push:
50+ - meta_scope: comment.block.source.racket
51+ - match: '\|#'
52+ pop: true
assets/syntaxes/02_Extra/Rego.sublime-syntaxnew file+97
@@ -0,0 +1,97 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Rego
5+file_extensions:
6+ - rego
7+scope: source.rego
8+contexts:
9+ main:
10+ - include: comment
11+ - include: keyword
12+ - include: operator
13+ - include: head
14+ - include: term
15+ comment:
16+ - match: (#).*$\n?
17+ scope: comment.line.number-sign.rego
18+ captures:
19+ 1: punctuation.definition.comment.rego
20+ call:
21+ - match: '([a-zA-Z_][a-zA-Z0-9_]*)\('
22+ scope: meta.function-call.rego
23+ captures:
24+ 1: support.function.any-method.rego
25+ constant:
26+ - match: \b(?:true|false|null)\b
27+ scope: constant.language.rego
28+ head:
29+ - match: "^([[:alpha:]_][[:alnum:]_]*)"
30+ captures:
31+ 1: entity.name.function.declaration
32+ push:
33+ - meta_scope: meta.function.rego
34+ - match: '(=|{|\n)'
35+ pop: true
36+ - include: term
37+ keyword:
38+ - match: (^|\s+)(?:(default|not|package|import|as|with|else|some))\s+
39+ scope: keyword.other.rego
40+ number:
41+ - match: |-
42+ (?x: # turn on extended mode
43+ -? # an optional minus
44+ (?:
45+ 0 # a zero
46+ | # ...or...
47+ [1-9] # a 1-9 character
48+ \d* # followed by zero or more digits
49+ )
50+ (?:
51+ (?:
52+ \. # a period
53+ \d+ # followed by one or more digits
54+ )?
55+ (?:
56+ [eE] # an e character
57+ [+-]? # followed by an option +/-
58+ \d+ # followed by one or more digits
59+ )? # make exponent optional
60+ )? # make decimal portion optional
61+ )
62+ scope: constant.numeric.rego
63+ operator:
64+ - match: \=|\!\=|>|<|<\=|>\=|\+|-|\*|%|/|\||&|:\=
65+ scope: keyword.operator.comparison.rego
66+ string:
67+ - match: '"'
68+ captures:
69+ 0: punctuation.definition.string.begin.rego
70+ push:
71+ - meta_scope: string.quoted.double.rego
72+ - match: '"'
73+ captures:
74+ 0: punctuation.definition.string.end.rego
75+ pop: true
76+ - match: |-
77+ (?x: # turn on extended mode
78+ \\ # a literal backslash
79+ (?: # ...followed by...
80+ ["\\/bfnrt] # one of these characters
81+ | # ...or...
82+ u # a u
83+ [0-9a-fA-F]{4} # and four hex digits
84+ )
85+ )
86+ scope: constant.character.escape.rego
87+ - match: \\.
88+ scope: invalid.illegal.unrecognized-string-escape.rego
89+ term:
90+ - include: constant
91+ - include: string
92+ - include: number
93+ - include: call
94+ - include: variable
95+ variable:
96+ - match: '\b[[:alpha:]_][[:alnum:]_]*\b'
97+ scope: meta.identifier.rego
assets/syntaxes/02_Extra/Resolv.sublime-syntaxnew file+21
@@ -0,0 +1,21 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: resolv
5+file_extensions:
6+ - resolv.conf
7+scope: source.resolv
8+
9+contexts:
10+ main:
11+ - scope: comment.line.number-sign
12+ match: \#.*
13+ comment: comment
14+
15+ - comment: configuration
16+ match: "(nameserver|domain|search|sortlist|options)"
17+ scope: keyword.control
18+
19+ - comment: options
20+ match: "(debug|ndots|timeout|attempts|rotate|no-check-names|inet6|ip6-bytestring|ip6-dotint|no-ip6-dotint|edns0|single-request|single-request-reopen|no-tld-query|use-vc|no-reload)"
21+ scope: entity.name
assets/syntaxes/02_Extra/Robotnew file+1

Submodule changed.

assets/syntaxes/Robot.sublime-syntax → assets/syntaxes/02_Extra/Robot.sublime-syntaxrenamed+5−1
@@ -1,9 +1,10 @@
1%YAML 1.2
1%YAML 1.2
2---
2---
3# http://www.sublimetext.com/docs/3/syntax.html
3# http://www.sublimetext.com/docs/3/syntax.html
4−name: Robot Framework syntax highlighting.
4+name: Robot Framework
5file_extensions:
5file_extensions:
6 - robot
6 - robot
7+ - resource
7scope: source.robot
8scope: source.robot
8contexts:
9contexts:
9 main:
10 main:
@@ -52,3 +53,6 @@ contexts:
52 - meta_scope: keyword.control.robot
53 - meta_scope: keyword.control.robot
53 - match: '($|\||\s{2,})'
54 - match: '($|\||\s{2,})'
54 pop: true
55 pop: true
56+ - match: (?i)^\s+(Given|When|and|but|Then)
57+ comment: BDD keywords
58+ scope: string.robot.bdd
assets/syntaxes/02_Extra/SCSS_Sassnew file+1

Submodule changed.

assets/syntaxes/02_Extra/SLSnew file+1

Submodule changed.

assets/syntaxes/02_Extra/SML.sublime-syntaxnew file+33
@@ -0,0 +1,33 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: SML
5+file_extensions:
6+ - sml
7+ - cm
8+ - sig
9+scope: source.sml
10+contexts:
11+ main:
12+ - match: \b(EQUAL|GREATER|LESS|NONE|SOME|abstraction|abstype|and|andalso|array|as|before|bool|case|char|datatype|do|else|end|eqtype|exception|exn|false|fn|fun|functor|handle|if|in|include|infix|infixr|int|let|list|local|nil|nonfix|not|o|of|op|open|option|orelse|overload|print|raise|real|rec|ref|sharing|sig|signature|string|struct|structure|substring|then|true|type|unit|val|vector|where|while|with|withtype|word)\b
13+ comment: SML keywords
14+ scope: keyword.source.sml
15+ - match: '\b[0-9]+\b'
16+ comment: Numeric constants
17+ scope: constant.numeric.sml
18+ - match: '\b[A-Z]([A-z0-9]*)\b'
19+ comment: Built in types
20+ scope: support.type.sml
21+ - match: '"(\\"|[^"])*"'
22+ comment: String constant
23+ scope: string.sml
24+ - match: \(\*
25+ comment: Comment
26+ push:
27+ - meta_scope: comment.sml
28+ - match: \*\)
29+ pop: true
30+ - match: '(\(\)|=>|::|\[\]|->|:>)'
31+ comment: Character
32+ scope: constant.character.sml
33+
assets/syntaxes/02_Extra/Slimnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Slim.sublime-syntaxnew file+306
@@ -0,0 +1,306 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/syntax.html
4+name: Ruby Slim
5+file_extensions:
6+ - slim
7+ - skim
8+scope: text.slim
9+contexts:
10+ main:
11+ - match: ^(\s*)(ruby):$
12+ captures:
13+ 2: constant.language.name.ruby.filter.slim
14+ push:
15+ - meta_scope: text.ruby.filter.slim
16+ - match: ^(?!(\1\s)|\s*$)
17+ pop: true
18+ - include: scope:source.ruby
19+ - match: ^(\s*)(javascript):$
20+ captures:
21+ 2: constant.language.name.javascript.filter.slim
22+ push:
23+ - meta_scope: source.js.filter.slim
24+ - match: ^(?!(\1\s)|\s*$)
25+ pop: true
26+ - include: scope:source.js
27+ - match: ^(---)\s*\n
28+ captures:
29+ 1: storage.frontmatter.slim
30+ push:
31+ - meta_scope: source.yaml.meta.slim
32+ - match: ^(---)\s*\n
33+ captures:
34+ 1: storage.frontmatter.slim
35+ pop: true
36+ - include: scope:source.yaml
37+ - match: ^(\s*)(coffee):$
38+ captures:
39+ 2: constant.language.name.coffeescript.filter.slim
40+ push:
41+ - meta_scope: text.coffeescript.filter.slim
42+ - match: ^(?!(\1\s)|\s*$)
43+ pop: true
44+ - include: scope:source.coffee
45+ - match: ^(\s*)(markdown):$
46+ captures:
47+ 2: constant.language.name.markdown.filter.slim
48+ push:
49+ - meta_scope: text.markdown.filter.slim
50+ - match: ^(?!(\1\s)|\s*$)
51+ pop: true
52+ - include: scope:text.html.markdown
53+ - match: ^(\s*)(css):$
54+ captures:
55+ 2: constant.language.name.css.filter.slim
56+ push:
57+ - meta_scope: text.css.filter.slim
58+ - match: ^(?!(\1\s)|\s*$)
59+ pop: true
60+ - include: scope:source.css
61+ - match: ^(\s*)(sass):$
62+ captures:
63+ 2: constant.language.name.sass.filter.slim
64+ push:
65+ - meta_scope: text.sass.filter.slim
66+ - match: ^(?!(\1\s)|\s*$)
67+ pop: true
68+ - include: scope:source.sass
69+ - match: ^(\s*)(scss):$
70+ captures:
71+ 2: constant.language.name.scss.filter.slim
72+ push:
73+ - meta_scope: text.scss.filter.slim
74+ - match: ^(?!(\1\s)|\s*$)
75+ pop: true
76+ - include: scope:source.scss
77+ - match: ^(\s*)(less):$
78+ captures:
79+ 2: constant.language.name.less.filter.slim
80+ push:
81+ - meta_scope: text.less.filter.slim
82+ - match: ^(?!(\1\s)|\s*$)
83+ pop: true
84+ - include: scope:source.less
85+ - match: ^(\s*)(erb):$
86+ captures:
87+ 2: constant.language.name.erb.filter.slim
88+ push:
89+ - meta_scope: text.erb.filter.slim
90+ - match: ^(?!(\1\s)|\s*$)
91+ pop: true
92+ - include: scope:source.erb
93+ - match: ^(! )($|\s.*)
94+ scope: meta.prolog.slim
95+ captures:
96+ 1: punctuation.definition.prolog.slim
97+ - match: ^(\s*)(/)\s*.*$
98+ captures:
99+ 2: comment.line.slash.slim
100+ push:
101+ - meta_scope: comment.block.slim
102+ - match: ^(?!(\1\s)|\s*$)
103+ pop: true
104+ - match: ^\s*(?=-)
105+ push:
106+ - match: $
107+ pop: true
108+ - include: rubyline
109+ - match: (?==+|~)
110+ push:
111+ - match: $
112+ pop: true
113+ - include: rubyline
114+ - include: tag-attribute
115+ - include: embedded-ruby
116+ - match: ^(\s*)(\||')\s*
117+ comment: Verbatim text (can include HTML tags and copied lines)
118+ push:
119+ - match: ^(?!(\1\s)|\s*$)
120+ pop: true
121+ - include: scope:text.html.basic
122+ - include: embedded-ruby
123+ - match: '^\s*(\.|#|[-a-zA-Z0-9]+)([\w-]+)?'
124+ comment: '1 - dot OR hash OR any combination of word, number; 2 - OPTIONAL any combination of word, number, dash or underscore (following a . or'
125+ captures:
126+ 1: entity.name.tag.slim
127+ 2: entity.other.attribute-name.event.slim
128+ push:
129+ - meta_scope: meta.tag
130+ - match: '$|(?!\.|#|:|-|~|/|\}|\]|\*|\s?[\*\{])'
131+ captures:
132+ 1: entity.name.tag.slim
133+ 2: entity.other.attribute-name.event.slim
134+ pop: true
135+ - match: '(:[\w\d]+)+'
136+ comment: XML
137+ push:
138+ - meta_scope: entity.name.tag.slim
139+ - match: $|\s
140+ pop: true
141+ - match: '(:\s)(\.|#|[a-zA-Z0-9]+)([\w-]+)?'
142+ comment: Inline HTML / 1 - colon; 2 - dot OR hash OR any combination of word, number; 3 - OPTIONAL any combination of word, number, dash or underscore (following a . or
143+ captures:
144+ 1: punctuation.definition.tag.end.slim
145+ 2: entity.name.tag.slim
146+ 3: entity.other.attribute-name.event.slim
147+ push:
148+ - match: '$|(?!\.|#|=|-|~|/|\}|\]|\*|\s?[\*\{])'
149+ captures:
150+ 1: punctuation.definition.tag.end.slim
151+ 2: entity.name.tag.slim
152+ 3: entity.other.attribute-name.event.slim
153+ pop: true
154+ - include: root-class-id-tag
155+ - include: tag-attribute
156+ - match: '(\*\{)(?=.*\}|.*\|\s*$)'
157+ comment: Splat attributes
158+ captures:
159+ 1: punctuation.section.embedded.ruby
160+ push:
161+ - meta_scope: source.ruby.embedded.slim
162+ - match: '(\})|$|^(?!.*\|\s*$)'
163+ captures:
164+ 1: punctuation.section.embedded.ruby
165+ pop: true
166+ - include: embedded-ruby
167+ - include: root-class-id-tag
168+ - include: rubyline
169+ - match: /
170+ scope: punctuation.terminator.tag.slim
171+ - match: ^\s*(\\.)
172+ captures:
173+ 1: meta.escape.slim
174+ - match: ^\s*(?=\||')
175+ push:
176+ - match: $
177+ pop: true
178+ - include: embedded-ruby
179+ - include: scope:text.html.basic
180+ - match: '(?=<[\w\d\:]+)'
181+ comment: Inline and root-level HTML tags
182+ push:
183+ - match: $|\/\>
184+ pop: true
185+ - include: scope:text.html.basic
186+ continuation:
187+ - match: '([\\,])\s*\n'
188+ captures:
189+ 1: punctuation.separator.continuation.slim
190+ delimited-ruby-a:
191+ - match: '=\('
192+ push:
193+ - meta_scope: source.ruby.embedded.slim
194+ - match: \)(?=( \w|$))
195+ pop: true
196+ - include: scope:source.ruby.rails
197+ delimited-ruby-b:
198+ - match: '=\['
199+ push:
200+ - meta_scope: source.ruby.embedded.slim
201+ - match: '\](?=( \w|$))'
202+ pop: true
203+ - include: scope:source.ruby.rails
204+ delimited-ruby-c:
205+ - match: '=\{'
206+ push:
207+ - meta_scope: source.ruby.embedded.slim
208+ - match: '\}(?=( \w|$))'
209+ pop: true
210+ - include: scope:source.ruby.rails
211+ embedded-ruby:
212+ - match: '(?<!\\)#\{{1,2}'
213+ captures:
214+ 0: punctuation.section.embedded.ruby
215+ push:
216+ - meta_scope: source.ruby.embedded.html
217+ - match: '\}{1,2}'
218+ captures:
219+ 0: punctuation.section.embedded.ruby
220+ pop: true
221+ - include: scope:source.ruby.rails
222+ entities:
223+ - match: '(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)'
224+ scope: constant.character.entity.html
225+ captures:
226+ 1: punctuation.definition.entity.html
227+ 3: punctuation.definition.entity.html
228+ - match: '&'
229+ scope: invalid.illegal.bad-ampersand.html
230+ interpolated-ruby:
231+ - match: '=(?=\b)'
232+ push:
233+ - meta_scope: source.ruby.embedded.html
234+ - match: \s|\w$
235+ pop: true
236+ root-class-id-tag:
237+ - match: '(\.|#)([\w\d\-]+)'
238+ captures:
239+ 1: punctuation.separator.key-value.html
240+ 2: entity.other.attribute-name.html
241+ rubyline:
242+ - match: (==|=)(<>|><|<'|'<|<|>)?|-
243+ comment: Hack to thwart Sublime's Ruby highlighter. It thinks do without a variable continues the next line (this can be muted with a / at the end of the line). For things like yields, do is unnecessary without an argument, so this hack will suffice
244+ push:
245+ - meta_scope: meta.line.ruby.slim
246+ - meta_content_scope: source.ruby.embedded.slim
247+ - match: (do\s*\n$)|(?<!\\|,|,\n|\\\n)$
248+ captures:
249+ 1: keyword.control.start-block.ruby
250+ pop: true
251+ - match: '#.*$'
252+ comment: Hack to let ruby comments work in this context properly
253+ scope: comment.line.number-sign.ruby
254+ - include: continuation
255+ - include: scope:source.ruby.rails
256+ string-double-quoted:
257+ - match: (")(?=.*")
258+ captures:
259+ 0: punctuation.definition.string.begin.html
260+ push:
261+ - meta_scope: string.quoted.double.html
262+ - meta_content_scope: meta.toc-list.id.html
263+ - match: '"'
264+ captures:
265+ 0: punctuation.definition.string.end.html
266+ pop: true
267+ - include: embedded-ruby
268+ - include: entities
269+ string-single-quoted:
270+ - match: (')(?=.*')
271+ captures:
272+ 0: punctuation.definition.string.begin.html
273+ push:
274+ - meta_scope: string.quoted.single.html
275+ - meta_content_scope: meta.toc-list.id.html
276+ - match: "'"
277+ captures:
278+ 0: punctuation.definition.string.end.html
279+ pop: true
280+ - include: embedded-ruby
281+ - include: entities
282+ tag-attribute:
283+ - match: '([\w.#_-]+)(=)(?!\s)(true|false|nil)?(\s*\(|\{)?'
284+ captures:
285+ 1: entity.other.attribute-name.event.slim
286+ 2: punctuation.separator.key-value.html
287+ 3: constant.language.slim
288+ push:
289+ - meta_scope: meta.attribute-with-value.slim
290+ - match: '\}|\)|$'
291+ captures:
292+ 1: entity.other.attribute-name.event.slim
293+ 2: punctuation.separator.key-value.html
294+ 3: constant.language.slim
295+ pop: true
296+ - include: tag-stuff
297+ - include: string-double-quoted
298+ - include: string-single-quoted
299+ tag-stuff:
300+ - include: tag-attribute
301+ - include: interpolated-ruby
302+ - include: delimited-ruby-a
303+ - include: delimited-ruby-b
304+ - include: delimited-ruby-c
305+ - include: rubyline
306+ - include: embedded-ruby
assets/syntaxes/02_Extra/Stracenew file+1

Submodule changed.

assets/syntaxes/02_Extra/Stylusnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Stylus.sublime-syntaxnew file+711
@@ -0,0 +1,711 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Stylus
5+file_extensions:
6+ - styl
7+ - stylus
8+scope: source.stylus
9+contexts:
10+ main:
11+ - include: comments
12+ - match: '^\s*(@(?:import|charset|css|font-face|(?:-webkit-)?keyframes)(?:\s+([\w-]+))?)\b'
13+ captures:
14+ 1: keyword.control.at-rule.other.stylus
15+ 2: variable.other.animation-name.stylus
16+ push:
17+ - match: '$|;|(?=\{)'
18+ pop: true
19+ - include: string-quoted
20+ - match: ^\s*(@media)\s*
21+ captures:
22+ 1: keyword.control.at-rule.media.stylus
23+ push:
24+ - match: '$|(?=\{)'
25+ pop: true
26+ - include: media-query
27+ - match: |-
28+ (?x)
29+ (?<=^|;|})
30+ \s*
31+ (?=
32+ [\[\]'".\w$-]+
33+ \s*
34+ ([?:]?=)
35+ (?![^\[]*\])
36+ )
37+ push:
38+ - match: $|;
39+ pop: true
40+ - include: expression
41+ - include: iteration
42+ - include: conditionals
43+ - include: return
44+ - match: |-
45+ (?x) # multi-line regex definition mode
46+
47+ ^(\s*) # starts at the beginning of line
48+ ([\w$-]+) # identifier (name)
49+ (\() # start of argument list
50+ (?=
51+ .*?
52+ \)\s*\{ # we see a curly brace afterwards
53+ ) # which means this is a function definition
54+ captures:
55+ 2: entity.name.function.stylus
56+ 3: punctuation.definition.parameters.start.stylus
57+ push:
58+ - meta_scope: meta.function-call.stylus
59+ - match: (\))
60+ captures:
61+ 1: punctuation.definition.parameters.end.stylus
62+ pop: true
63+ - include: expression
64+ - match: |-
65+ (?x) # multi-line regex definition mode
66+ (
67+
68+ (^|;) # starts at the beginning of line or at a ;
69+ \s*
70+ (\+?\s* # for block mixins
71+ [\w$-]+) # identifier (name)
72+ (\() # start of argument list
73+ (?=
74+ .*?
75+ \)\s*;?\s* # if there are only spaces and semicolons
76+ $|; # then this a
77+ )
78+ )
79+ captures:
80+ 3: entity.other.attribute-name.mixin.stylus
81+ 4: punctuation.definition.parameters.start.stylus
82+ push:
83+ - meta_scope: meta.function-call.stylus
84+ - match: (\))
85+ captures:
86+ 1: punctuation.definition.parameters.end.stylus
87+ pop: true
88+ - include: expression
89+ - match: |-
90+ (?x) # multi-line regex definition mode
91+ (^|(?<=\*/|\}))\s*
92+ (?=
93+ font(?!
94+ \s*:\s
95+ |
96+ -
97+ |
98+ .*?
99+ (?:
100+ \/|normal|bold|light(er?)|serif|sans|monospace|
101+ \b\d+(?:\b|px|r?em|%)|
102+ var\s*\(|
103+ ['"][^\]]*$
104+ )
105+ ) | # we need to distinguish between tag and property `cursor`
106+ cursor(?!
107+ \s*[:;]\s
108+ |
109+ -
110+ |
111+ .*?
112+ (?:
113+ (?:url\s*\()|
114+ (?:-moz-|-webkit-|-ms-)?
115+ (?:auto|default|none|context-menu|help|pointer|progress|
116+ wait|cell|crosshair|text|vertical-text|alias|copy|
117+ move|no-drop|not-allowed|e-resize|n-resize|ne-resize|
118+ nw-resize|s-resize|se-resize|sw-resize|w-resize|
119+ ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|
120+ row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing
121+ normal|bold|light(er?)|serif|sans|monospace)
122+ )
123+ ) | (
124+ (
125+ altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|
126+ animateMotion|animateTransform|circle|clipPath|color-profile|
127+ defs|desc|ellipse|feBlend|feColorMatrix|
128+ feComponentTransfer|feComposite|feConvolveMatrix|
129+ feDiffuseLighting|feDisplacementMap|feDistantLight|feFlood|
130+ feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|
131+ feMergeNode|feMorphology|feOffset|fePointLight|
132+ feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|
133+ font-face|font-face-format|font-face-name|font-face-src|
134+ font-face-uri|foreignObject|g|glyph|glyphRef|hkern|image|line|
135+ linearGradient|marker|mask|metadata|missing-glyph|mpath|path|
136+ pattern|polygon|polyline|radialGradient|rect|set|stop|svg|
137+ switch|symbol|text|textPath|tref|tspan|use|view|vkern|
138+ a|abbr|acronym|address|applet|area|article|aside|audio|b|base|
139+ basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|
140+ canvas|caption|center|cite|code|col|colgroup|data|
141+ datalist|dd|decorator|del|details|dfn|dir|div|dl|dt|element|
142+ em|embed|fieldset|figcaption|figure|footer|form|frame|
143+ frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|
144+ img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|
145+ main|map|mark|marquee|menu|menuitem|meta|meter|nav|nobr|
146+ noframes|noscript|object|ol|optgroup|option|output|p|param|
147+ plaintext|pre|progress|q|rp|rt|ruby|s|samp|script|section|
148+ select|shadow|small|source|spacer|span|strike|strong|style|
149+ sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|
150+ thead|time|title|tr|track|tt|u|ul|var|video|wbr|xmp)
151+
152+ \s*([\s,.#\[]|:[^\s]|(?=\{|$))
153+
154+ ) | (
155+ [:~>\[*\/] # symbols but they are valid for selector
156+
157+ ) | (
158+
159+ \+\s*[\w$-]+\b\s* # are an identifier starting with $
160+ (?!\() # and they can't have anything besides
161+
162+ ) | ( # for animtions
163+
164+ \d+(\.\d+)?%|(from|to)\b
165+
166+ ) | ( # Placeholder selectors
167+
168+ \$[\w$-]+\b\s* # are an identifier starting with $
169+ (?=$|\{) # and they can't have anything besides
170+
171+ ) | ( # CSS class
172+
173+ \.[a-zA-Z0-9_-]+
174+
175+ ) | ( # CSS id
176+
177+ \#[a-zA-Z0-9_-]+
178+
179+ ) | ( # Reference to parent
180+
181+ ([\w\d_-]+)? # matching any word right before &
182+ (&) # & itself, escaped because of plist
183+ ([\w\d_-]+)? # matching any word right after &
184+ )
185+ )
186+ push:
187+ - meta_scope: meta.selector.stylus
188+ - match: |-
189+
190+ |$|(?=\{\s*\}.*$)|(?=\{.*?[:;])|(?=\{)(?!.+\}.*$)
191+ pop: true
192+ - include: comma
193+ - match: \d+(\.\d+)?%|from|to
194+ scope: entity.other.animation-keyframe.stylus
195+ - include: selector-components
196+ - match: .
197+ scope: entity.other.attribute-name.stylus
198+ - match: |-
199+ (?x) # multi-line regex definition mode
200+ (?<=^|;|{)\s* # starts after beginning of line, '{' or ';''
201+ (?= # lookahead for
202+ (
203+ [a-zA-Z0-9_-] # then a letter
204+ | # or
205+ (\{(.*?)\}) # interpolation
206+ | # or
207+ (/\*.*?\*/) # comment
208+ )+
209+
210+ \s*[:\s]\s* # value is separated by colon or space
211+
212+ (?!(\s*\{)) # if there are only spaces afterwards
213+
214+ (?!
215+ [^}]*? # checking for an unclosed curly braces on this
216+ \{ # line because if one exists it means that
217+ [^}]* # this is a selector and not a property
218+ ($|\})
219+ )
220+ )
221+ push:
222+ - match: '(?=\}|;)|(?<!,)\s*\n'
223+ pop: true
224+ - include: comments
225+ - include: interpolation
226+ - match: '(?<!^|;|{)\s*(?:(:)|\s)'
227+ captures:
228+ 1: punctuation.separator.key-value.stylus
229+ push:
230+ - match: '(;)|(?=\})|(?=(?<!\,)\s*\n)'
231+ captures:
232+ 1: punctuation.terminator.rule.stylus
233+ pop: true
234+ - include: comments
235+ - include: expression
236+ - match: "-(moz|o|ms|webkit|khtml)-"
237+ scope: support.type.vendor-prefix.stylus
238+ - match: .
239+ scope: meta.property-name.stylus support.type.property-name.stylus
240+ - match: '@extends?\s'
241+ captures:
242+ 0: keyword.language.stylus
243+ push:
244+ - match: (?=$|;)
245+ pop: true
246+ - include: selector-components
247+ - include: string-quoted
248+ - include: escape
249+ - include: language-constants
250+ - include: language-operators
251+ - include: language-keywords
252+ - include: property-reference
253+ - include: function-call
254+ - match: '\{'
255+ scope: punctuation.section.start.stylus
256+ - match: '\}'
257+ scope: punctuation.section.end.stylus
258+ attribute-selector:
259+ - match: '\[(?=[^\]]*\])'
260+ captures:
261+ 0: punctuation.definition.entity.start.stylus
262+ push:
263+ - meta_scope: meta.attribute-selector.stylus
264+ - match: '\]'
265+ captures:
266+ 0: punctuation.definition.entity.end.stylus
267+ pop: true
268+ - match: '(?<=\[)|(?<=\{)'
269+ push:
270+ - match: '(?=[|~=\]\s])'
271+ pop: true
272+ - include: interpolation
273+ - match: .
274+ captures:
275+ 0: entity.other.attribute-name.stylus
276+ - include: interpolation
277+ - match: "([|~]?=)"
278+ captures:
279+ 1: keyword.operator.stylus
280+ - include: string-quoted
281+ - match: .
282+ captures:
283+ 0: string.unquoted.stylus
284+ color-values:
285+ - match: \b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\b
286+ scope: constant.color.w3c-standard-color-name.stylus
287+ - match: (hsla?|rgba?)\s*(\()
288+ captures:
289+ 1: keyword.language.function.misc.stylus
290+ 2: punctuation.definition.parameters.start.stylus
291+ push:
292+ - match: \)
293+ captures:
294+ 0: punctuation.definition.parameters.end.stylus
295+ pop: true
296+ - match: |-
297+ (?x) # multi-line regex definition mode
298+ \b
299+ (?:0*((?:1?[0-9]{1,2})|(?:2(?:[0-4][0-9]|5[0-5])))\s*(,)\s*)
300+ (?:0*((?:1?[0-9]{1,2})|(?:2(?:[0-4][0-9]|5[0-5])))\s*(,)\s*)
301+ (?:0*((?:1?[0-9]{1,2})|(?:2(?:[0-4][0-9]|5[0-5])))\b)
302+ captures:
303+ 1: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.red.stylus
304+ 2: punctuation.delimiter.comma.stylus
305+ 3: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.green.stylus
306+ 4: punctuation.delimiter.comma.stylus
307+ 5: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.blue.stylus
308+ - match: |-
309+ (?x) # multi-line regex definition mode
310+ \b
311+ ((?:[0-9]{1,2}|100)%)(,) # red
312+ \s*
313+ ((?:[0-9]{1,2}|100)%)(,) # green
314+ \s*
315+ ((?:[0-9]{1,2}|100)%) # blue
316+ captures:
317+ 1: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.red.stylus
318+ 2: punctuation.delimiter.comma.stylus
319+ 3: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.green.stylus
320+ 4: punctuation.delimiter.comma.stylus
321+ 5: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.blue.stylus
322+ - match: |-
323+ (?x) # multi-line regex definition mode
324+ (?:\s*(,)\s*((0?\.[0-9]+)|[0-1]))?
325+ captures:
326+ 1: punctuation.delimiter.comma.stylus
327+ 2: constant.other.color.rgb-value.stylus constant.other.color.rgb-value.alpha.stylus
328+ - include: numeric-values
329+ - include: numeric-values
330+ comma:
331+ - match: \s*,\s*
332+ scope: punctuation.delimiter.comma.stylus
333+ comments:
334+ - include: single-line-comment
335+ - match: \/\*
336+ captures:
337+ 0: punctuation.definition.comment.stylus
338+ push:
339+ - meta_scope: comment.block.stylus
340+ - match: \*\/
341+ captures:
342+ 0: punctuation.definition.comment.stylus
343+ pop: true
344+ conditionals:
345+ - match: '(^\s*|\s+)(if|unless|else)(?=[\s({]|$)\s*'
346+ captures:
347+ 2: keyword.control.stylus
348+ push:
349+ - match: '(?=$|\{)'
350+ pop: true
351+ - include: expression
352+ escape:
353+ - match: \\.
354+ scope: constant.character.escape.stylus
355+ expression:
356+ - include: single-line-comment
357+ - include: comma
358+ - include: iteration
359+ - include: conditionals
360+ - include: language-operators
361+ - include: language-keywords
362+ - include: hash-definition
363+ - include: color-values
364+ - include: url
365+ - include: function-call
366+ - include: string-quoted
367+ - include: escape
368+ - include: hash-access
369+ - include: language-constants
370+ - include: language-property-value-constants
371+ - include: property-reference
372+ - include: variable
373+ function-call:
374+ - match: '([\w$-]+)(\()'
375+ captures:
376+ 1: entity.function-name.stylus
377+ 2: punctuation.definition.parameters.start.stylus
378+ push:
379+ - meta_scope: meta.function-call.stylus
380+ - match: (\))
381+ captures:
382+ 1: punctuation.definition.parameters.end.stylus
383+ pop: true
384+ - include: expression
385+ hash-access:
386+ - match: '(?=[\w$-]+(?:\.|\[[^\]=]*\]))'
387+ push:
388+ - meta_scope: meta.hash-access.stylus
389+ - match: '(?=[^''''""\[\]\w.$-]|\s|$)'
390+ pop: true
391+ - match: \.
392+ scope: punctuation.delimiter.hash.stylus
393+ - match: '\['
394+ scope: punctuation.definition.entity.start.stylus
395+ - match: '\]'
396+ scope: punctuation.definition.entity.end.stylus
397+ - include: string-quoted
398+ - include: variable
399+ hash-definition:
400+ - match: '\{'
401+ captures:
402+ 0: punctuation.section.embedded.start.stylus
403+ push:
404+ - meta_scope: meta.hash.stylus
405+ - match: '\}'
406+ captures:
407+ 0: punctuation.section.embedded.end.stylus
408+ pop: true
409+ - include: single-line-comment
410+ - match: |-
411+ (?x)
412+ (?:
413+ ([\w$-]+)
414+ |
415+ ('[^']*')
416+ |
417+ ("[^"]*")
418+ )
419+ \s*
420+ (:)
421+ \s*
422+ captures:
423+ 1: support.type.property-name.stylus
424+ 2: string.quoted.single.stylus
425+ 3: string.quoted.double.stylus
426+ 4: punctuation.separator.key-value.stylus
427+ push:
428+ - match: '(;)|(?=\}|$)'
429+ captures:
430+ 1: punctuation.terminator.statement.stylus
431+ pop: true
432+ - include: expression
433+ interpolation:
434+ - match: '\{'
435+ captures:
436+ 0: punctuation.section.embedded.start.stylus
437+ push:
438+ - meta_scope: stylus.embedded.source
439+ - match: '\}'
440+ captures:
441+ 0: punctuation.section.embedded.end.stylus
442+ pop: true
443+ - include: expression
444+ iteration:
445+ - match: (^\s*|\s+)(for)\s+(?=.*?\s+in\s+)
446+ captures:
447+ 2: keyword.control.stylus
448+ push:
449+ - match: '$|\{'
450+ pop: true
451+ - include: expression
452+ language-constants:
453+ - match: \b(true|false|null)\b
454+ scope: constant.language.stylus
455+ language-keywords:
456+ - match: (\b|\s)(return|else)\b
457+ scope: keyword.control.stylus
458+ - match: (\b|\s)(!important|in|is defined|is a)\b
459+ scope: keyword.other.stylus
460+ - match: \barguments\b
461+ scope: variable.language.stylus
462+ language-operators:
463+ - match: ((?:\?|:|!|~|\+|-|(?:\*)?\*|\/|%|(\.)?\.\.|<|>|(?:=|:|\?|\+|-|\*|\/|%|<|>)?=|!=)|\b(?:in|is(?:nt)?|(?<!:)not)\b)
464+ scope: keyword.operator.stylus
465+ language-property-value-constants:
466+ - match: \b(absolute|all(-scroll)?|always|armenian|auto|avoid|baseline|below|bidi-override|block|bold(er)?|(border|content|padding)-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|cursive|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fantasy|fixed|geometricPrecision|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|monospace|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|optimize(Legibility|Quality|Speed)|outset|outside|overline|pointer|pre(-(wrap|line))?|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|(sans-)?serif|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|sub|super|sw-resize|table(-(row|cell|footer-group|header-group))?|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical(-(ideographic|text))?|visible(Painted|Fill|Stroke)?|w-resize|wait|whitespace|zero|smaller|larger|((xx?-)?(small(er)?|large(r)?))|painted|fill|stroke)\b
467+ scope: constant.property-value.stylus
468+ media-query:
469+ - match: '\s*(?![{;]|$)'
470+ push:
471+ - meta_scope: meta.at-rule.media.stylus
472+ - match: '\s*(?=[{;]|$)'
473+ pop: true
474+ - match: '(?i)\s*(only|not)?\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?(?![\w\d$-]+)'
475+ captures:
476+ 1: keyword.operator.logic.media.stylus
477+ 2: support.constant.media.stylus
478+ push:
479+ - match: '\s*(?:(,)|(?=[{;]|$))'
480+ pop: true
481+ - include: media-query-list
482+ - include: variable
483+ media-query-list:
484+ - match: \s*(and)?\s*(\()\s*
485+ captures:
486+ 1: keyword.operator.logic.media.stylus
487+ 2: punctuation.definition.parameters.start.stylus
488+ push:
489+ - match: \)
490+ captures:
491+ 0: punctuation.definition.parameters.end.stylus
492+ pop: true
493+ - include: media-query-properties
494+ - include: numeric-values
495+ media-query-properties:
496+ - match: \s*:\s*
497+ captures:
498+ 0: punctuation.separator.key-value.stylus
499+ - match: |-
500+ (?x)
501+ (
502+ ((min|max)-)?
503+ (
504+ ((device-)?(height|width|aspect-ratio))|
505+ (color(-index)?)|monochrome|resolution
506+ )
507+ )|grid|scan|orientation
508+ captures:
509+ 0: support.type.property-name.media.stylus
510+ - match: \b(portrait|landscape|progressive|interlace)\b
511+ captures:
512+ 1: support.constant.property-value.stylus
513+ numeric-values:
514+ - match: |-
515+ (?x) # multi-line regex definition mode
516+ (\#)(?:
517+ ([0-9a-fA-F])
518+ ([0-9a-fA-F])
519+ ([0-9a-fA-F])
520+ ([0-9a-fA-F])?
521+ | ([0-9a-fA-F]{2})
522+ ([0-9a-fA-F]{2})
523+ ([0-9a-fA-F]{2})
524+ ([0-9a-fA-F]{2})?
525+ )\b
526+ scope: constant.other.color.rgb-value.stylus
527+ captures:
528+ 1: punctuation.definition.constant.stylus
529+ 2: constant.other.color.rgb-value.red.stylus
530+ 3: constant.other.color.rgb-value.green.stylus
531+ 4: constant.other.color.rgb-value.blue.stylus
532+ 5: constant.other.color.rgb-value.alpha.stylus
533+ 6: constant.other.color.rgb-value.red.stylus
534+ 7: constant.other.color.rgb-value.green.stylus
535+ 8: constant.other.color.rgb-value.blue.stylus
536+ 9: constant.other.color.rgb-value.alpha.stylus
537+ - match: |-
538+ (?x) # multi-line regex definition mode
539+ (?:-|\+)? # negative / positive
540+ (?:
541+ (?:
542+ [0-9]+ # integer part
543+ (?:\.[0-9]+)? # fraction
544+ ) |
545+ (?:\.[0-9]+) # fraction without leading zero
546+ )
547+ ((?: # units
548+ px|pt|ch|cm|mm|in|
549+ r?em|ex|pc|vw|vh|vmin|vmax|deg|
550+ g?rad|turn|dpi|dpcm|dppx|m?s|k?Hz
551+ )\b|%)?
552+ scope: constant.numeric.stylus
553+ captures:
554+ 1: keyword.other.unit.stylus
555+ property-reference:
556+ - match: "@[a-z-]+"
557+ scope: variable.other.property.stylus
558+ pseudo:
559+ - match: (:)(active|checked|default|disabled|empty|enabled|first-child|first-of-type|first|fullscreen|focus|hover|indeterminate|in-range|invalid|last-child|last-of-type|left|link|only-child|only-of-type|optional|out-of-range|read-only|read-write|required|right|root|scope|target|valid|visited)\b
560+ scope: entity.other.attribute-name.pseudo-class.stylus
561+ captures:
562+ 1: puncutation.definition.entity.stylus
563+ - match: (:?:)(before|after)\b
564+ scope: entity.other.attribute-name.pseudo-element.stylus
565+ captures:
566+ 1: puncutation.definition.entity.stylus
567+ - match: (::)(first-letter|first-number|selection)\b
568+ scope: entity.other.attribute-name.pseudo-element.stylus
569+ captures:
570+ 1: puncutation.definition.entity.stylus
571+ - match: ((:)dir)\s*(?:(\()(ltr|rtl)?(\)))?
572+ captures:
573+ 1: entity.other.attribute-name.pseudo-element.stylus
574+ 2: puncutation.definition.entity.stylus
575+ 3: puncutation.definition.parameters.start.stylus
576+ 4: constant.language.stylus
577+ 5: puncutation.definition.parameters.end.stylus
578+ - match: ((:)lang)\s*(?:(\()(\w+(-\w+)?)?(\)))?
579+ captures:
580+ 1: entity.other.attribute-name.pseudo-element.stylus
581+ 2: puncutation.definition.entity.stylus
582+ 3: puncutation.definition.parameters.start.stylus
583+ 4: constant.language.stylus
584+ 5: puncutation.definition.parameters.end.stylus
585+ - include: pseudo-nth
586+ - include: pseudo-not
587+ pseudo-not:
588+ - match: ((:)not)\s*(\()
589+ captures:
590+ 1: entity.other.attribute-name.pseudo-element.stylus
591+ 2: puncutation.definition.entity.stylus
592+ 3: puncutation.definition.parameters.start.stylus
593+ push:
594+ - match: \)
595+ captures:
596+ 0: puncutation.definition.parameters.end.stylus
597+ pop: true
598+ - include: selector-components
599+ pseudo-nth:
600+ - match: ((:)(?:nth-child|nth-last-child|nth-of-type|nth-last-of-type|nth-match|nth-last-match|nth-column|nth-last-column))\s*(\()
601+ captures:
602+ 1: entity.other.attribute-name.pseudo-class.stylus
603+ 2: puncutation.definition.entity.stylus
604+ 3: puncutation.definition.parameters.start.stylus
605+ push:
606+ - match: \)
607+ captures:
608+ 0: puncutation.definition.parameters.end.stylus
609+ pop: true
610+ - include: language-operators
611+ - include: interpolation
612+ - match: \b(odd|even)\b
613+ scope: constant.language.stylus
614+ - match: \b(\d+)?n\b
615+ scope: variable.language.stylus
616+ captures:
617+ 1: constant.numeric.stylus
618+ - match: \d+
619+ scope: constant.numeric.stylus
620+ return:
621+ - match: ^\s*(return)
622+ captures:
623+ 1: keyword.control.stylus
624+ push:
625+ - match: (;)|(?=$)
626+ captures:
627+ 1: punctuation.terminator.statement.stylus
628+ pop: true
629+ - include: expression
630+ selector-components:
631+ - include: comments
632+ - include: interpolation
633+ - include: attribute-selector
634+ - include: pseudo
635+ - match: '\$[\w$-]+\b'
636+ scope: entity.other.placeholder.stylus
637+ - match: "[:~>]"
638+ scope: keyword.operator.selector.stylus
639+ - match: |-
640+ (?x) # multi-line regex definition mode
641+ \b(
642+ altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|
643+ animateMotion|animateTransform|circle|clipPath|color-profile|
644+ defs|desc|ellipse|feBlend|feColorMatrix|
645+ feComponentTransfer|feComposite|feConvolveMatrix|
646+ feDiffuseLighting|feDisplacementMap|feDistantLight|feFlood|
647+ feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|
648+ feMergeNode|feMorphology|feOffset|fePointLight|
649+ feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|
650+ font-face|font-face-format|font-face-name|font-face-src|
651+ font-face-uri|foreignObject|g|glyph|glyphRef|hkern|image|line|
652+ linearGradient|marker|mask|metadata|missing-glyph|mpath|path|
653+ pattern|polygon|polyline|radialGradient|rect|set|stop|svg|
654+ switch|symbol|text|textPath|tref|tspan|use|view|vkern|
655+ a|abbr|acronym|address|applet|area|article|aside|audio|b|base|
656+ basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|
657+ canvas|caption|center|cite|code|col|colgroup|content|data|
658+ datalist|dd|decorator|del|details|dfn|dir|div|dl|dt|element|
659+ em|embed|fieldset|figcaption|figure|font|footer|form|frame|
660+ frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|
661+ img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|
662+ main|map|mark|marquee|menu|menuitem|meta|meter|nav|nobr|
663+ noframes|noscript|object|ol|optgroup|option|output|p|param|
664+ plaintext|pre|progress|q|rp|rt|ruby|s|samp|script|section|
665+ select|shadow|small|source|spacer|span|strike|strong|style|
666+ sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|
667+ thead|time|title|tr|track|tt|u|ul|var|video|wbr|xmp
668+ )\b
669+ scope: entity.name.tag.stylus
670+ - match: '\.[a-zA-Z0-9_-]+'
671+ scope: entity.other.attribute-name.class.stylus
672+ - match: "#[a-zA-Z0-9_-]+"
673+ scope: entity.other.attribute-name.id.stylus
674+ - match: |-
675+ (?x) # multi-line regex definition mode
676+ ([\w\d_-]+)? # matching any word right before &
677+ (&) # & itself, escaped because of plist
678+ ([\w\d_-]+)? # matching any word right after &
679+ captures:
680+ 1: entity.other.attribute-name.stylus
681+ 2: variable.language.stylus
682+ 3: entity.other.attribute-name.stylus
683+ single-line-comment:
684+ - match: (\/\/).*$
685+ scope: comment.line.stylus
686+ captures:
687+ 1: punctuation.definition.comment.stylus
688+ string-quoted:
689+ - match: "'[^']*'"
690+ scope: string.quoted.single.stylus
691+ - match: '"[^"]*"'
692+ scope: string.quoted.double.stylus
693+ url:
694+ - match: (url)\s*(\()
695+ captures:
696+ 1: entity.function-name.stylus
697+ 2: punctuation.definition.parameters.start.stylus
698+ push:
699+ - meta_scope: meta.function-call.stylus
700+ - match: (\))
701+ captures:
702+ 1: punctuation.definition.parameters.end.stylus
703+ pop: true
704+ - include: string-quoted
705+ - include: language-constants
706+ - include: language-property-value-constants
707+ - include: property-reference
708+ - include: variable
709+ variable:
710+ - match: '([\w$-]+\b)'
711+ scope: variable.other.stylus
assets/syntaxes/02_Extra/SublimeEthereumnew file+1

Submodule changed.

assets/syntaxes/02_Extra/SublimeJQnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Sveltenew file+1

Submodule changed.

assets/syntaxes/Swift → assets/syntaxes/02_Extra/Swiftrenamed

The content is the same.

assets/syntaxes/Swift.sublime-syntax → assets/syntaxes/02_Extra/Swift.sublime-syntaxrenamed

The content is the same.

assets/syntaxes/02_Extra/SystemVerilognew file+1

Submodule changed.

assets/syntaxes/02_Extra/TOMLnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Terraformnew file+1

Submodule changed.

assets/syntaxes/02_Extra/TypeScriptnew file+1

Submodule changed.

assets/syntaxes/TypeScript.sublime-syntax → assets/syntaxes/02_Extra/TypeScript.sublime-syntaxrenamed+892−493
@@ -9,10 +9,7 @@ contexts:
9 main:
9 main:
10 - include: directives
10 - include: directives
11 - include: statements
11 - include: statements
12− - match: \A(#!).*(?=$)
12+ - include: shebang
13− scope: comment.line.shebang.ts
14− captures:
15− 1: punctuation.definition.comment.ts
16 comment:
13 comment:
17 - match: /\*\*(?!/)
14 - match: /\*\*(?!/)
18 captures:
15 captures:
@@ -44,10 +41,10 @@ contexts:
44 5: punctuation.decorator.internaldeclaration.ts
41 5: punctuation.decorator.internaldeclaration.ts
45 push:
42 push:
46 - meta_content_scope: comment.line.double-slash.ts
43 - meta_content_scope: comment.line.double-slash.ts
47− - match: (?=^)
44+ - match: (?=$)
48 pop: true
45 pop: true
49 access-modifier:
46 access-modifier:
50− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
47+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
51 scope: storage.modifier.ts
48 scope: storage.modifier.ts
52 after-operator-block-as-object-literal:
49 after-operator-block-as-object-literal:
53 - match: '(?<!\+\+|--)(?<=[:=(,\[?+!>]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)'
50 - match: '(?<!\+\+|--)(?<=[:=(,\[?+!>]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)'
@@ -109,21 +106,19 @@ contexts:
109 (?=
106 (?=
110 # sure shot arrow functions even if => is on new line
107 # sure shot arrow functions even if => is on new line
111 (
108 (
112− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
109+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
113− [(]\s*
110+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
114 (
111 (
115 ([)]\s*:) | # ():
112 ([)]\s*:) | # ():
116 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
113 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
117 )
114 )
118 ) |
115 ) |
119− (
116+
120− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
121− ) |
122 # arrow function possible to detect only with => on same line
117 # arrow function possible to detect only with => on same line
123 (
118 (
124− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
119+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
125− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
120+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
126− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
121+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
127 \s*=> # arrow operator
122 \s*=> # arrow operator
128 )
123 )
129 )
124 )
@@ -138,13 +133,15 @@ contexts:
138 - include: type-parameters
133 - include: type-parameters
139 - include: function-parameters
134 - include: function-parameters
140 - include: arrow-return-type
135 - include: arrow-return-type
136+ - include: possibly-arrow-return-type
141 - match: "=>"
137 - match: "=>"
142 captures:
138 captures:
143 0: storage.type.function.arrow.ts
139 0: storage.type.function.arrow.ts
144 push:
140 push:
145 - meta_scope: meta.arrow.ts
141 - meta_scope: meta.arrow.ts
146− - match: '(?<=\}|\S)(?<!=>)|((?!\{)(?=\S))'
142+ - match: '((?<=\}|\S)(?<!=>)|((?!\{)(?=\S)))(?!\/[\/\*])'
147 pop: true
143 pop: true
144+ - include: single-line-comment-consuming-line-ending
148 - include: decl-block
145 - include: decl-block
149 - include: expression
146 - include: expression
150 arrow-return-type:
147 arrow-return-type:
@@ -170,6 +167,8 @@ contexts:
170 binding-element:
167 binding-element:
171 - include: comment
168 - include: comment
172 - include: string
169 - include: string
170+ - include: numeric-literal
171+ - include: regex
173 - include: object-binding-pattern
172 - include: object-binding-pattern
174 - include: array-binding-pattern
173 - include: array-binding-pattern
175 - include: destructuring-variable-rest
174 - include: destructuring-variable-rest
@@ -177,6 +176,8 @@ contexts:
177 binding-element-const:
176 binding-element-const:
178 - include: comment
177 - include: comment
179 - include: string
178 - include: string
179+ - include: numeric-literal
180+ - include: regex
180 - include: object-binding-pattern-const
181 - include: object-binding-pattern-const
181 - include: array-binding-pattern-const
182 - include: array-binding-pattern-const
182 - include: destructuring-variable-rest-const
183 - include: destructuring-variable-rest-const
@@ -198,12 +199,18 @@ contexts:
198 pop: true
199 pop: true
199 - include: brackets
200 - include: brackets
200 cast:
201 cast:
202+ - match: \s*(<)\s*(const)\s*(>)
203+ scope: cast.expr.ts
204+ captures:
205+ 1: meta.brace.angle.ts
206+ 2: storage.modifier.ts
207+ 3: meta.brace.angle.ts
201 - match: '(?:(?<!\+\+|--)(?<=^return|[^\._$[:alnum:]]return|^throw|[^\._$[:alnum:]]throw|^yield|[^\._$[:alnum:]]yield|^await|[^\._$[:alnum:]]await|^default|[^\._$[:alnum:]]default|[=(,:>*?\&\|\^]|[^_$[:alnum:]](?:\+\+|\-\-)|[^\+]\+|[^\-]\-))\s*(<)(?!<?\=)(?!\s*$)'
208 - match: '(?:(?<!\+\+|--)(?<=^return|[^\._$[:alnum:]]return|^throw|[^\._$[:alnum:]]throw|^yield|[^\._$[:alnum:]]yield|^await|[^\._$[:alnum:]]await|^default|[^\._$[:alnum:]]default|[=(,:>*?\&\|\^]|[^_$[:alnum:]](?:\+\+|\-\-)|[^\+]\+|[^\-]\-))\s*(<)(?!<?\=)(?!\s*$)'
202 captures:
209 captures:
203 1: meta.brace.angle.ts
210 1: meta.brace.angle.ts
204 push:
211 push:
205 - meta_scope: cast.expr.ts
212 - meta_scope: cast.expr.ts
206− - match: (\>)\s*
213+ - match: (\>)
207 captures:
214 captures:
208 1: meta.brace.angle.ts
215 1: meta.brace.angle.ts
209 pop: true
216 pop: true
@@ -213,17 +220,18 @@ contexts:
213 1: meta.brace.angle.ts
220 1: meta.brace.angle.ts
214 push:
221 push:
215 - meta_scope: cast.expr.ts
222 - meta_scope: cast.expr.ts
216− - match: (\>)\s*
223+ - match: (\>)
217 captures:
224 captures:
218 1: meta.brace.angle.ts
225 1: meta.brace.angle.ts
219 pop: true
226 pop: true
220 - include: type
227 - include: type
221 class-declaration:
228 class-declaration:
222− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])'
229+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])'
223 captures:
230 captures:
224 1: keyword.control.export.ts
231 1: keyword.control.export.ts
225 2: storage.modifier.ts
232 2: storage.modifier.ts
233+ 3: storage.modifier.ts
226− 3: storage.type.class.ts
234+ 4: storage.type.class.ts
227 push:
235 push:
228 - meta_scope: meta.class.ts
236 - meta_scope: meta.class.ts
229 - match: '(?<=\})'
237 - match: '(?<=\})'
@@ -238,9 +246,10 @@ contexts:
238 - include: type-parameters
246 - include: type-parameters
239 - include: class-or-interface-body
247 - include: class-or-interface-body
240 class-expression:
248 class-expression:
241− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(class)\b(?=\s+|[<{]|\/[\/*])'
249+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[<{]|\/[\/*])'
242 captures:
250 captures:
251+ 1: storage.modifier.ts
243− 1: storage.type.class.ts
252+ 2: storage.type.class.ts
244 push:
253 push:
245 - meta_scope: meta.class.ts
254 - meta_scope: meta.class.ts
246 - match: '(?<=\})'
255 - match: '(?<=\})'
@@ -257,6 +266,11 @@ contexts:
257 pop: true
266 pop: true
258 - include: comment
267 - include: comment
259 - include: decorator
268 - include: decorator
269+ - match: (?<=:)\s*
270+ push:
271+ - match: '(?=\s|[;),}\]:\-\+]|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
272+ pop: true
273+ - include: expression
260 - include: method-declaration
274 - include: method-declaration
261 - include: indexer-declaration
275 - include: indexer-declaration
262 - include: field-declaration
276 - include: field-declaration
@@ -303,9 +317,15 @@ contexts:
303 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
317 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
304 scope: keyword.control.loop.ts
318 scope: keyword.control.loop.ts
305 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
319 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
320+ captures:
306− scope: keyword.control.flow.ts
321+ 0: keyword.control.flow.ts
322+ push:
323+ - match: '(?=[;}]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
324+ pop: true
325+ - include: expression
307 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
326 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
308 scope: keyword.control.switch.ts
327 scope: keyword.control.switch.ts
328+ - include: if-statement
309 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
329 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
310 scope: keyword.control.conditional.ts
330 scope: keyword.control.conditional.ts
311 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
331 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
@@ -314,8 +334,6 @@ contexts:
314 scope: keyword.control.ts
334 scope: keyword.control.ts
315 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
335 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
316 scope: keyword.other.debugger.ts
336 scope: keyword.other.debugger.ts
317− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(declare)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
318− scope: storage.modifier.ts
319 decl-block:
337 decl-block:
320 - match: '\{'
338 - match: '\{'
321 captures:
339 captures:
@@ -339,6 +357,8 @@ contexts:
339 - include: import-equals-declaration
357 - include: import-equals-declaration
340 - include: import-declaration
358 - include: import-declaration
341 - include: export-declaration
359 - include: export-declaration
360+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(declare|export)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
361+ scope: storage.modifier.ts
342 decorator:
362 decorator:
343 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))\@'
363 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))\@'
344 captures:
364 captures:
@@ -352,7 +372,7 @@ contexts:
352 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
372 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
353 push:
373 push:
354 - meta_scope: meta.object-binding-pattern-variable.ts
374 - meta_scope: meta.object-binding-pattern-variable.ts
355− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
375+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
356 pop: true
376 pop: true
357 - include: object-binding-pattern-const
377 - include: object-binding-pattern-const
358 - include: type-annotation
378 - include: type-annotation
@@ -360,15 +380,16 @@ contexts:
360 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
380 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
361 push:
381 push:
362 - meta_scope: meta.array-binding-pattern-variable.ts
382 - meta_scope: meta.array-binding-pattern-variable.ts
363− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
383+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
364 pop: true
384 pop: true
365 - include: array-binding-pattern-const
385 - include: array-binding-pattern-const
366 - include: type-annotation
386 - include: type-annotation
367 - include: comment
387 - include: comment
368 destructuring-parameter:
388 destructuring-parameter:
369− - match: '(?<!=|:)\s*(\{)'
389+ - match: '(?<!=|:)\s*(?:(\.\.\.)\s*)?(\{)'
370 captures:
390 captures:
391+ 1: keyword.operator.rest.ts
371− 1: punctuation.definition.binding-pattern.object.ts
392+ 2: punctuation.definition.binding-pattern.object.ts
372 push:
393 push:
373 - meta_scope: meta.parameter.object-binding-pattern.ts
394 - meta_scope: meta.parameter.object-binding-pattern.ts
374 - match: '\}'
395 - match: '\}'
@@ -376,9 +397,10 @@ contexts:
376 0: punctuation.definition.binding-pattern.object.ts
397 0: punctuation.definition.binding-pattern.object.ts
377 pop: true
398 pop: true
378 - include: parameter-object-binding-element
399 - include: parameter-object-binding-element
379− - match: '(?<!=|:)\s*(\[)'
400+ - match: '(?<!=|:)\s*(?:(\.\.\.)\s*)?(\[)'
380 captures:
401 captures:
402+ 1: keyword.operator.rest.ts
381− 1: punctuation.definition.binding-pattern.array.ts
403+ 2: punctuation.definition.binding-pattern.array.ts
382 push:
404 push:
383 - meta_scope: meta.paramter.array-binding-pattern.ts
405 - meta_scope: meta.paramter.array-binding-pattern.ts
384 - match: '\]'
406 - match: '\]'
@@ -396,7 +418,7 @@ contexts:
396 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
418 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
397 push:
419 push:
398 - meta_scope: meta.object-binding-pattern-variable.ts
420 - meta_scope: meta.object-binding-pattern-variable.ts
399− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
421+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
400 pop: true
422 pop: true
401 - include: object-binding-pattern
423 - include: object-binding-pattern
402 - include: type-annotation
424 - include: type-annotation
@@ -404,7 +426,7 @@ contexts:
404 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
426 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
405 push:
427 push:
406 - meta_scope: meta.array-binding-pattern-variable.ts
428 - meta_scope: meta.array-binding-pattern-variable.ts
407− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
429+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
408 pop: true
430 pop: true
409 - include: array-binding-pattern
431 - include: array-binding-pattern
410 - include: type-annotation
432 - include: type-annotation
@@ -420,12 +442,12 @@ contexts:
420 1: keyword.operator.rest.ts
442 1: keyword.operator.rest.ts
421 2: meta.definition.variable.ts variable.other.constant.ts
443 2: meta.definition.variable.ts variable.other.constant.ts
422 directives:
444 directives:
423− - match: '^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name)\s*=\s*((\''([^\''\\]|\\\''|\\)*\'')|(\"([^\"\\]|\\\"|\\)*\")))+\s*/>\s*$)'
445+ - match: '^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name)\s*=\s*((\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$)'
424 captures:
446 captures:
425 1: punctuation.definition.comment.ts
447 1: punctuation.definition.comment.ts
426 push:
448 push:
427 - meta_scope: comment.line.triple-slash.directive.ts
449 - meta_scope: comment.line.triple-slash.directive.ts
428− - match: (?=^)
450+ - match: (?=$)
429 pop: true
451 pop: true
430 - match: (<)(reference|amd-dependency|amd-module)
452 - match: (<)(reference|amd-dependency|amd-module)
431 captures:
453 captures:
@@ -687,13 +709,18 @@ contexts:
687 captures:
709 captures:
688 1: punctuation.definition.block.tag.jsdoc
710 1: punctuation.definition.block.tag.jsdoc
689 - include: inline-tags
711 - include: inline-tags
712+ - match: '((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\s+)'
713+ captures:
714+ 1: storage.type.class.jsdoc
715+ 2: punctuation.definition.block.tag.jsdoc
690 enum-declaration:
716 enum-declaration:
691− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)'
717+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)'
692 captures:
718 captures:
693 1: keyword.control.export.ts
719 1: keyword.control.export.ts
694 2: storage.modifier.ts
720 2: storage.modifier.ts
695− 3: storage.type.enum.ts
721+ 3: storage.modifier.ts
722+ 4: storage.type.enum.ts
696− 4: entity.name.type.enum.ts
723+ 5: entity.name.type.enum.ts
697 push:
724 push:
698 - meta_scope: meta.enum.declaration.ts
725 - meta_scope: meta.enum.declaration.ts
699 - match: '(?<=\})'
726 - match: '(?<=\})'
@@ -716,7 +743,7 @@ contexts:
716 pop: true
743 pop: true
717 - include: comment
744 - include: comment
718 - include: variable-initializer
745 - include: variable-initializer
719− - match: '(?=((\''([^\''\\]|\\\''|\\)*\'')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\])))'
746+ - match: '(?=((\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\])))'
720 push:
747 push:
721 - match: '(?=,|\}|$)'
748 - match: '(?=,|\}|$)'
722 pop: true
749 pop: true
@@ -732,22 +759,25 @@ contexts:
732 2: keyword.control.as.ts
759 2: keyword.control.as.ts
733 3: storage.type.namespace.ts
760 3: storage.type.namespace.ts
734 4: entity.name.type.module.ts
761 4: entity.name.type.module.ts
735− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))'
762+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:\s+(type))?(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))'
736 captures:
763 captures:
737 1: keyword.control.export.ts
764 1: keyword.control.export.ts
765+ 2: keyword.control.type.ts
738− 2: keyword.operator.assignment.ts
766+ 3: keyword.operator.assignment.ts
739− 3: keyword.control.default.ts
767+ 4: keyword.control.default.ts
740 push:
768 push:
741 - meta_scope: meta.export.default.ts
769 - meta_scope: meta.export.default.ts
742− - match: (?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
770+ - match: (?=$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))
743 pop: true
771 pop: true
772+ - include: interface-declaration
744 - include: expression
773 - include: expression
745− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?!\s*:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
774+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:\s+(type))?\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))'
746 captures:
775 captures:
747− 0: keyword.control.export.ts
776+ 1: keyword.control.export.ts
777+ 2: keyword.control.type.ts
748 push:
778 push:
749 - meta_scope: meta.export.ts
779 - meta_scope: meta.export.ts
750− - match: (?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
780+ - match: (?=$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))
751 pop: true
781 pop: true
752 - include: import-export-declaration
782 - include: import-export-declaration
753 expression:
783 expression:
@@ -756,7 +786,101 @@ contexts:
756 - include: expressionPunctuations
786 - include: expressionPunctuations
757 expression-inside-possibly-arrow-parens:
787 expression-inside-possibly-arrow-parens:
758 - include: expressionWithoutIdentifiers
788 - include: expressionWithoutIdentifiers
759− - include: function-parameters-body
789+ - include: comment
790+ - include: string
791+ - include: decorator
792+ - include: destructuring-parameter
793+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)'
794+ captures:
795+ 1: storage.modifier.ts
796+ - match: |-
797+ (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
798+ # function assignment |
799+ (=\s*(
800+ ((async\s+)?(
801+ (function\s*[(<*]) |
802+ (function\s+) |
803+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
804+ )) |
805+ ((async\s*)?(
806+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
807+ # sure shot arrow functions even if => is on new line
808+ (
809+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
810+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
811+ (
812+ ([)]\s*:) | # ():
813+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
814+ )
815+ ) |
816+
817+ # arrow function possible to detect only with => on same line
818+ (
819+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
820+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
821+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
822+ \s*=> # arrow operator
823+ )
824+ ))
825+ )) |
826+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
827+ (:\s*(
828+ (<) |
829+ ([(]\s*(
830+ ([)]) |
831+ (\.\.\.) |
832+ ([_$[:alnum:]]+\s*(
833+ ([:,?=])|
834+ ([)]\s*=>)
835+ ))
836+ ))
837+ )) |
838+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
839+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
840+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
841+ ((async\s+)?(
842+ (function\s*[(<*]) |
843+ (function\s+) |
844+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
845+ )) |
846+ ((async\s*)?(
847+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
848+ # sure shot arrow functions even if => is on new line
849+ (
850+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
851+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
852+ (
853+ ([)]\s*:) | # ():
854+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
855+ )
856+ ) |
857+
858+ # arrow function possible to detect only with => on same line
859+ (
860+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
861+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
862+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
863+ \s*=> # arrow operator
864+ )
865+ ))
866+ )))
867+ captures:
868+ 1: storage.modifier.ts
869+ 2: keyword.operator.rest.ts
870+ 3: entity.name.function.ts variable.language.this.ts
871+ 4: entity.name.function.ts
872+ 5: keyword.operator.optional.ts
873+ - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)'
874+ captures:
875+ 1: storage.modifier.ts
876+ 2: keyword.operator.rest.ts
877+ 3: variable.parameter.ts variable.language.this.ts
878+ 4: variable.parameter.ts
879+ 5: keyword.operator.optional.ts
880+ - include: type-annotation
881+ - include: variable-initializer
882+ - match: ","
883+ scope: punctuation.separator.parameter.ts
760 - include: identifiers
884 - include: identifiers
761 - include: expressionPunctuations
885 - include: expressionPunctuations
762 expression-operators:
886 expression-operators:
@@ -788,11 +912,15 @@ contexts:
788 - include: typeof-operator
912 - include: typeof-operator
789 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
913 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
790 scope: keyword.operator.expression.void.ts
914 scope: keyword.operator.expression.void.ts
915+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))'
916+ captures:
917+ 1: keyword.control.as.ts
918+ 2: storage.modifier.ts
791 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
919 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
792 captures:
920 captures:
793 1: keyword.control.as.ts
921 1: keyword.control.as.ts
794 push:
922 push:
795− - match: '(?=$|^|[;,:})\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+))'
923+ - match: '(?=^|[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+)|(\s+\<))'
796 pop: true
924 pop: true
797 - include: type
925 - include: type
798 - match: \.\.\.
926 - match: \.\.\.
@@ -807,7 +935,12 @@ contexts:
807 scope: keyword.operator.comparison.ts
935 scope: keyword.operator.comparison.ts
808 - match: <=|>=|<>|<|>
936 - match: <=|>=|<>|<|>
809 scope: keyword.operator.relational.ts
937 scope: keyword.operator.relational.ts
810− - match: \!|&&|\|\|
938+ - match: '(?<=[_$[:alnum:]])(\!)\s*(?:(/=)|(?:(/)(?![/*])))'
939+ captures:
940+ 1: keyword.operator.logical.ts
941+ 2: keyword.operator.assignment.compound.ts
942+ 3: keyword.operator.arithmetic.ts
943+ - match: \!|&&|\|\||\?\?
811 scope: keyword.operator.logical.ts
944 scope: keyword.operator.logical.ts
812 - match: \&|~|\^|\|
945 - match: \&|~|\^|\|
813 scope: keyword.operator.bitwise.ts
946 scope: keyword.operator.bitwise.ts
@@ -819,16 +952,24 @@ contexts:
819 scope: keyword.operator.increment.ts
952 scope: keyword.operator.increment.ts
820 - match: '%|\*|/|-|\+'
953 - match: '%|\*|/|-|\+'
821 scope: keyword.operator.arithmetic.ts
954 scope: keyword.operator.arithmetic.ts
822− - match: '(?<=[_$[:alnum:])\]])\s*(/)(?![/*])'
955+ - match: '(?<=[_$[:alnum:])\]])\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)+(?:(/=)|(?:(/)(?![/*]))))'
956+ push:
957+ - match: '(?:(/=)|(?:(/)(?!\*([^\*]|(\*[^\/]))*\*\/)))'
958+ captures:
959+ 1: keyword.operator.assignment.compound.ts
960+ 2: keyword.operator.arithmetic.ts
961+ pop: true
962+ - include: comment
963+ - match: '(?<=[_$[:alnum:])\]])\s*(?:(/=)|(?:(/)(?![/*])))'
823 captures:
964 captures:
824− 1: keyword.operator.arithmetic.ts
965+ 1: keyword.operator.assignment.compound.ts
966+ 2: keyword.operator.arithmetic.ts
825 expressionPunctuations:
967 expressionPunctuations:
826 - include: punctuation-comma
968 - include: punctuation-comma
827 - include: punctuation-accessor
969 - include: punctuation-accessor
828 expressionWithoutIdentifiers:
970 expressionWithoutIdentifiers:
829 - include: string
971 - include: string
830 - include: regex
972 - include: regex
831− - include: template
832 - include: comment
973 - include: comment
833 - include: function-expression
974 - include: function-expression
834 - include: class-expression
975 - include: class-expression
@@ -846,143 +987,119 @@ contexts:
846 - include: paren-expression
987 - include: paren-expression
847 field-declaration:
988 field-declaration:
848 - match: |-
989 - match: |-
849− (?x)(?<!\()(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)\s+)?(?=\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
990+ (?x)(?<!\()(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)\s+)?(?=\s*((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
850− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
991+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
851− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
992+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
852− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
993+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
853− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
994+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
854− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
995+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
855− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
996+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
856− (?:\B(\.)[0-9][0-9_]*\b)| # .1
997+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
857− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
998+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
858− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))
999+ )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|\}|$))
859 captures:
1000 captures:
860 1: storage.modifier.ts
1001 1: storage.modifier.ts
861 push:
1002 push:
862 - meta_scope: meta.field.declaration.ts
1003 - meta_scope: meta.field.declaration.ts
863 - match: |-
1004 - match: |-
864− (?x)(?=\}|;|,|$|(^(?!\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1005+ (?x)(?=\}|;|,|$|(^(?!\s*((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
865− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1006+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
866− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1007+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
867− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1008+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
868− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1009+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
869− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1010+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
870− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1011+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
871− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1012+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
872− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1013+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
873− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))))|(?<=\})
1014+ )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|$))))|(?<=\})
874 pop: true
1015 pop: true
875 - include: variable-initializer
1016 - include: variable-initializer
1017+ - include: type-annotation
1018+ - include: string
1019+ - include: array-literal
1020+ - include: numeric-literal
1021+ - include: comment
876 - match: |-
1022 - match: |-
877− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1023+ (?x)(\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\?)|(\!))?(?=\s*\s*
878− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1024+ # function assignment |
879− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1025+ (=\s*(
880− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1026+ ((async\s+)?(
881− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1027+ (function\s*[(<*]) |
882− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1028+ (function\s+) |
883− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1029+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
884− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1030+ )) |
885− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1031+ ((async\s*)?(
886− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))
1032+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
887− push:
1033+ # sure shot arrow functions even if => is on new line
888− - match: |-
1034+ (
889− (?x)(?=[};,=]|$|(^(?!\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1035+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
890− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1036+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
891− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1037+ (
892− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1038+ ([)]\s*:) | # ():
893− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1039+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
894− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1040+ )
895− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1041+ ) |
896− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1042+
897− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1043+ # arrow function possible to detect only with => on same line
898− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))))|(?<=\})
1044+ (
899− pop: true
1045+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
900− - include: type-annotation
1046+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
901− - include: string
1047+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
902− - include: array-literal
1048+ \s*=> # arrow operator
903− - include: numeric-literal
1049+ )
904− - include: comment
1050+ ))
905− - match: |-
1051+ )) |
906− (?x)([_$[:alpha:]][_$[:alnum:]]*)(\?)?(?=(\?\s*)?\s*
1052+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
907− # function assignment |
1053+ (:\s*(
908− (=\s*(
1054+ (<) |
909− ((async\s+)?(
1055+ ([(]\s*(
910− (function\s*[(<*]) |
1056+ ([)]) |
911− (function\s+) |
1057+ (\.\.\.) |
912− ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1058+ ([_$[:alnum:]]+\s*(
913− )) |
1059+ ([:,?=])|
914− ((async\s*)?(
1060+ ([)]\s*=>)
915− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
1061+ ))
916− # sure shot arrow functions even if => is on new line
1062+ ))
917− (
1063+ )) |
918− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1064+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
919− [(]\s*
1065+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
920− (
1066+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
921− ([)]\s*:) | # ():
1067+ ((async\s+)?(
922− ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1068+ (function\s*[(<*]) |
923− )
1069+ (function\s+) |
924− ) |
1070+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
925− (
1071+ )) |
926− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1072+ ((async\s*)?(
927− ) |
1073+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
928− # arrow function possible to detect only with => on same line
1074+ # sure shot arrow functions even if => is on new line
929− (
1075+ (
930− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
1076+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
931− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
1077+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
932− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
1078+ (
933− \s*=> # arrow operator
1079+ ([)]\s*:) | # ():
934− )
1080+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
935− ))
1081+ )
936− )) |
1082+ ) |
937− # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
1083+
938− (:\s*(
1084+ # arrow function possible to detect only with => on same line
939− (<) |
1085+ (
940− ([(]\s*(
1086+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
941− ([)]) |
1087+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
942− (\.\.\.) |
1088+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
943− ([_$[:alnum:]]+\s*(
1089+ \s*=> # arrow operator
944− ([:,?=])|
1090+ )
945− ([)]\s*=>)
1091+ ))
946− ))
1092+ )))
947− ))
1093+ captures:
948− )) |
1094+ 1: meta.definition.property.ts entity.name.function.ts
949− (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) |
1095+ 2: keyword.operator.optional.ts
950− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
1096+ 3: keyword.operator.definiteassignment.ts
951− ((async\s+)?(
1097+ - match: '\#?[_$[:alpha:]][_$[:alnum:]]*'
952− (function\s*[(<*]) |
1098+ scope: meta.definition.property.ts variable.object.property.ts
953− (function\s+) |
1099+ - match: \?
954− ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1100+ scope: keyword.operator.optional.ts
955− )) |
1101+ - match: \!
956− ((async\s*)?(
1102+ scope: keyword.operator.definiteassignment.ts
957− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
958− # sure shot arrow functions even if => is on new line
959− (
960− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
961− [(]\s*
962− (
963− ([)]\s*:) | # ():
964− ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
965− )
966− ) |
967− (
968− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
969− ) |
970− # arrow function possible to detect only with => on same line
971− (
972− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
973− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
974− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
975− \s*=> # arrow operator
976− )
977− ))
978− )))
979− captures:
980− 1: meta.definition.property.ts entity.name.function.ts
981− 2: keyword.operator.optional.ts
982− - match: "[_$[:alpha:]][_$[:alnum:]]*"
983− scope: meta.definition.property.ts variable.object.property.ts
984− - match: \?
985− scope: keyword.operator.optional.ts
986 for-loop:
1103 for-loop:
987 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())'
1104 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())'
988 captures:
1105 captures:
@@ -1009,43 +1126,59 @@ contexts:
1009 - include: type-parameters
1126 - include: type-parameters
1010 - include: function-parameters
1127 - include: function-parameters
1011 - include: return-type
1128 - include: return-type
1129+ - include: type-function-return-type
1012 - include: decl-block
1130 - include: decl-block
1013 - match: \*
1131 - match: \*
1014 scope: keyword.generator.asterisk.ts
1132 scope: keyword.generator.asterisk.ts
1015 function-call:
1133 function-call:
1016− - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1134+ - match: '(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
1017 push:
1135 push:
1018− - match: '(?<=\))(?!(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1136+ - match: '(?<=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
1019 pop: true
1137 pop: true
1020− - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))'
1138+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))'
1021 push:
1139 push:
1022 - meta_scope: meta.function-call.ts
1140 - meta_scope: meta.function-call.ts
1023− - match: '(?=\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1141+ - match: '(?=\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
1024 pop: true
1142 pop: true
1025− - include: literal
1143+ - include: function-call-target
1026− - include: support-objects
1027− - include: object-identifiers
1028− - include: punctuation-accessor
1029− - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))import(?=\s*[\(]\s*[\"\''\`]))'
1030− scope: keyword.operator.expression.import.ts
1031− - match: "([_$[:alpha:]][_$[:alnum:]]*)"
1032− scope: entity.name.function.ts
1033 - include: comment
1144 - include: comment
1034− - match: \?\.
1145+ - include: function-call-optionals
1035− scope: meta.function-call.ts punctuation.accessor.optional.ts
1036 - include: type-arguments
1146 - include: type-arguments
1037 - include: paren-expression
1147 - include: paren-expression
1148+ - match: '(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))(<\s*[\{\[\(]\s*$))'
1149+ push:
1150+ - match: '(?<=\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))(<\s*[\{\[\(]\s*$))'
1151+ pop: true
1152+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))'
1153+ push:
1154+ - meta_scope: meta.function-call.ts
1155+ - match: '(?=(<\s*[\{\[\(]\s*$))'
1156+ pop: true
1157+ - include: function-call-target
1158+ - include: comment
1159+ - include: function-call-optionals
1160+ - include: type-arguments
1161+ function-call-optionals:
1162+ - match: \?\.
1163+ scope: meta.function-call.ts punctuation.accessor.optional.ts
1164+ - match: \!
1165+ scope: meta.function-call.ts keyword.operator.definiteassignment.ts
1166+ function-call-target:
1167+ - include: support-function-call-identifiers
1168+ - match: '(\#?[_$[:alpha:]][_$[:alnum:]]*)'
1169+ scope: entity.name.function.ts
1038 function-declaration:
1170 function-declaration:
1039− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?<=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*'
1171+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?<=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*'
1040 captures:
1172 captures:
1041 1: keyword.control.export.ts
1173 1: keyword.control.export.ts
1042− 2: storage.modifier.async.ts
1174+ 2: storage.modifier.ts
1175+ 3: storage.modifier.async.ts
1043− 3: storage.type.function.ts
1176+ 4: storage.type.function.ts
1044− 4: keyword.generator.asterisk.ts
1177+ 5: keyword.generator.asterisk.ts
1045− 5: meta.definition.function.ts entity.name.function.ts
1178+ 6: meta.definition.function.ts entity.name.function.ts
1046 push:
1179 push:
1047 - meta_scope: meta.function.ts
1180 - meta_scope: meta.function.ts
1048− - match: '(?=$|^|;)|(?<=\})'
1181+ - match: '(?=;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|(?<=\})'
1049 pop: true
1182 pop: true
1050 - include: function-name
1183 - include: function-name
1051 - include: function-body
1184 - include: function-body
@@ -1058,9 +1191,10 @@ contexts:
1058 4: meta.definition.function.ts entity.name.function.ts
1191 4: meta.definition.function.ts entity.name.function.ts
1059 push:
1192 push:
1060 - meta_scope: meta.function.expression.ts
1193 - meta_scope: meta.function.expression.ts
1061− - match: '(?<=\})'
1194+ - match: '(?=;)|(?<=\})'
1062 pop: true
1195 pop: true
1063 - include: function-name
1196 - include: function-name
1197+ - include: single-line-comment-consuming-line-ending
1064 - include: function-body
1198 - include: function-body
1065 function-name:
1199 function-name:
1066 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1200 - match: "[_$[:alpha:]][_$[:alnum:]]*"
@@ -1078,10 +1212,11 @@ contexts:
1078 - include: function-parameters-body
1212 - include: function-parameters-body
1079 function-parameters-body:
1213 function-parameters-body:
1080 - include: comment
1214 - include: comment
1215+ - include: string
1081 - include: decorator
1216 - include: decorator
1082 - include: destructuring-parameter
1217 - include: destructuring-parameter
1083 - include: parameter-name
1218 - include: parameter-name
1084− - include: type-annotation
1219+ - include: parameter-type-annotation
1085 - include: variable-initializer
1220 - include: variable-initializer
1086 - match: ","
1221 - match: ","
1087 scope: punctuation.separator.parameter.ts
1222 scope: punctuation.separator.parameter.ts
@@ -1095,24 +1230,22 @@ contexts:
1095 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1230 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1096 )) |
1231 )) |
1097 ((async\s*)?(
1232 ((async\s*)?(
1098− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
1233+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1099 # sure shot arrow functions even if => is on new line
1234 # sure shot arrow functions even if => is on new line
1100 (
1235 (
1101− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1236+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1102− [(]\s*
1237+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1103 (
1238 (
1104 ([)]\s*:) | # ():
1239 ([)]\s*:) | # ():
1105 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1240 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1106 )
1241 )
1107 ) |
1242 ) |
1108− (
1243+
1109− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1110− ) |
1111 # arrow function possible to detect only with => on same line
1244 # arrow function possible to detect only with => on same line
1112 (
1245 (
1113− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
1246+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1114− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
1247+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1115− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
1248+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1116 \s*=> # arrow operator
1249 \s*=> # arrow operator
1117 )
1250 )
1118 ))
1251 ))
@@ -1121,12 +1254,12 @@ contexts:
1121 1: punctuation.accessor.ts
1254 1: punctuation.accessor.ts
1122 2: punctuation.accessor.optional.ts
1255 2: punctuation.accessor.optional.ts
1123 3: entity.name.function.ts
1256 3: entity.name.function.ts
1124− - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])'
1257+ - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])'
1125 captures:
1258 captures:
1126 1: punctuation.accessor.ts
1259 1: punctuation.accessor.ts
1127 2: punctuation.accessor.optional.ts
1260 2: punctuation.accessor.optional.ts
1128 3: variable.other.constant.property.ts
1261 3: variable.other.constant.property.ts
1129− - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([_$[:alpha:]][_$[:alnum:]]*)'
1262+ - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[_$[:alpha:]][_$[:alnum:]]*)'
1130 captures:
1263 captures:
1131 1: punctuation.accessor.ts
1264 1: punctuation.accessor.ts
1132 2: punctuation.accessor.optional.ts
1265 2: punctuation.accessor.optional.ts
@@ -1135,15 +1268,46 @@ contexts:
1135 scope: variable.other.constant.ts
1268 scope: variable.other.constant.ts
1136 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1269 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1137 scope: variable.other.readwrite.ts
1270 scope: variable.other.readwrite.ts
1271+ if-statement:
1272+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?=\bif\s*(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))\s*(?!\{))'
1273+ push:
1274+ - match: '(?=;|$|\})'
1275+ pop: true
1276+ - include: comment
1277+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(if)\s*(\()'
1278+ captures:
1279+ 1: keyword.control.conditional.ts
1280+ 2: meta.brace.round.ts
1281+ push:
1282+ - match: \)
1283+ captures:
1284+ 0: meta.brace.round.ts
1285+ pop: true
1286+ - include: expression
1287+ - match: '(?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
1288+ captures:
1289+ 0: punctuation.definition.string.begin.ts
1290+ push:
1291+ - meta_scope: string.regexp.ts
1292+ - match: "(/)([dgimsuy]*)"
1293+ captures:
1294+ 1: punctuation.definition.string.end.ts
1295+ 2: keyword.other.ts
1296+ pop: true
1297+ - include: regexp
1298+ - include: statements
1138 import-declaration:
1299 import-declaration:
1139− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1300+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type)(?!\s+from))?(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1140 captures:
1301 captures:
1141 1: keyword.control.export.ts
1302 1: keyword.control.export.ts
1303+ 2: storage.modifier.ts
1142− 2: keyword.control.import.ts
1304+ 3: keyword.control.import.ts
1305+ 4: keyword.control.type.ts
1143 push:
1306 push:
1144 - meta_scope: meta.import.ts
1307 - meta_scope: meta.import.ts
1145 - match: '(?<!^import|[^\._$[:alnum:]]import)(?=;|$|^)'
1308 - match: '(?<!^import|[^\._$[:alnum:]]import)(?=;|$|^)'
1146 pop: true
1309 pop: true
1310+ - include: single-line-comment-consuming-line-ending
1147 - include: comment
1311 - include: comment
1148 - include: string
1312 - include: string
1149 - match: '(?<=^import|[^\._$[:alnum:]]import)(?!\s*["''])'
1313 - match: '(?<=^import|[^\._$[:alnum:]]import)(?!\s*["''])'
@@ -1155,14 +1319,16 @@ contexts:
1155 - include: import-export-declaration
1319 - include: import-export-declaration
1156 - include: import-export-declaration
1320 - include: import-export-declaration
1157 import-equals-declaration:
1321 import-equals-declaration:
1158− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()'
1322+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()'
1159 captures:
1323 captures:
1160 1: keyword.control.export.ts
1324 1: keyword.control.export.ts
1325+ 2: storage.modifier.ts
1161− 2: keyword.control.import.ts
1326+ 3: keyword.control.import.ts
1327+ 4: keyword.control.type.ts
1162− 3: variable.other.readwrite.alias.ts
1328+ 5: variable.other.readwrite.alias.ts
1163− 4: keyword.operator.assignment.ts
1329+ 6: keyword.operator.assignment.ts
1164− 5: keyword.control.require.ts
1330+ 7: keyword.control.require.ts
1165− 6: meta.brace.round.ts
1331+ 8: meta.brace.round.ts
1166 push:
1332 push:
1167 - meta_scope: meta.import-equals.external.ts
1333 - meta_scope: meta.import-equals.external.ts
1168 - match: \)
1334 - match: \)
@@ -1171,16 +1337,19 @@ contexts:
1171 pop: true
1337 pop: true
1172 - include: comment
1338 - include: comment
1173 - include: string
1339 - include: string
1174− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)'
1340+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)'
1175 captures:
1341 captures:
1176 1: keyword.control.export.ts
1342 1: keyword.control.export.ts
1343+ 2: storage.modifier.ts
1177− 2: keyword.control.import.ts
1344+ 3: keyword.control.import.ts
1345+ 4: keyword.control.type.ts
1178− 3: variable.other.readwrite.alias.ts
1346+ 5: variable.other.readwrite.alias.ts
1179− 4: keyword.operator.assignment.ts
1347+ 6: keyword.operator.assignment.ts
1180 push:
1348 push:
1181 - meta_scope: meta.import-equals.internal.ts
1349 - meta_scope: meta.import-equals.internal.ts
1182 - match: (?=;|$|^)
1350 - match: (?=;|$|^)
1183 pop: true
1351 pop: true
1352+ - include: single-line-comment-consuming-line-ending
1184 - include: comment
1353 - include: comment
1185 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
1354 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
1186 captures:
1355 captures:
@@ -1202,7 +1371,7 @@ contexts:
1202 - include: import-export-clause
1371 - include: import-export-clause
1203 import-export-clause:
1372 import-export-clause:
1204 - include: comment
1373 - include: comment
1205− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*))\s+(as)\s+(?:(\bdefault(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(\b[_$[:alpha:]][_$[:alnum:]]*))'
1374+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*))'
1206 captures:
1375 captures:
1207 1: keyword.control.default.ts
1376 1: keyword.control.default.ts
1208 2: constant.language.import-export-all.ts
1377 2: constant.language.import-export-all.ts
@@ -1254,6 +1423,9 @@ contexts:
1254 2: keyword.operator.type.modifier.ts
1423 2: keyword.operator.type.modifier.ts
1255 3: keyword.operator.optional.ts
1424 3: keyword.operator.optional.ts
1256 pop: true
1425 pop: true
1426+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
1427+ captures:
1428+ 1: keyword.control.as.ts
1257 - include: type
1429 - include: type
1258 inline-tags:
1430 inline-tags:
1259 - match: '(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))'
1431 - match: '(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))'
@@ -1285,15 +1457,16 @@ contexts:
1285 captures:
1457 captures:
1286 1: keyword.operator.expression.instanceof.ts
1458 1: keyword.operator.expression.instanceof.ts
1287 push:
1459 push:
1288− - match: '(?<=\))|(?=[;),}\]:?]|\|\||\&\&|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1460+ - match: '(?<=\))|(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|(([\&\~\^\|]\s*)?[_$[:alpha:]][_$[:alnum:]]*\s+instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1289 pop: true
1461 pop: true
1290 - include: type
1462 - include: type
1291 interface-declaration:
1463 interface-declaration:
1292− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])'
1464+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])'
1293 captures:
1465 captures:
1294 1: keyword.control.export.ts
1466 1: keyword.control.export.ts
1295 2: storage.modifier.ts
1467 2: storage.modifier.ts
1468+ 3: storage.modifier.ts
1296− 3: storage.type.interface.ts
1469+ 4: storage.type.interface.ts
1297 push:
1470 push:
1298 - meta_scope: meta.interface.ts
1471 - meta_scope: meta.interface.ts
1299 - match: '(?<=\})'
1472 - match: '(?<=\})'
@@ -1343,25 +1516,27 @@ contexts:
1343 - include: this-literal
1516 - include: this-literal
1344 - include: super-literal
1517 - include: super-literal
1345 method-declaration:
1518 method-declaration:
1346− - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1519+ - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1347 captures:
1520 captures:
1348 1: storage.modifier.ts
1521 1: storage.modifier.ts
1349 2: storage.modifier.ts
1522 2: storage.modifier.ts
1350− 3: storage.modifier.async.ts
1523+ 3: storage.modifier.ts
1351− 4: storage.type.ts
1524+ 4: storage.modifier.async.ts
1525+ 5: storage.type.ts
1352 push:
1526 push:
1353 - meta_scope: meta.method.declaration.ts
1527 - meta_scope: meta.method.declaration.ts
1354 - match: '(?=\}|;|,|$)|(?<=\})'
1528 - match: '(?=\}|;|,|$)|(?<=\})'
1355 pop: true
1529 pop: true
1356 - include: method-declaration-name
1530 - include: method-declaration-name
1357 - include: function-body
1531 - include: function-body
1358− - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*[\(\<])'
1532+ - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])'
1359 captures:
1533 captures:
1360 1: storage.modifier.ts
1534 1: storage.modifier.ts
1361 2: storage.modifier.ts
1535 2: storage.modifier.ts
1362− 3: storage.modifier.async.ts
1536+ 3: storage.modifier.ts
1537+ 4: storage.modifier.async.ts
1363− 4: keyword.operator.new.ts
1538+ 5: keyword.operator.new.ts
1364− 5: keyword.generator.asterisk.ts
1539+ 6: keyword.generator.asterisk.ts
1365 push:
1540 push:
1366 - meta_scope: meta.method.declaration.ts
1541 - meta_scope: meta.method.declaration.ts
1367 - match: '(?=\}|;|,|$)|(?<=\})'
1542 - match: '(?=\}|;|,|$)|(?<=\})'
@@ -1369,22 +1544,23 @@ contexts:
1369 - include: method-declaration-name
1544 - include: method-declaration-name
1370 - include: function-body
1545 - include: function-body
1371 - match: |-
1546 - match: |-
1372− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1547+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1373− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1548+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1374− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1549+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1375− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1550+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1376− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1551+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1377− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1552+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1378− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1553+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1379− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1554+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1380− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1555+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1381− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1556+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1382 captures:
1557 captures:
1383 1: storage.modifier.ts
1558 1: storage.modifier.ts
1384 2: storage.modifier.ts
1559 2: storage.modifier.ts
1385− 3: storage.modifier.async.ts
1560+ 3: storage.modifier.ts
1561+ 4: storage.modifier.async.ts
1386− 4: storage.type.property.ts
1562+ 5: storage.type.property.ts
1387− 5: keyword.generator.asterisk.ts
1563+ 6: keyword.generator.asterisk.ts
1388 push:
1564 push:
1389 - meta_scope: meta.method.declaration.ts
1565 - meta_scope: meta.method.declaration.ts
1390 - match: '(?=\}|;|,|$)|(?<=\})'
1566 - match: '(?=\}|;|,|$)|(?<=\})'
@@ -1393,16 +1569,16 @@ contexts:
1393 - include: function-body
1569 - include: function-body
1394 method-declaration-name:
1570 method-declaration-name:
1395 - match: |-
1571 - match: |-
1396− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1572+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1397− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1573+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1398− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1574+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1399− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1575+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1400− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1576+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1401− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1577+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1402− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1578+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1403− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1579+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1404− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1580+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1405− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\<])
1581+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\<])
1406 push:
1582 push:
1407 - match: (?=\(|\<)
1583 - match: (?=\(|\<)
1408 pop: true
1584 pop: true
@@ -1414,13 +1590,14 @@ contexts:
1414 - match: \?
1590 - match: \?
1415 scope: keyword.operator.optional.ts
1591 scope: keyword.operator.optional.ts
1416 namespace-declaration:
1592 namespace-declaration:
1417− - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"''`]))'
1593+ - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"''`]))'
1418 captures:
1594 captures:
1419 1: keyword.control.export.ts
1595 1: keyword.control.export.ts
1596+ 2: storage.modifier.ts
1420− 2: storage.type.namespace.ts
1597+ 3: storage.type.namespace.ts
1421 push:
1598 push:
1422 - meta_scope: meta.namespace.declaration.ts
1599 - meta_scope: meta.namespace.declaration.ts
1423− - match: '(?<=\})|(?=;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
1600+ - match: '(?<=\})|(?=;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
1424 pop: true
1601 pop: true
1425 - include: comment
1602 - include: comment
1426 - include: string
1603 - include: string
@@ -1434,41 +1611,53 @@ contexts:
1434 1: keyword.operator.new.ts
1611 1: keyword.operator.new.ts
1435 push:
1612 push:
1436 - meta_scope: new.expr.ts
1613 - meta_scope: new.expr.ts
1437− - match: '(?<=\))|(?=[;),}\]:]|\|\||\&\&|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1614+ - match: '(?<=\))|(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1438 pop: true
1615 pop: true
1439− - include: paren-expression
1616+ - include: expression
1440− - include: class-declaration
1441− - include: type
1442 null-literal:
1617 null-literal:
1443 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1618 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1444 scope: constant.language.null.ts
1619 scope: constant.language.null.ts
1445 numeric-literal:
1620 numeric-literal:
1446− - match: '\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$)'
1621+ - match: '\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)'
1447 scope: constant.numeric.hex.ts
1622 scope: constant.numeric.hex.ts
1623+ captures:
1624+ 1: storage.type.numeric.bigint.ts
1448− - match: '\b(?<!\$)0(b|B)[01][01_]*\b(?!\$)'
1625+ - match: '\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)'
1449 scope: constant.numeric.binary.ts
1626 scope: constant.numeric.binary.ts
1627+ captures:
1628+ 1: storage.type.numeric.bigint.ts
1450− - match: '\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$)'
1629+ - match: '\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$)'
1451 scope: constant.numeric.octal.ts
1630 scope: constant.numeric.octal.ts
1631+ captures:
1632+ 1: storage.type.numeric.bigint.ts
1452 - match: |-
1633 - match: |-
1453 (?x)
1634 (?x)
1454 (?<!\$)(?:
1635 (?<!\$)(?:
1455− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1636+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1456− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1637+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1457− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1638+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1458− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1639+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1459− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1640+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1460− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1641+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1461− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1642+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1462− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1643+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1463 )(?!\$)
1644 )(?!\$)
1464 captures:
1645 captures:
1465 0: constant.numeric.decimal.ts
1646 0: constant.numeric.decimal.ts
1466 1: meta.delimiter.decimal.period.ts
1647 1: meta.delimiter.decimal.period.ts
1467− 2: meta.delimiter.decimal.period.ts
1648+ 2: storage.type.numeric.bigint.ts
1468 3: meta.delimiter.decimal.period.ts
1649 3: meta.delimiter.decimal.period.ts
1469− 4: meta.delimiter.decimal.period.ts
1650+ 4: storage.type.numeric.bigint.ts
1470 5: meta.delimiter.decimal.period.ts
1651 5: meta.delimiter.decimal.period.ts
1652+ 6: storage.type.numeric.bigint.ts
1653+ 7: storage.type.numeric.bigint.ts
1654+ 8: meta.delimiter.decimal.period.ts
1655+ 9: storage.type.numeric.bigint.ts
1471− 6: meta.delimiter.decimal.period.ts
1656+ 10: meta.delimiter.decimal.period.ts
1657+ 11: storage.type.numeric.bigint.ts
1658+ 12: meta.delimiter.decimal.period.ts
1659+ 13: storage.type.numeric.bigint.ts
1660+ 14: storage.type.numeric.bigint.ts
1472 numericConstant-literal:
1661 numericConstant-literal:
1473 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1662 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1474 scope: constant.language.nan.ts
1663 scope: constant.language.nan.ts
@@ -1477,16 +1666,16 @@ contexts:
1477 object-binding-element:
1666 object-binding-element:
1478 - include: comment
1667 - include: comment
1479 - match: |-
1668 - match: |-
1480− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1669+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1481− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1670+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1482− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1671+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1483− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1672+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1484− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1673+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1485− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1674+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1486− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1675+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1487− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1676+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1488− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1677+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1489− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1678+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1490 push:
1679 push:
1491 - match: '(?=,|\})'
1680 - match: '(?=,|\})'
1492 pop: true
1681 pop: true
@@ -1499,16 +1688,16 @@ contexts:
1499 object-binding-element-const:
1688 object-binding-element-const:
1500 - include: comment
1689 - include: comment
1501 - match: |-
1690 - match: |-
1502− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1691+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1503− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1692+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1504− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1693+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1505− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1694+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1506− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1695+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1507− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1696+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1508− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1697+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1509− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1698+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1510− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1699+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1511− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1700+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1512 push:
1701 push:
1513 - match: '(?=,|\})'
1702 - match: '(?=,|\})'
1514 pop: true
1703 pop: true
@@ -1520,16 +1709,16 @@ contexts:
1520 - include: punctuation-comma
1709 - include: punctuation-comma
1521 object-binding-element-propertyName:
1710 object-binding-element-propertyName:
1522 - match: |-
1711 - match: |-
1523− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1712+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1524− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1713+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1525− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1714+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1526− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1715+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1527− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1716+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1528− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1717+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1529− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1718+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1530− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1719+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1531− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1720+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1532− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1721+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1533 push:
1722 push:
1534 - match: (:)
1723 - match: (:)
1535 captures:
1724 captures:
@@ -1567,9 +1756,9 @@ contexts:
1567 scope: support.class.ts
1756 scope: support.class.ts
1568 - match: |-
1757 - match: |-
1569 (?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
1758 (?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
1570− ([[:upper:]][_$[:digit:][:upper:]]*) |
1759+ (\#?[[:upper:]][_$[:digit:][:upper:]]*) |
1571− ([_$[:alpha:]][_$[:alnum:]]*)
1760+ (\#?[_$[:alpha:]][_$[:alnum:]]*)
1572− )(?=\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1761+ )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)
1573 captures:
1762 captures:
1574 1: punctuation.accessor.ts
1763 1: punctuation.accessor.ts
1575 2: punctuation.accessor.optional.ts
1764 2: punctuation.accessor.optional.ts
@@ -1579,7 +1768,7 @@ contexts:
1579 (?x)(?:
1768 (?x)(?:
1580 ([[:upper:]][_$[:digit:][:upper:]]*) |
1769 ([[:upper:]][_$[:digit:][:upper:]]*) |
1581 ([_$[:alpha:]][_$[:alnum:]]*)
1770 ([_$[:alpha:]][_$[:alnum:]]*)
1582− )(?=\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1771+ )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)
1583 captures:
1772 captures:
1584 1: variable.other.constant.object.ts
1773 1: variable.other.constant.object.ts
1585 2: variable.other.object.ts
1774 2: variable.other.object.ts
@@ -1596,16 +1785,16 @@ contexts:
1596 - include: object-member
1785 - include: object-member
1597 object-literal-method-declaration:
1786 object-literal-method-declaration:
1598 - match: |-
1787 - match: |-
1599− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1788+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1600− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1789+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1601− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1790+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1602− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1791+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1603− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1792+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1604− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1793+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1605− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1794+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1606− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1795+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1607− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1796+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1608− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1797+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1609 captures:
1798 captures:
1610 1: storage.modifier.async.ts
1799 1: storage.modifier.async.ts
1611 2: storage.type.property.ts
1800 2: storage.type.property.ts
@@ -1617,16 +1806,16 @@ contexts:
1617 - include: method-declaration-name
1806 - include: method-declaration-name
1618 - include: function-body
1807 - include: function-body
1619 - match: |-
1808 - match: |-
1620− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1809+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1621− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1810+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1622− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1811+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1623− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1812+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1624− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1813+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1625− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1814+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1626− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1815+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1627− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1816+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1628− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1817+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1629− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1818+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1630 captures:
1819 captures:
1631 1: storage.modifier.async.ts
1820 1: storage.modifier.async.ts
1632 2: storage.type.property.ts
1821 2: storage.type.property.ts
@@ -1643,50 +1832,67 @@ contexts:
1643 - meta_scope: meta.object.member.ts meta.object-literal.key.ts
1832 - meta_scope: meta.object.member.ts meta.object-literal.key.ts
1644 - match: '(?=:)|((?<=[\]])(?=\s*[\(\<]))'
1833 - match: '(?=:)|((?<=[\]])(?=\s*[\(\<]))'
1645 pop: true
1834 pop: true
1835+ - include: comment
1646 - include: array-literal
1836 - include: array-literal
1647− - match: '(?=[\''\"])'
1837+ - match: '(?=[\''\"\`])'
1648 push:
1838 push:
1649 - meta_scope: meta.object.member.ts meta.object-literal.key.ts
1839 - meta_scope: meta.object.member.ts meta.object-literal.key.ts
1650− - match: '(?=:)|((?<=[\''\"])(?=\s*[\(\<]))'
1840+ - match: '(?=:)|((?<=[\''\"\`])(?=((\s*[\(\<,}])|(\s+(as)\s+))))'
1651 pop: true
1841 pop: true
1842+ - include: comment
1652 - include: string
1843 - include: string
1653− - match: '(?<=[\]\''\"])(?=\s*[\(\<])'
1844+ - match: |-
1845+ (?x)(?=(\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1846+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1847+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1848+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1849+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1850+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1851+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1852+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1853+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1854+ )(?!\$)))
1855+ push:
1856+ - meta_scope: meta.object.member.ts meta.object-literal.key.ts
1857+ - match: '(?=:)|(?=\s*([\(\<,}])|(\s+as\s+))'
1858+ pop: true
1859+ - include: comment
1860+ - include: numeric-literal
1861+ - match: '(?<=[\]\''\"\`])(?=\s*[\(\<])'
1654 push:
1862 push:
1655 - meta_scope: meta.method.declaration.ts
1863 - meta_scope: meta.method.declaration.ts
1656 - match: '(?=\}|;|,)|(?<=\})'
1864 - match: '(?=\}|;|,)|(?<=\})'
1657 pop: true
1865 pop: true
1658 - include: function-body
1866 - include: function-body
1659− - match: '(?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)'
1867+ - match: '(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)'
1660 scope: meta.object.member.ts
1868 scope: meta.object.member.ts
1661 captures:
1869 captures:
1662 0: meta.object-literal.key.ts
1870 0: meta.object-literal.key.ts
1663 1: constant.numeric.decimal.ts
1871 1: constant.numeric.decimal.ts
1664 - match: |-
1872 - match: |-
1665− (?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
1873+ (?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*(
1666 ((async\s+)?(
1874 ((async\s+)?(
1667 (function\s*[(<*]) |
1875 (function\s*[(<*]) |
1668 (function\s+) |
1876 (function\s+) |
1669 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1877 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1670 )) |
1878 )) |
1671 ((async\s*)?(
1879 ((async\s*)?(
1672− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
1880+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1673 # sure shot arrow functions even if => is on new line
1881 # sure shot arrow functions even if => is on new line
1674 (
1882 (
1675− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1883+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1676− [(]\s*
1884+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1677 (
1885 (
1678 ([)]\s*:) | # ():
1886 ([)]\s*:) | # ():
1679 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1887 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1680 )
1888 )
1681 ) |
1889 ) |
1682− (
1890+
1683− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1684− ) |
1685 # arrow function possible to detect only with => on same line
1891 # arrow function possible to detect only with => on same line
1686 (
1892 (
1687− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
1893+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1688− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
1894+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1689− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
1895+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1690 \s*=> # arrow operator
1896 \s*=> # arrow operator
1691 )
1897 )
1692 ))
1898 ))
@@ -1695,7 +1901,7 @@ contexts:
1695 captures:
1901 captures:
1696 0: meta.object-literal.key.ts
1902 0: meta.object-literal.key.ts
1697 1: entity.name.function.ts
1903 1: entity.name.function.ts
1698− - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)'
1904+ - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)'
1699 scope: meta.object.member.ts
1905 scope: meta.object.member.ts
1700 captures:
1906 captures:
1701 0: meta.object-literal.key.ts
1907 0: meta.object-literal.key.ts
@@ -1707,14 +1913,27 @@ contexts:
1707 - match: '(?=,|\})'
1913 - match: '(?=,|\})'
1708 pop: true
1914 pop: true
1709 - include: expression
1915 - include: expression
1710− - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)'
1916+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$|\/\/|\/\*)'
1711 scope: meta.object.member.ts
1917 scope: meta.object.member.ts
1712 captures:
1918 captures:
1713 1: variable.other.readwrite.ts
1919 1: variable.other.readwrite.ts
1920+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+(const)(?=\s*([,}]|$))'
1921+ scope: meta.object.member.ts
1922+ captures:
1923+ 1: keyword.control.as.ts
1924+ 2: storage.modifier.ts
1925+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
1926+ captures:
1927+ 1: keyword.control.as.ts
1928+ push:
1929+ - meta_scope: meta.object.member.ts
1930+ - match: '(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|^|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+))'
1931+ pop: true
1932+ - include: type
1714 - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)'
1933 - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)'
1715 push:
1934 push:
1716 - meta_scope: meta.object.member.ts
1935 - meta_scope: meta.object.member.ts
1717− - match: '(?=,|\}|$)'
1936+ - match: '(?=,|\}|$|\/\/|\/\*)'
1718 pop: true
1937 pop: true
1719 - include: expression
1938 - include: expression
1720 - match: ":"
1939 - match: ":"
@@ -1724,7 +1943,7 @@ contexts:
1724 - meta_scope: meta.object.member.ts
1943 - meta_scope: meta.object.member.ts
1725 - match: '(?=,|\})'
1944 - match: '(?=,|\})'
1726 pop: true
1945 pop: true
1727− - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)\(\s*([\{\[]\s*)?$)'
1946+ - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1728 captures:
1947 captures:
1729 1: storage.modifier.async.ts
1948 1: storage.modifier.async.ts
1730 push:
1949 push:
@@ -1740,7 +1959,7 @@ contexts:
1740 0: meta.brace.round.ts
1959 0: meta.brace.round.ts
1741 pop: true
1960 pop: true
1742 - include: expression-inside-possibly-arrow-parens
1961 - include: expression-inside-possibly-arrow-parens
1743− - match: '(?<=:)\s*(async)?\s*(\()(?=\s*([\{\[]\s*)?$)'
1962+ - match: '(?<=:)\s*(async)?\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1744 captures:
1963 captures:
1745 1: storage.modifier.async.ts
1964 1: storage.modifier.async.ts
1746 2: meta.brace.round.ts
1965 2: meta.brace.round.ts
@@ -1750,6 +1969,23 @@ contexts:
1750 0: meta.brace.round.ts
1969 0: meta.brace.round.ts
1751 pop: true
1970 pop: true
1752 - include: expression-inside-possibly-arrow-parens
1971 - include: expression-inside-possibly-arrow-parens
1972+ - match: (?<=:)\s*(async)?\s*(?=\<\s*$)
1973+ captures:
1974+ 1: storage.modifier.async.ts
1975+ push:
1976+ - match: (?<=\>)
1977+ pop: true
1978+ - include: type-parameters
1979+ - match: '(?<=\>)\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1980+ captures:
1981+ 1: meta.brace.round.ts
1982+ push:
1983+ - match: \)
1984+ captures:
1985+ 0: meta.brace.round.ts
1986+ pop: true
1987+ - include: expression-inside-possibly-arrow-parens
1988+ - include: possibly-arrow-return-type
1753 - include: expression
1989 - include: expression
1754 - include: punctuation-comma
1990 - include: punctuation-comma
1755 parameter-array-binding-pattern:
1991 parameter-array-binding-pattern:
@@ -1767,16 +2003,18 @@ contexts:
1767 parameter-binding-element:
2003 parameter-binding-element:
1768 - include: comment
2004 - include: comment
1769 - include: string
2005 - include: string
2006+ - include: numeric-literal
2007+ - include: regex
1770 - include: parameter-object-binding-pattern
2008 - include: parameter-object-binding-pattern
1771 - include: parameter-array-binding-pattern
2009 - include: parameter-array-binding-pattern
1772 - include: destructuring-parameter-rest
2010 - include: destructuring-parameter-rest
1773 - include: variable-initializer
2011 - include: variable-initializer
1774 parameter-name:
2012 parameter-name:
1775− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)'
2013+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)'
1776 captures:
2014 captures:
1777 1: storage.modifier.ts
2015 1: storage.modifier.ts
1778 - match: |-
2016 - match: |-
1779− (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
2017+ (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
1780 # function assignment |
2018 # function assignment |
1781 (=\s*(
2019 (=\s*(
1782 ((async\s+)?(
2020 ((async\s+)?(
@@ -1785,24 +2023,22 @@ contexts:
1785 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2023 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1786 )) |
2024 )) |
1787 ((async\s*)?(
2025 ((async\s*)?(
1788− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
2026+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1789 # sure shot arrow functions even if => is on new line
2027 # sure shot arrow functions even if => is on new line
1790 (
2028 (
1791− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
2029+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1792− [(]\s*
2030+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1793 (
2031 (
1794 ([)]\s*:) | # ():
2032 ([)]\s*:) | # ():
1795 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2033 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1796 )
2034 )
1797 ) |
2035 ) |
1798− (
2036+
1799− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1800− ) |
1801 # arrow function possible to detect only with => on same line
2037 # arrow function possible to detect only with => on same line
1802 (
2038 (
1803− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
2039+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1804− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
2040+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1805− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
2041+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1806 \s*=> # arrow operator
2042 \s*=> # arrow operator
1807 )
2043 )
1808 ))
2044 ))
@@ -1819,32 +2055,31 @@ contexts:
1819 ))
2055 ))
1820 ))
2056 ))
1821 )) |
2057 )) |
2058+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
1822− (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) |
2059+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
1823− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
2060+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
1824 ((async\s+)?(
2061 ((async\s+)?(
1825 (function\s*[(<*]) |
2062 (function\s*[(<*]) |
1826 (function\s+) |
2063 (function\s+) |
1827 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2064 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1828 )) |
2065 )) |
1829 ((async\s*)?(
2066 ((async\s*)?(
1830− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
2067+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1831 # sure shot arrow functions even if => is on new line
2068 # sure shot arrow functions even if => is on new line
1832 (
2069 (
1833− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
2070+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1834− [(]\s*
2071+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1835 (
2072 (
1836 ([)]\s*:) | # ():
2073 ([)]\s*:) | # ():
1837 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2074 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1838 )
2075 )
1839 ) |
2076 ) |
1840− (
2077+
1841− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1842− ) |
1843 # arrow function possible to detect only with => on same line
2078 # arrow function possible to detect only with => on same line
1844 (
2079 (
1845− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
2080+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1846− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
2081+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1847− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
2082+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1848 \s*=> # arrow operator
2083 \s*=> # arrow operator
1849 )
2084 )
1850 ))
2085 ))
@@ -1855,7 +2090,7 @@ contexts:
1855 3: entity.name.function.ts variable.language.this.ts
2090 3: entity.name.function.ts variable.language.this.ts
1856 4: entity.name.function.ts
2091 4: entity.name.function.ts
1857 5: keyword.operator.optional.ts
2092 5: keyword.operator.optional.ts
1858− - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)'
2093+ - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)'
1859 captures:
2094 captures:
1860 1: storage.modifier.ts
2095 1: storage.modifier.ts
1861 2: keyword.operator.rest.ts
2096 2: keyword.operator.rest.ts
@@ -1865,16 +2100,16 @@ contexts:
1865 parameter-object-binding-element:
2100 parameter-object-binding-element:
1866 - include: comment
2101 - include: comment
1867 - match: |-
2102 - match: |-
1868− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
2103+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1869− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
2104+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1870− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
2105+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1871− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
2106+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1872− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
2107+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1873− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
2108+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1874− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
2109+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1875− (?:\B(\.)[0-9][0-9_]*\b)| # .1
2110+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1876− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
2111+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1877− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
2112+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1878 push:
2113 push:
1879 - match: '(?=,|\})'
2114 - match: '(?=,|\})'
1880 pop: true
2115 pop: true
@@ -1895,6 +2130,15 @@ contexts:
1895 0: punctuation.definition.binding-pattern.object.ts
2130 0: punctuation.definition.binding-pattern.object.ts
1896 pop: true
2131 pop: true
1897 - include: parameter-object-binding-element
2132 - include: parameter-object-binding-element
2133+ parameter-type-annotation:
2134+ - match: (:)
2135+ captures:
2136+ 1: keyword.operator.type.annotation.ts
2137+ push:
2138+ - meta_scope: meta.type.annotation.ts
2139+ - match: "(?=[,)])|(?==[^>])"
2140+ pop: true
2141+ - include: type
1898 paren-expression:
2142 paren-expression:
1899 - match: \(
2143 - match: \(
1900 captures:
2144 captures:
@@ -1906,14 +2150,14 @@ contexts:
1906 pop: true
2150 pop: true
1907 - include: expression
2151 - include: expression
1908 paren-expression-possibly-arrow:
2152 paren-expression-possibly-arrow:
1909− - match: '(?<=[(=,])\s*(async)?(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\(\s*[\{\[]\s*$)'
2153+ - match: '(?<=[(=,])\s*(async)?(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1910 captures:
2154 captures:
1911 1: storage.modifier.async.ts
2155 1: storage.modifier.async.ts
1912 push:
2156 push:
1913 - match: (?<=\))
2157 - match: (?<=\))
1914 pop: true
2158 pop: true
1915 - include: paren-expression-possibly-arrow-with-typeparameters
2159 - include: paren-expression-possibly-arrow-with-typeparameters
1916− - match: '(?<=[(=,]|=>)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\()|(<))\s*$)'
2160+ - match: '(?<=[(=,]|=>|^return|[^\._$[:alnum:]]return)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?\()|(<))\s*$)'
1917 captures:
2161 captures:
1918 1: storage.modifier.async.ts
2162 1: storage.modifier.async.ts
1919 push:
2163 push:
@@ -1933,7 +2177,7 @@ contexts:
1933 pop: true
2177 pop: true
1934 - include: expression-inside-possibly-arrow-parens
2178 - include: expression-inside-possibly-arrow-parens
1935 possibly-arrow-return-type:
2179 possibly-arrow-return-type:
1936− - match: '(?<=\))\s*(:)(?=\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+\s*=>)'
2180+ - match: '(?<=\)|^)\s*(:)(?=\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*=>)'
1937 captures:
2181 captures:
1938 1: meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts
2182 1: meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts
1939 push:
2183 push:
@@ -1980,23 +2224,23 @@ contexts:
1980 pop: true
2224 pop: true
1981 - include: string-character-escape
2225 - include: string-character-escape
1982 regex:
2226 regex:
1983− - match: '(?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))'
2227+ - match: '(?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
1984 captures:
2228 captures:
1985 1: punctuation.definition.string.begin.ts
2229 1: punctuation.definition.string.begin.ts
1986 push:
2230 push:
1987 - meta_scope: string.regexp.ts
2231 - meta_scope: string.regexp.ts
1988− - match: "(/)([gimsuy]*)"
2232+ - match: "(/)([dgimsuy]*)"
1989 captures:
2233 captures:
1990 1: punctuation.definition.string.end.ts
2234 1: punctuation.definition.string.end.ts
1991 2: keyword.other.ts
2235 2: keyword.other.ts
1992 pop: true
2236 pop: true
1993 - include: regexp
2237 - include: regexp
1994− - match: '(?<![_$[:alnum:])\]]|\+\+|--|})\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))'
2238+ - match: '((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
1995 captures:
2239 captures:
1996 0: punctuation.definition.string.begin.ts
2240 0: punctuation.definition.string.begin.ts
1997 push:
2241 push:
1998 - meta_scope: string.regexp.ts
2242 - meta_scope: string.regexp.ts
1999− - match: "(/)([gimsuy]*)"
2243+ - match: "(/)([dgimsuy]*)"
2000 captures:
2244 captures:
2001 1: punctuation.definition.string.end.ts
2245 1: punctuation.definition.string.end.ts
2002 2: keyword.other.ts
2246 2: keyword.other.ts
@@ -2096,10 +2340,24 @@ contexts:
2096 - include: type-object
2340 - include: type-object
2097 - include: type-predicate-operator
2341 - include: type-predicate-operator
2098 - include: type
2342 - include: type
2343+ shebang:
2344+ - match: \A(#!).*(?=$)
2345+ scope: comment.line.shebang.ts
2346+ captures:
2347+ 1: punctuation.definition.comment.ts
2348+ single-line-comment-consuming-line-ending:
2349+ - match: '(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)'
2350+ captures:
2351+ 1: punctuation.whitespace.comment.leading.ts
2352+ 2: comment.line.double-slash.ts
2353+ 3: punctuation.definition.comment.ts
2354+ 4: storage.type.internaldeclaration.ts
2355+ 5: punctuation.decorator.internaldeclaration.ts
2356+ push:
2357+ - meta_content_scope: comment.line.double-slash.ts
2358+ - match: (?=^)
2359+ pop: true
2099 statements:
2360 statements:
2100− - include: string
2101− - include: template
2102− - include: comment
2103 - include: declaration
2361 - include: declaration
2104 - include: control-statement
2362 - include: control-statement
2105 - include: after-operator-block-as-object-literal
2363 - include: after-operator-block-as-object-literal
@@ -2107,21 +2365,31 @@ contexts:
2107 - include: label
2365 - include: label
2108 - include: expression
2366 - include: expression
2109 - include: punctuation-semicolon
2367 - include: punctuation-semicolon
2368+ - include: string
2369+ - include: comment
2110 string:
2370 string:
2111 - include: qstring-single
2371 - include: qstring-single
2112 - include: qstring-double
2372 - include: qstring-double
2373+ - include: template
2113 string-character-escape:
2374 string-character-escape:
2114− - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)'
2375+ - match: '\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]+\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)'
2115 scope: constant.character.escape.ts
2376 scope: constant.character.escape.ts
2116 super-literal:
2377 super-literal:
2117 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))super\b(?!\$)'
2378 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))super\b(?!\$)'
2118 scope: variable.language.super.ts
2379 scope: variable.language.super.ts
2380+ support-function-call-identifiers:
2381+ - include: literal
2382+ - include: support-objects
2383+ - include: object-identifiers
2384+ - include: punctuation-accessor
2385+ - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))import(?=\s*[\(]\s*[\"\''\`]))'
2386+ scope: keyword.operator.expression.import.ts
2119 support-objects:
2387 support-objects:
2120 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(arguments)\b(?!\$)'
2388 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(arguments)\b(?!\$)'
2121 scope: variable.language.arguments.ts
2389 scope: variable.language.arguments.ts
2122 - match: |-
2390 - match: |-
2123− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator
2391+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array
2124− |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy
2392+ |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy
2125 |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray
2393 |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray
2126 |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)
2394 |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)
2127 scope: support.class.builtin.ts
2395 scope: support.class.builtin.ts
@@ -2175,9 +2443,9 @@ contexts:
2175 4: support.variable.property.target.ts
2443 4: support.variable.property.target.ts
2176 - match: |-
2444 - match: |-
2177 (?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
2445 (?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
2178− (constructor|length|prototype|__proto__)
2446+ (?:(constructor|length|prototype|__proto__)\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?\())
2179 |
2447 |
2180− (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\b(?!\$)
2448+ (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\b(?!\$)))
2181 captures:
2449 captures:
2182 1: punctuation.accessor.ts
2450 1: punctuation.accessor.ts
2183 2: punctuation.accessor.optional.ts
2451 2: punctuation.accessor.optional.ts
@@ -2281,7 +2549,7 @@ contexts:
2281 |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary
2549 |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary
2282 |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead
2550 |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead
2283 |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile
2551 |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile
2284− |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?\()
2552+ |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?\()
2285 captures:
2553 captures:
2286 1: punctuation.accessor.ts
2554 1: punctuation.accessor.ts
2287 2: punctuation.accessor.optional.ts
2555 2: punctuation.accessor.optional.ts
@@ -2405,6 +2673,7 @@ contexts:
2405 captures:
2673 captures:
2406 0: punctuation.definition.block.ts
2674 0: punctuation.definition.block.ts
2407 pop: true
2675 pop: true
2676+ - include: comment
2408 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(switch)\s*(\()'
2677 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(switch)\s*(\()'
2409 captures:
2678 captures:
2410 1: keyword.control.switch.ts
2679 1: keyword.control.switch.ts
@@ -2447,7 +2716,34 @@ contexts:
2447 0: case-clause.expr.ts punctuation.definition.section.case-statement.ts
2716 0: case-clause.expr.ts punctuation.definition.section.case-statement.ts
2448 - include: statements
2717 - include: statements
2449 template:
2718 template:
2719+ - include: template-call
2720+ - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2721+ captures:
2722+ 1: entity.name.function.tagged-template.ts
2723+ 2: punctuation.definition.string.template.begin.ts
2724+ push:
2725+ - meta_scope: string.template.ts
2726+ - match: "`"
2727+ captures:
2728+ 0: punctuation.definition.string.template.end.ts
2729+ pop: true
2730+ - include: template-substitution-element
2731+ - include: string-character-escape
2732+ template-call:
2733+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?`)'
2734+ push:
2735+ - meta_scope: string.template.ts
2736+ - match: (?=`)
2737+ pop: true
2738+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))'
2739+ push:
2740+ - match: '(?=(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?`)'
2741+ pop: true
2742+ - include: support-function-call-identifiers
2743+ - match: "([_$[:alpha:]][_$[:alnum:]]*)"
2744+ scope: entity.name.function.tagged-template.ts
2745+ - include: type-arguments
2450− - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)`)'
2746+ - match: '([_$[:alpha:]][_$[:alnum:]]*)?\s*(?=(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)`)'
2451 captures:
2747 captures:
2452 1: entity.name.function.tagged-template.ts
2748 1: entity.name.function.tagged-template.ts
2453 push:
2749 push:
@@ -2455,6 +2751,20 @@ contexts:
2455 - match: (?=`)
2751 - match: (?=`)
2456 pop: true
2752 pop: true
2457 - include: type-arguments
2753 - include: type-arguments
2754+ template-substitution-element:
2755+ - match: '\$\{'
2756+ captures:
2757+ 0: punctuation.definition.template-expression.begin.ts
2758+ push:
2759+ - meta_scope: meta.template.expression.ts
2760+ - meta_content_scope: meta.embedded.line.ts
2761+ - match: '\}'
2762+ captures:
2763+ 0: punctuation.definition.template-expression.end.ts
2764+ pop: true
2765+ - include: expression
2766+ template-type:
2767+ - include: template-call
2458 - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2768 - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2459 captures:
2769 captures:
2460 1: entity.name.function.tagged-template.ts
2770 1: entity.name.function.tagged-template.ts
@@ -2465,9 +2775,9 @@ contexts:
2465 captures:
2775 captures:
2466 0: punctuation.definition.string.template.end.ts
2776 0: punctuation.definition.string.template.end.ts
2467 pop: true
2777 pop: true
2468− - include: template-substitution-element
2778+ - include: template-type-substitution-element
2469 - include: string-character-escape
2779 - include: string-character-escape
2470− template-substitution-element:
2780+ template-type-substitution-element:
2471 - match: '\$\{'
2781 - match: '\$\{'
2472 captures:
2782 captures:
2473 0: punctuation.definition.template-expression.begin.ts
2783 0: punctuation.definition.template-expression.begin.ts
@@ -2478,9 +2788,9 @@ contexts:
2478 captures:
2788 captures:
2479 0: punctuation.definition.template-expression.end.ts
2789 0: punctuation.definition.template-expression.end.ts
2480 pop: true
2790 pop: true
2481− - include: expression
2791+ - include: type
2482 ternary-expression:
2792 ternary-expression:
2483− - match: '(?!\?\.\s*[^[:digit:]])(\?)'
2793+ - match: '(?!\?\.\s*[^[:digit:]])(\?)(?!\?)'
2484 captures:
2794 captures:
2485 1: keyword.operator.ternary.ts
2795 1: keyword.operator.ternary.ts
2486 push:
2796 push:
@@ -2494,7 +2804,7 @@ contexts:
2494 scope: variable.language.this.ts
2804 scope: variable.language.this.ts
2495 type:
2805 type:
2496 - include: comment
2806 - include: comment
2497− - include: string
2807+ - include: type-string
2498 - include: numeric-literal
2808 - include: numeric-literal
2499 - include: type-primitive
2809 - include: type-primitive
2500 - include: type-builtin-literals
2810 - include: type-builtin-literals
@@ -2506,24 +2816,36 @@ contexts:
2506 - include: type-fn-type-parameters
2816 - include: type-fn-type-parameters
2507 - include: type-paren-or-function-parameters
2817 - include: type-paren-or-function-parameters
2508 - include: type-function-return-type
2818 - include: type-function-return-type
2819+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
2820+ captures:
2821+ 1: storage.modifier.ts
2509 - include: type-name
2822 - include: type-name
2510 type-alias-declaration:
2823 type-alias-declaration:
2511− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*'
2824+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*'
2512 captures:
2825 captures:
2513 1: keyword.control.export.ts
2826 1: keyword.control.export.ts
2514− 2: storage.type.type.ts
2827+ 2: storage.modifier.ts
2828+ 3: storage.type.type.ts
2515− 3: entity.name.type.alias.ts
2829+ 4: entity.name.type.alias.ts
2516 push:
2830 push:
2517 - meta_scope: meta.type.declaration.ts
2831 - meta_scope: meta.type.declaration.ts
2518− - match: '(?=\}|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
2832+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2519 pop: true
2833 pop: true
2520 - include: comment
2834 - include: comment
2521 - include: type-parameters
2835 - include: type-parameters
2836+ - match: '(=)\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2837+ captures:
2838+ 1: keyword.operator.assignment.ts
2839+ 2: keyword.control.intrinsic.ts
2840+ push:
2841+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2842+ pop: true
2843+ - include: type
2522 - match: (=)\s*
2844 - match: (=)\s*
2523 captures:
2845 captures:
2524 1: keyword.operator.assignment.ts
2846 1: keyword.operator.assignment.ts
2525 push:
2847 push:
2526− - match: '(?=\}|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
2848+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2527 pop: true
2849 pop: true
2528 - include: type
2850 - include: type
2529 type-annotation:
2851 type-annotation:
@@ -2553,8 +2875,13 @@ contexts:
2553 captures:
2875 captures:
2554 0: punctuation.definition.typeparameters.end.ts
2876 0: punctuation.definition.typeparameters.end.ts
2555 pop: true
2877 pop: true
2556− - include: type
2878+ - include: type-arguments-body
2879+ type-arguments-body:
2880+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(_)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2881+ captures:
2882+ 0: keyword.operator.type.ts
2883+ - include: type
2557− - include: punctuation-comma
2884+ - include: punctuation-comma
2558 type-builtin-literals:
2885 type-builtin-literals:
2559 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2886 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2560 scope: support.type.builtin.ts
2887 scope: support.type.builtin.ts
@@ -2576,13 +2903,19 @@ contexts:
2576 - include: type
2903 - include: type
2577 - include: type
2904 - include: type
2578 type-fn-type-parameters:
2905 type-fn-type-parameters:
2579− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(new)\b(?=\s*\<)'
2906+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(new)\b(?=\s*\<)'
2580− scope: meta.type.constructor.ts
2581 captures:
2907 captures:
2908+ 1: meta.type.constructor.ts storage.modifier.ts
2582− 1: keyword.control.new.ts
2909+ 2: meta.type.constructor.ts keyword.control.new.ts
2910+ push:
2911+ - match: (?<=>)
2912+ pop: true
2913+ - include: comment
2914+ - include: type-parameters
2583− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(new)\b\s*(?=\()'
2915+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(new)\b\s*(?=\()'
2584 captures:
2916 captures:
2917+ 1: storage.modifier.ts
2585− 1: keyword.control.new.ts
2918+ 2: keyword.control.new.ts
2586 push:
2919 push:
2587 - meta_scope: meta.type.constructor.ts
2920 - meta_scope: meta.type.constructor.ts
2588 - match: (?<=\))
2921 - match: (?<=\))
@@ -2633,6 +2966,30 @@ contexts:
2633 - include: type-predicate-operator
2966 - include: type-predicate-operator
2634 - include: type
2967 - include: type
2635 type-name:
2968 type-name:
2969+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(<)'
2970+ captures:
2971+ 1: entity.name.type.module.ts
2972+ 2: punctuation.accessor.ts
2973+ 3: punctuation.accessor.optional.ts
2974+ 4: meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
2975+ push:
2976+ - meta_content_scope: meta.type.parameters.ts
2977+ - match: (>)
2978+ captures:
2979+ 1: meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
2980+ pop: true
2981+ - include: type-arguments-body
2982+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(<)'
2983+ captures:
2984+ 1: entity.name.type.ts
2985+ 2: meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
2986+ push:
2987+ - meta_content_scope: meta.type.parameters.ts
2988+ - match: (>)
2989+ captures:
2990+ 1: meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
2991+ pop: true
2992+ - include: type-arguments-body
2636 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
2993 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
2637 captures:
2994 captures:
2638 1: entity.name.type.module.ts
2995 1: entity.name.type.module.ts
@@ -2668,18 +3025,16 @@ contexts:
2668 - include: type
3025 - include: type
2669 type-operators:
3026 type-operators:
2670 - include: typeof-operator
3027 - include: typeof-operator
2671− - match: '(?:([&|])|(=(?!>)))(?=\s*\{)'
3028+ - match: '([&|])(?=\s*\{)'
2672 captures:
3029 captures:
2673− 1: keyword.operator.type.ts
3030+ 0: keyword.operator.type.ts
2674− 2: keyword.operator.assignment.ts
2675 push:
3031 push:
2676 - match: '(?<=\})'
3032 - match: '(?<=\})'
2677 pop: true
3033 pop: true
2678 - include: type-object
3034 - include: type-object
2679− - match: "([&|])|(=(?!>))"
3035+ - match: "[&|]"
2680 captures:
3036 captures:
2681− 1: keyword.operator.type.ts
3037+ 0: keyword.operator.type.ts
2682− 2: keyword.operator.assignment.ts
2683 push:
3038 push:
2684 - match: (?=\S)
3039 - match: (?=\S)
2685 pop: true
3040 pop: true
@@ -2706,6 +3061,8 @@ contexts:
2706 scope: storage.modifier.ts
3061 scope: storage.modifier.ts
2707 - include: type
3062 - include: type
2708 - include: punctuation-comma
3063 - include: punctuation-comma
3064+ - match: (=)(?!>)
3065+ scope: keyword.operator.assignment.ts
2709 type-paren-or-function-parameters:
3066 type-paren-or-function-parameters:
2710 - match: \(
3067 - match: \(
2711 captures:
3068 captures:
@@ -2716,7 +3073,6 @@ contexts:
2716 captures:
3073 captures:
2717 0: meta.brace.round.ts
3074 0: meta.brace.round.ts
2718 pop: true
3075 pop: true
2719− - include: destructuring-parameter
2720 - match: |-
3076 - match: |-
2721 (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*(
3077 (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*(
2722 (<) |
3078 (<) |
@@ -2729,7 +3085,8 @@ contexts:
2729 ))
3085 ))
2730 ))
3086 ))
2731 )) |
3087 )) |
3088+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
2732− (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))))
3089+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))))
2733 captures:
3090 captures:
2734 1: storage.modifier.ts
3091 1: storage.modifier.ts
2735 2: keyword.operator.rest.ts
3092 2: keyword.operator.rest.ts
@@ -2748,11 +3105,28 @@ contexts:
2748 scope: punctuation.separator.parameter.ts
3105 scope: punctuation.separator.parameter.ts
2749 - include: type
3106 - include: type
2750 type-predicate-operator:
3107 type-predicate-operator:
3108+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(asserts)\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s(is)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3109+ captures:
3110+ 1: keyword.operator.type.asserts.ts
3111+ 2: variable.parameter.ts variable.language.this.ts
3112+ 3: variable.parameter.ts
3113+ 4: keyword.operator.expression.is.ts
3114+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(asserts)\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3115+ captures:
3116+ 1: keyword.operator.type.asserts.ts
3117+ 2: variable.parameter.ts variable.language.this.ts
3118+ 3: variable.parameter.ts
3119+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))asserts(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3120+ scope: keyword.operator.type.asserts.ts
2751 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3121 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2752 scope: keyword.operator.expression.is.ts
3122 scope: keyword.operator.expression.is.ts
2753 type-primitive:
3123 type-primitive:
2754− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3124+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2755 scope: support.type.primitive.ts
3125 scope: support.type.primitive.ts
3126+ type-string:
3127+ - include: qstring-single
3128+ - include: qstring-double
3129+ - include: template-type
2756 type-tuple:
3130 type-tuple:
2757 - match: '\['
3131 - match: '\['
2758 captures:
3132 captures:
@@ -2763,56 +3137,84 @@ contexts:
2763 captures:
3137 captures:
2764 0: meta.brace.square.ts
3138 0: meta.brace.square.ts
2765 pop: true
3139 pop: true
3140+ - match: \.\.\.
3141+ scope: keyword.operator.rest.ts
3142+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))([_$[:alpha:]][_$[:alnum:]]*)\s*(\?)?\s*(:)'
3143+ captures:
3144+ 1: entity.name.label.ts
3145+ 2: keyword.operator.optional.ts
3146+ 3: punctuation.separator.label.ts
2766 - include: type
3147 - include: type
2767 - include: punctuation-comma
3148 - include: punctuation-comma
2768 typeof-operator:
3149 typeof-operator:
2769 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3150 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3151+ captures:
2770− scope: keyword.operator.expression.typeof.ts
3152+ 0: keyword.operator.expression.typeof.ts
3153+ push:
3154+ - match: '(?=[,);}\]=>:&|{\?]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
3155+ pop: true
3156+ - include: expression
2771 undefined-literal:
3157 undefined-literal:
2772 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3158 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2773 scope: constant.language.undefined.ts
3159 scope: constant.language.undefined.ts
2774 var-expr:
3160 var-expr:
2775− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3161+ - match: '(?=(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))'
2776− captures:
2777− 1: keyword.control.export.ts
2778− 2: storage.type.ts
2779 push:
3162 push:
2780 - meta_scope: meta.var.expr.ts
3163 - meta_scope: meta.var.expr.ts
2781− - match: '((?=;|}|(\s+(of|in)\s+)|^\s*$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)|((?<=\S)(?<!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))'
3164+ - match: '(?!(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?<!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))'
2782 pop: true
3165 pop: true
3166+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
3167+ captures:
3168+ 1: keyword.control.export.ts
3169+ 2: storage.modifier.ts
3170+ 3: storage.type.ts
3171+ push:
3172+ - match: (?=\S)
3173+ pop: true
2783 - include: destructuring-variable
3174 - include: destructuring-variable
2784 - include: var-single-variable
3175 - include: var-single-variable
2785 - include: variable-initializer
3176 - include: variable-initializer
2786 - include: comment
3177 - include: comment
2787− - match: (,)\s*(?!\S)
3178+ - match: (,)\s*((?!\S)|(?=\/\/))
2788 captures:
3179 captures:
2789 1: punctuation.separator.comma.ts
3180 1: punctuation.separator.comma.ts
2790 push:
3181 push:
2791− - match: '(?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
3182+ - match: '(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
2792 pop: true
3183 pop: true
3184+ - include: single-line-comment-consuming-line-ending
2793 - include: comment
3185 - include: comment
2794 - include: destructuring-variable
3186 - include: destructuring-variable
2795 - include: var-single-variable
3187 - include: var-single-variable
2796 - include: punctuation-comma
3188 - include: punctuation-comma
2797 - include: punctuation-comma
3189 - include: punctuation-comma
2798− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3190+ - match: '(?=(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))'
2799 captures:
3191 captures:
2800 1: keyword.control.export.ts
3192 1: keyword.control.export.ts
2801− 2: storage.type.ts
3193+ 2: storage.modifier.ts
3194+ 3: storage.type.ts
2802 push:
3195 push:
2803 - meta_scope: meta.var.expr.ts
3196 - meta_scope: meta.var.expr.ts
2804− - match: '((?=;|}|(\s+(of|in)\s+)|^\s*$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)|((?<=\S)(?<!^const|[^\._$[:alnum:]]const)(?=\s*$)))'
3197+ - match: '(?!(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?<!^const|[^\._$[:alnum:]]const)(?=\s*$)))'
2805 pop: true
3198 pop: true
3199+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
3200+ captures:
3201+ 1: keyword.control.export.ts
3202+ 2: storage.modifier.ts
3203+ 3: storage.type.ts
3204+ push:
3205+ - match: (?=\S)
3206+ pop: true
2806 - include: destructuring-const
3207 - include: destructuring-const
2807 - include: var-single-const
3208 - include: var-single-const
2808 - include: variable-initializer
3209 - include: variable-initializer
2809 - include: comment
3210 - include: comment
2810− - match: (,)\s*(?!\S)
3211+ - match: (,)\s*((?!\S)|(?=\/\/))
2811 captures:
3212 captures:
2812 1: punctuation.separator.comma.ts
3213 1: punctuation.separator.comma.ts
2813 push:
3214 push:
2814− - match: '(?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
3215+ - match: '(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
2815 pop: true
3216 pop: true
3217+ - include: single-line-comment-consuming-line-ending
2816 - include: comment
3218 - include: comment
2817 - include: destructuring-const
3219 - include: destructuring-const
2818 - include: var-single-const
3220 - include: var-single-const
@@ -2829,24 +3231,22 @@ contexts:
2829 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3231 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2830 )) |
3232 )) |
2831 ((async\s*)?(
3233 ((async\s*)?(
2832− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
3234+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2833 # sure shot arrow functions even if => is on new line
3235 # sure shot arrow functions even if => is on new line
2834 (
3236 (
2835− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3237+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
2836− [(]\s*
3238+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2837 (
3239 (
2838 ([)]\s*:) | # ():
3240 ([)]\s*:) | # ():
2839 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3241 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2840 )
3242 )
2841 ) |
3243 ) |
2842− (
3244+
2843− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
2844− ) |
2845 # arrow function possible to detect only with => on same line
3245 # arrow function possible to detect only with => on same line
2846 (
3246 (
2847− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3247+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
2848− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3248+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2849− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3249+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2850 \s*=> # arrow operator
3250 \s*=> # arrow operator
2851 )
3251 )
2852 ))
3252 ))
@@ -2863,32 +3263,31 @@ contexts:
2863 ))
3263 ))
2864 ))
3264 ))
2865 )) |
3265 )) |
3266+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
2866− (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) |
3267+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
2867− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3268+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
2868 ((async\s+)?(
3269 ((async\s+)?(
2869 (function\s*[(<*]) |
3270 (function\s*[(<*]) |
2870 (function\s+) |
3271 (function\s+) |
2871 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3272 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2872 )) |
3273 )) |
2873 ((async\s*)?(
3274 ((async\s*)?(
2874− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
3275+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2875 # sure shot arrow functions even if => is on new line
3276 # sure shot arrow functions even if => is on new line
2876 (
3277 (
2877− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3278+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
2878− [(]\s*
3279+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2879 (
3280 (
2880 ([)]\s*:) | # ():
3281 ([)]\s*:) | # ():
2881 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3282 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2882 )
3283 )
2883 ) |
3284 ) |
2884− (
3285+
2885− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
2886− ) |
2887 # arrow function possible to detect only with => on same line
3286 # arrow function possible to detect only with => on same line
2888 (
3287 (
2889− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3288+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
2890− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3289+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2891− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3290+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2892 \s*=> # arrow operator
3291 \s*=> # arrow operator
2893 )
3292 )
2894 ))
3293 ))
@@ -2897,7 +3296,7 @@ contexts:
2897 1: meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts
3296 1: meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts
2898 push:
3297 push:
2899 - meta_scope: meta.var-single-variable.expr.ts
3298 - meta_scope: meta.var-single-variable.expr.ts
2900− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3299+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
2901 pop: true
3300 pop: true
2902 - include: var-single-variable-type-annotation
3301 - include: var-single-variable-type-annotation
2903 - match: "([_$[:alpha:]][_$[:alnum:]]*)"
3302 - match: "([_$[:alpha:]][_$[:alnum:]]*)"
@@ -2905,12 +3304,12 @@ contexts:
2905 1: meta.definition.variable.ts variable.other.constant.ts
3304 1: meta.definition.variable.ts variable.other.constant.ts
2906 push:
3305 push:
2907 - meta_scope: meta.var-single-variable.expr.ts
3306 - meta_scope: meta.var-single-variable.expr.ts
2908− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3307+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
2909 pop: true
3308 pop: true
2910 - include: var-single-variable-type-annotation
3309 - include: var-single-variable-type-annotation
2911 var-single-variable:
3310 var-single-variable:
2912 - match: |-
3311 - match: |-
2913− (?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s*
3312+ (?x)([_$[:alpha:]][_$[:alnum:]]*)(\!)?(?=\s*
2914 # function assignment |
3313 # function assignment |
2915 (=\s*(
3314 (=\s*(
2916 ((async\s+)?(
3315 ((async\s+)?(
@@ -2919,24 +3318,22 @@ contexts:
2919 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3318 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2920 )) |
3319 )) |
2921 ((async\s*)?(
3320 ((async\s*)?(
2922− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
3321+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2923 # sure shot arrow functions even if => is on new line
3322 # sure shot arrow functions even if => is on new line
2924 (
3323 (
2925− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3324+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
2926− [(]\s*
3325+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2927 (
3326 (
2928 ([)]\s*:) | # ():
3327 ([)]\s*:) | # ():
2929 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3328 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2930 )
3329 )
2931 ) |
3330 ) |
2932− (
3331+
2933− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
2934− ) |
2935 # arrow function possible to detect only with => on same line
3332 # arrow function possible to detect only with => on same line
2936 (
3333 (
2937− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3334+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
2938− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3335+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2939− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3336+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2940 \s*=> # arrow operator
3337 \s*=> # arrow operator
2941 )
3338 )
2942 ))
3339 ))
@@ -2953,57 +3350,59 @@ contexts:
2953 ))
3350 ))
2954 ))
3351 ))
2955 )) |
3352 )) |
2956− (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) |
3353+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
2957− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3354+ (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
3355+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
2958 ((async\s+)?(
3356 ((async\s+)?(
2959 (function\s*[(<*]) |
3357 (function\s*[(<*]) |
2960 (function\s+) |
3358 (function\s+) |
2961 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3359 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2962 )) |
3360 )) |
2963 ((async\s*)?(
3361 ((async\s*)?(
2964− ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) |
3362+ ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2965 # sure shot arrow functions even if => is on new line
3363 # sure shot arrow functions even if => is on new line
2966 (
3364 (
2967− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3365+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
2968− [(]\s*
3366+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2969 (
3367 (
2970 ([)]\s*:) | # ():
3368 ([)]\s*:) | # ():
2971 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3369 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2972 )
3370 )
2973 ) |
3371 ) |
2974− (
3372+
2975− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
2976− ) |
2977 # arrow function possible to detect only with => on same line
3373 # arrow function possible to detect only with => on same line
2978 (
3374 (
2979− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3375+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
2980− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3376+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2981− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3377+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2982 \s*=> # arrow operator
3378 \s*=> # arrow operator
2983 )
3379 )
2984 ))
3380 ))
2985 )))
3381 )))
2986 captures:
3382 captures:
2987 1: meta.definition.variable.ts entity.name.function.ts
3383 1: meta.definition.variable.ts entity.name.function.ts
3384+ 2: keyword.operator.definiteassignment.ts
2988 push:
3385 push:
2989 - meta_scope: meta.var-single-variable.expr.ts
3386 - meta_scope: meta.var-single-variable.expr.ts
2990− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3387+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
2991 pop: true
3388 pop: true
2992 - include: var-single-variable-type-annotation
3389 - include: var-single-variable-type-annotation
2993− - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
3390+ - match: '([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\!)?'
2994 captures:
3391 captures:
2995 1: meta.definition.variable.ts variable.other.constant.ts
3392 1: meta.definition.variable.ts variable.other.constant.ts
3393+ 2: keyword.operator.definiteassignment.ts
2996 push:
3394 push:
2997 - meta_scope: meta.var-single-variable.expr.ts
3395 - meta_scope: meta.var-single-variable.expr.ts
2998− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3396+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
2999 pop: true
3397 pop: true
3000 - include: var-single-variable-type-annotation
3398 - include: var-single-variable-type-annotation
3001− - match: "([_$[:alpha:]][_$[:alnum:]]*)"
3399+ - match: '([_$[:alpha:]][_$[:alnum:]]*)(\!)?'
3002 captures:
3400 captures:
3003 1: meta.definition.variable.ts variable.other.readwrite.ts
3401 1: meta.definition.variable.ts variable.other.readwrite.ts
3402+ 2: keyword.operator.definiteassignment.ts
3004 push:
3403 push:
3005 - meta_scope: meta.var-single-variable.expr.ts
3404 - meta_scope: meta.var-single-variable.expr.ts
3006− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3405+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3007 pop: true
3406 pop: true
3008 - include: var-single-variable-type-annotation
3407 - include: var-single-variable-type-annotation
3009 var-single-variable-type-annotation:
3408 var-single-variable-type-annotation:
@@ -3011,17 +3410,17 @@ contexts:
3011 - include: string
3410 - include: string
3012 - include: comment
3411 - include: comment
3013 variable-initializer:
3412 variable-initializer:
3014− - match: (?<!=|!)(=)(?!=)(?=\s*\S)
3413+ - match: (?<!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=>\s*$)
3015 captures:
3414 captures:
3016 1: keyword.operator.assignment.ts
3415 1: keyword.operator.assignment.ts
3017 push:
3416 push:
3018− - match: '(?=$|^|[,);}\]])'
3417+ - match: '(?=$|^|[,);}\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3019 pop: true
3418 pop: true
3020 - include: expression
3419 - include: expression
3021 - match: (?<!=|!)(=)(?!=)
3420 - match: (?<!=|!)(=)(?!=)
3022 captures:
3421 captures:
3023 1: keyword.operator.assignment.ts
3422 1: keyword.operator.assignment.ts
3024 push:
3423 push:
3025− - match: '(?=[,);}\]])|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)'
3424+ - match: '(?=[,);}\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)'
3026 pop: true
3425 pop: true
3027 - include: expression
3426 - include: expression
assets/syntaxes/TypsecriptReact.sublime-syntax → assets/syntaxes/02_Extra/TypsecriptReact.sublime-syntaxrenamed+896−477
@@ -9,10 +9,7 @@ contexts:
9 main:
9 main:
10 - include: directives
10 - include: directives
11 - include: statements
11 - include: statements
12− - match: \A(#!).*(?=$)
12+ - include: shebang
13− scope: comment.line.shebang.ts
14− captures:
15− 1: punctuation.definition.comment.ts
16 comment:
13 comment:
17 - match: /\*\*(?!/)
14 - match: /\*\*(?!/)
18 captures:
15 captures:
@@ -44,10 +41,10 @@ contexts:
44 5: punctuation.decorator.internaldeclaration.tsx
41 5: punctuation.decorator.internaldeclaration.tsx
45 push:
42 push:
46 - meta_content_scope: comment.line.double-slash.tsx
43 - meta_content_scope: comment.line.double-slash.tsx
47− - match: (?=^)
44+ - match: (?=$)
48 pop: true
45 pop: true
49 access-modifier:
46 access-modifier:
50− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
47+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
51 scope: storage.modifier.tsx
48 scope: storage.modifier.tsx
52 after-operator-block-as-object-literal:
49 after-operator-block-as-object-literal:
53 - match: '(?<!\+\+|--)(?<=[:=(,\[?+!>]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)'
50 - match: '(?<!\+\+|--)(?<=[:=(,\[?+!>]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)'
@@ -109,8 +106,8 @@ contexts:
109 (?=
106 (?=
110 # sure shot arrow functions even if => is on new line
107 # sure shot arrow functions even if => is on new line
111 (
108 (
112− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
109+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
113− [(]\s*
110+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
114 (
111 (
115 ([)]\s*:) | # ():
112 ([)]\s*:) | # ():
116 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
113 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -121,9 +118,9 @@ contexts:
121 ) |
118 ) |
122 # arrow function possible to detect only with => on same line
119 # arrow function possible to detect only with => on same line
123 (
120 (
124− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
121+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
125− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
122+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
126− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
123+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
127 \s*=> # arrow operator
124 \s*=> # arrow operator
128 )
125 )
129 )
126 )
@@ -138,13 +135,15 @@ contexts:
138 - include: type-parameters
135 - include: type-parameters
139 - include: function-parameters
136 - include: function-parameters
140 - include: arrow-return-type
137 - include: arrow-return-type
138+ - include: possibly-arrow-return-type
141 - match: "=>"
139 - match: "=>"
142 captures:
140 captures:
143 0: storage.type.function.arrow.tsx
141 0: storage.type.function.arrow.tsx
144 push:
142 push:
145 - meta_scope: meta.arrow.tsx
143 - meta_scope: meta.arrow.tsx
146− - match: '(?<=\}|\S)(?<!=>)|((?!\{)(?=\S))'
144+ - match: '((?<=\}|\S)(?<!=>)|((?!\{)(?=\S)))(?!\/[\/\*])'
147 pop: true
145 pop: true
146+ - include: single-line-comment-consuming-line-ending
148 - include: decl-block
147 - include: decl-block
149 - include: expression
148 - include: expression
150 arrow-return-type:
149 arrow-return-type:
@@ -170,6 +169,8 @@ contexts:
170 binding-element:
169 binding-element:
171 - include: comment
170 - include: comment
172 - include: string
171 - include: string
172+ - include: numeric-literal
173+ - include: regex
173 - include: object-binding-pattern
174 - include: object-binding-pattern
174 - include: array-binding-pattern
175 - include: array-binding-pattern
175 - include: destructuring-variable-rest
176 - include: destructuring-variable-rest
@@ -177,6 +178,8 @@ contexts:
177 binding-element-const:
178 binding-element-const:
178 - include: comment
179 - include: comment
179 - include: string
180 - include: string
181+ - include: numeric-literal
182+ - include: regex
180 - include: object-binding-pattern-const
183 - include: object-binding-pattern-const
181 - include: array-binding-pattern-const
184 - include: array-binding-pattern-const
182 - include: destructuring-variable-rest-const
185 - include: destructuring-variable-rest-const
@@ -200,11 +203,12 @@ contexts:
200 cast:
203 cast:
201 - include: jsx
204 - include: jsx
202 class-declaration:
205 class-declaration:
203− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])'
206+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])'
204 captures:
207 captures:
205 1: keyword.control.export.tsx
208 1: keyword.control.export.tsx
206 2: storage.modifier.tsx
209 2: storage.modifier.tsx
207− 3: storage.type.class.tsx
210+ 3: storage.modifier.tsx
211+ 4: storage.type.class.tsx
208 push:
212 push:
209 - meta_scope: meta.class.tsx
213 - meta_scope: meta.class.tsx
210 - match: '(?<=\})'
214 - match: '(?<=\})'
@@ -219,9 +223,10 @@ contexts:
219 - include: type-parameters
223 - include: type-parameters
220 - include: class-or-interface-body
224 - include: class-or-interface-body
221 class-expression:
225 class-expression:
222− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(class)\b(?=\s+|[<{]|\/[\/*])'
226+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[<{]|\/[\/*])'
223 captures:
227 captures:
224− 1: storage.type.class.tsx
228+ 1: storage.modifier.tsx
229+ 2: storage.type.class.tsx
225 push:
230 push:
226 - meta_scope: meta.class.tsx
231 - meta_scope: meta.class.tsx
227 - match: '(?<=\})'
232 - match: '(?<=\})'
@@ -238,6 +243,11 @@ contexts:
238 pop: true
243 pop: true
239 - include: comment
244 - include: comment
240 - include: decorator
245 - include: decorator
246+ - match: (?<=:)\s*
247+ push:
248+ - match: '(?=\s|[;),}\]:\-\+]|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
249+ pop: true
250+ - include: expression
241 - include: method-declaration
251 - include: method-declaration
242 - include: indexer-declaration
252 - include: indexer-declaration
243 - include: field-declaration
253 - include: field-declaration
@@ -284,9 +294,15 @@ contexts:
284 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
294 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
285 scope: keyword.control.loop.tsx
295 scope: keyword.control.loop.tsx
286 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
296 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
287− scope: keyword.control.flow.tsx
297+ captures:
298+ 0: keyword.control.flow.tsx
299+ push:
300+ - match: '(?=[;}]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
301+ pop: true
302+ - include: expression
288 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
303 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
289 scope: keyword.control.switch.tsx
304 scope: keyword.control.switch.tsx
305+ - include: if-statement
290 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
306 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
291 scope: keyword.control.conditional.tsx
307 scope: keyword.control.conditional.tsx
292 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
308 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
@@ -295,8 +311,6 @@ contexts:
295 scope: keyword.control.tsx
311 scope: keyword.control.tsx
296 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
312 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
297 scope: keyword.other.debugger.tsx
313 scope: keyword.other.debugger.tsx
298− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(declare)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
299− scope: storage.modifier.tsx
300 decl-block:
314 decl-block:
301 - match: '\{'
315 - match: '\{'
302 captures:
316 captures:
@@ -320,6 +334,8 @@ contexts:
320 - include: import-equals-declaration
334 - include: import-equals-declaration
321 - include: import-declaration
335 - include: import-declaration
322 - include: export-declaration
336 - include: export-declaration
337+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(declare|export)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
338+ scope: storage.modifier.tsx
323 decorator:
339 decorator:
324 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))\@'
340 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))\@'
325 captures:
341 captures:
@@ -333,7 +349,7 @@ contexts:
333 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
349 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
334 push:
350 push:
335 - meta_scope: meta.object-binding-pattern-variable.tsx
351 - meta_scope: meta.object-binding-pattern-variable.tsx
336− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
352+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
337 pop: true
353 pop: true
338 - include: object-binding-pattern-const
354 - include: object-binding-pattern-const
339 - include: type-annotation
355 - include: type-annotation
@@ -341,15 +357,16 @@ contexts:
341 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
357 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
342 push:
358 push:
343 - meta_scope: meta.array-binding-pattern-variable.tsx
359 - meta_scope: meta.array-binding-pattern-variable.tsx
344− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
360+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
345 pop: true
361 pop: true
346 - include: array-binding-pattern-const
362 - include: array-binding-pattern-const
347 - include: type-annotation
363 - include: type-annotation
348 - include: comment
364 - include: comment
349 destructuring-parameter:
365 destructuring-parameter:
350− - match: '(?<!=|:)\s*(\{)'
366+ - match: '(?<!=|:)\s*(?:(\.\.\.)\s*)?(\{)'
351 captures:
367 captures:
352− 1: punctuation.definition.binding-pattern.object.tsx
368+ 1: keyword.operator.rest.tsx
369+ 2: punctuation.definition.binding-pattern.object.tsx
353 push:
370 push:
354 - meta_scope: meta.parameter.object-binding-pattern.tsx
371 - meta_scope: meta.parameter.object-binding-pattern.tsx
355 - match: '\}'
372 - match: '\}'
@@ -357,9 +374,10 @@ contexts:
357 0: punctuation.definition.binding-pattern.object.tsx
374 0: punctuation.definition.binding-pattern.object.tsx
358 pop: true
375 pop: true
359 - include: parameter-object-binding-element
376 - include: parameter-object-binding-element
360− - match: '(?<!=|:)\s*(\[)'
377+ - match: '(?<!=|:)\s*(?:(\.\.\.)\s*)?(\[)'
361 captures:
378 captures:
362− 1: punctuation.definition.binding-pattern.array.tsx
379+ 1: keyword.operator.rest.tsx
380+ 2: punctuation.definition.binding-pattern.array.tsx
363 push:
381 push:
364 - meta_scope: meta.paramter.array-binding-pattern.tsx
382 - meta_scope: meta.paramter.array-binding-pattern.tsx
365 - match: '\]'
383 - match: '\]'
@@ -377,7 +395,7 @@ contexts:
377 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
395 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)'
378 push:
396 push:
379 - meta_scope: meta.object-binding-pattern-variable.tsx
397 - meta_scope: meta.object-binding-pattern-variable.tsx
380− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
398+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
381 pop: true
399 pop: true
382 - include: object-binding-pattern
400 - include: object-binding-pattern
383 - include: type-annotation
401 - include: type-annotation
@@ -385,7 +403,7 @@ contexts:
385 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
403 - match: '(?<!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)'
386 push:
404 push:
387 - meta_scope: meta.array-binding-pattern-variable.tsx
405 - meta_scope: meta.array-binding-pattern-variable.tsx
388− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
406+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
389 pop: true
407 pop: true
390 - include: array-binding-pattern
408 - include: array-binding-pattern
391 - include: type-annotation
409 - include: type-annotation
@@ -401,12 +419,12 @@ contexts:
401 1: keyword.operator.rest.tsx
419 1: keyword.operator.rest.tsx
402 2: meta.definition.variable.tsx variable.other.constant.tsx
420 2: meta.definition.variable.tsx variable.other.constant.tsx
403 directives:
421 directives:
404− - match: '^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name)\s*=\s*((\''([^\''\\]|\\\''|\\)*\'')|(\"([^\"\\]|\\\"|\\)*\")))+\s*/>\s*$)'
422+ - match: '^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name)\s*=\s*((\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$)'
405 captures:
423 captures:
406 1: punctuation.definition.comment.tsx
424 1: punctuation.definition.comment.tsx
407 push:
425 push:
408 - meta_scope: comment.line.triple-slash.directive.tsx
426 - meta_scope: comment.line.triple-slash.directive.tsx
409− - match: (?=^)
427+ - match: (?=$)
410 pop: true
428 pop: true
411 - match: (<)(reference|amd-dependency|amd-module)
429 - match: (<)(reference|amd-dependency|amd-module)
412 captures:
430 captures:
@@ -668,13 +686,18 @@ contexts:
668 captures:
686 captures:
669 1: punctuation.definition.block.tag.jsdoc
687 1: punctuation.definition.block.tag.jsdoc
670 - include: inline-tags
688 - include: inline-tags
689+ - match: '((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\s+)'
690+ captures:
691+ 1: storage.type.class.jsdoc
692+ 2: punctuation.definition.block.tag.jsdoc
671 enum-declaration:
693 enum-declaration:
672− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)'
694+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)'
673 captures:
695 captures:
674 1: keyword.control.export.tsx
696 1: keyword.control.export.tsx
675 2: storage.modifier.tsx
697 2: storage.modifier.tsx
676− 3: storage.type.enum.tsx
698+ 3: storage.modifier.tsx
677− 4: entity.name.type.enum.tsx
699+ 4: storage.type.enum.tsx
700+ 5: entity.name.type.enum.tsx
678 push:
701 push:
679 - meta_scope: meta.enum.declaration.tsx
702 - meta_scope: meta.enum.declaration.tsx
680 - match: '(?<=\})'
703 - match: '(?<=\})'
@@ -697,7 +720,7 @@ contexts:
697 pop: true
720 pop: true
698 - include: comment
721 - include: comment
699 - include: variable-initializer
722 - include: variable-initializer
700− - match: '(?=((\''([^\''\\]|\\\''|\\)*\'')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\])))'
723+ - match: '(?=((\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\])))'
701 push:
724 push:
702 - match: '(?=,|\}|$)'
725 - match: '(?=,|\}|$)'
703 pop: true
726 pop: true
@@ -713,22 +736,25 @@ contexts:
713 2: keyword.control.as.tsx
736 2: keyword.control.as.tsx
714 3: storage.type.namespace.tsx
737 3: storage.type.namespace.tsx
715 4: entity.name.type.module.tsx
738 4: entity.name.type.module.tsx
716− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))'
739+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:\s+(type))?(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))'
717 captures:
740 captures:
718 1: keyword.control.export.tsx
741 1: keyword.control.export.tsx
719− 2: keyword.operator.assignment.tsx
742+ 2: keyword.control.type.tsx
720− 3: keyword.control.default.tsx
743+ 3: keyword.operator.assignment.tsx
744+ 4: keyword.control.default.tsx
721 push:
745 push:
722 - meta_scope: meta.export.default.tsx
746 - meta_scope: meta.export.default.tsx
723− - match: (?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
747+ - match: (?=$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))
724 pop: true
748 pop: true
749+ - include: interface-declaration
725 - include: expression
750 - include: expression
726− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?!\s*:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
751+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(export)(?:\s+(type))?\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))'
727 captures:
752 captures:
728− 0: keyword.control.export.tsx
753+ 1: keyword.control.export.tsx
754+ 2: keyword.control.type.tsx
729 push:
755 push:
730 - meta_scope: meta.export.tsx
756 - meta_scope: meta.export.tsx
731− - match: (?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
757+ - match: (?=$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))
732 pop: true
758 pop: true
733 - include: import-export-declaration
759 - include: import-export-declaration
734 expression:
760 expression:
@@ -737,7 +763,105 @@ contexts:
737 - include: expressionPunctuations
763 - include: expressionPunctuations
738 expression-inside-possibly-arrow-parens:
764 expression-inside-possibly-arrow-parens:
739 - include: expressionWithoutIdentifiers
765 - include: expressionWithoutIdentifiers
740− - include: function-parameters-body
766+ - include: comment
767+ - include: string
768+ - include: decorator
769+ - include: destructuring-parameter
770+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)'
771+ captures:
772+ 1: storage.modifier.tsx
773+ - match: |-
774+ (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
775+ # function assignment |
776+ (=\s*(
777+ ((async\s+)?(
778+ (function\s*[(<*]) |
779+ (function\s+) |
780+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
781+ )) |
782+ ((async\s*)?(
783+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
784+ # sure shot arrow functions even if => is on new line
785+ (
786+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
787+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
788+ (
789+ ([)]\s*:) | # ():
790+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
791+ )
792+ ) |
793+ (
794+ [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
795+ ) |
796+ # arrow function possible to detect only with => on same line
797+ (
798+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
799+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
800+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
801+ \s*=> # arrow operator
802+ )
803+ ))
804+ )) |
805+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
806+ (:\s*(
807+ (<) |
808+ ([(]\s*(
809+ ([)]) |
810+ (\.\.\.) |
811+ ([_$[:alnum:]]+\s*(
812+ ([:,?=])|
813+ ([)]\s*=>)
814+ ))
815+ ))
816+ )) |
817+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
818+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
819+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
820+ ((async\s+)?(
821+ (function\s*[(<*]) |
822+ (function\s+) |
823+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
824+ )) |
825+ ((async\s*)?(
826+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
827+ # sure shot arrow functions even if => is on new line
828+ (
829+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
830+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
831+ (
832+ ([)]\s*:) | # ():
833+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
834+ )
835+ ) |
836+ (
837+ [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
838+ ) |
839+ # arrow function possible to detect only with => on same line
840+ (
841+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
842+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
843+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
844+ \s*=> # arrow operator
845+ )
846+ ))
847+ )))
848+ captures:
849+ 1: storage.modifier.tsx
850+ 2: keyword.operator.rest.tsx
851+ 3: entity.name.function.tsx variable.language.this.tsx
852+ 4: entity.name.function.tsx
853+ 5: keyword.operator.optional.tsx
854+ - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)'
855+ captures:
856+ 1: storage.modifier.tsx
857+ 2: keyword.operator.rest.tsx
858+ 3: variable.parameter.tsx variable.language.this.tsx
859+ 4: variable.parameter.tsx
860+ 5: keyword.operator.optional.tsx
861+ - include: type-annotation
862+ - include: variable-initializer
863+ - match: ","
864+ scope: punctuation.separator.parameter.tsx
741 - include: identifiers
865 - include: identifiers
742 - include: expressionPunctuations
866 - include: expressionPunctuations
743 expression-operators:
867 expression-operators:
@@ -769,11 +893,15 @@ contexts:
769 - include: typeof-operator
893 - include: typeof-operator
770 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
894 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
771 scope: keyword.operator.expression.void.tsx
895 scope: keyword.operator.expression.void.tsx
896+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))'
897+ captures:
898+ 1: keyword.control.as.tsx
899+ 2: storage.modifier.tsx
772 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
900 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
773 captures:
901 captures:
774 1: keyword.control.as.tsx
902 1: keyword.control.as.tsx
775 push:
903 push:
776− - match: '(?=$|^|[;,:})\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+))'
904+ - match: '(?=^|[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+)|(\s+\<))'
777 pop: true
905 pop: true
778 - include: type
906 - include: type
779 - match: \.\.\.
907 - match: \.\.\.
@@ -788,7 +916,12 @@ contexts:
788 scope: keyword.operator.comparison.tsx
916 scope: keyword.operator.comparison.tsx
789 - match: <=|>=|<>|<|>
917 - match: <=|>=|<>|<|>
790 scope: keyword.operator.relational.tsx
918 scope: keyword.operator.relational.tsx
791− - match: \!|&&|\|\|
919+ - match: '(?<=[_$[:alnum:]])(\!)\s*(?:(/=)|(?:(/)(?![/*])))'
920+ captures:
921+ 1: keyword.operator.logical.tsx
922+ 2: keyword.operator.assignment.compound.tsx
923+ 3: keyword.operator.arithmetic.tsx
924+ - match: \!|&&|\|\||\?\?
792 scope: keyword.operator.logical.tsx
925 scope: keyword.operator.logical.tsx
793 - match: \&|~|\^|\|
926 - match: \&|~|\^|\|
794 scope: keyword.operator.bitwise.tsx
927 scope: keyword.operator.bitwise.tsx
@@ -800,9 +933,18 @@ contexts:
800 scope: keyword.operator.increment.tsx
933 scope: keyword.operator.increment.tsx
801 - match: '%|\*|/|-|\+'
934 - match: '%|\*|/|-|\+'
802 scope: keyword.operator.arithmetic.tsx
935 scope: keyword.operator.arithmetic.tsx
803− - match: '(?<=[_$[:alnum:])\]])\s*(/)(?![/*])'
936+ - match: '(?<=[_$[:alnum:])\]])\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)+(?:(/=)|(?:(/)(?![/*]))))'
937+ push:
938+ - match: '(?:(/=)|(?:(/)(?!\*([^\*]|(\*[^\/]))*\*\/)))'
939+ captures:
940+ 1: keyword.operator.assignment.compound.tsx
941+ 2: keyword.operator.arithmetic.tsx
942+ pop: true
943+ - include: comment
944+ - match: '(?<=[_$[:alnum:])\]])\s*(?:(/=)|(?:(/)(?![/*])))'
804 captures:
945 captures:
805− 1: keyword.operator.arithmetic.tsx
946+ 1: keyword.operator.assignment.compound.tsx
947+ 2: keyword.operator.arithmetic.tsx
806 expressionPunctuations:
948 expressionPunctuations:
807 - include: punctuation-comma
949 - include: punctuation-comma
808 - include: punctuation-accessor
950 - include: punctuation-accessor
@@ -810,7 +952,6 @@ contexts:
810 - include: jsx
952 - include: jsx
811 - include: string
953 - include: string
812 - include: regex
954 - include: regex
813− - include: template
814 - include: comment
955 - include: comment
815 - include: function-expression
956 - include: function-expression
816 - include: class-expression
957 - include: class-expression
@@ -828,143 +969,123 @@ contexts:
828 - include: paren-expression
969 - include: paren-expression
829 field-declaration:
970 field-declaration:
830 - match: |-
971 - match: |-
831− (?x)(?<!\()(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)\s+)?(?=\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
972+ (?x)(?<!\()(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)\s+)?(?=\s*((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
832− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
973+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
833− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
974+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
834− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
975+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
835− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
976+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
836− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
977+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
837− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
978+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
838− (?:\B(\.)[0-9][0-9_]*\b)| # .1
979+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
839− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
980+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
840− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))
981+ )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|\}|$))
841 captures:
982 captures:
842 1: storage.modifier.tsx
983 1: storage.modifier.tsx
843 push:
984 push:
844 - meta_scope: meta.field.declaration.tsx
985 - meta_scope: meta.field.declaration.tsx
845 - match: |-
986 - match: |-
846− (?x)(?=\}|;|,|$|(^(?!\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
987+ (?x)(?=\}|;|,|$|(^(?!\s*((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
847− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
988+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
848− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
989+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
849− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
990+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
850− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
991+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
851− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
992+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
852− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
993+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
853− (?:\B(\.)[0-9][0-9_]*\b)| # .1
994+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
854− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
995+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
855− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))))|(?<=\})
996+ )(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|$))))|(?<=\})
856 pop: true
997 pop: true
857 - include: variable-initializer
998 - include: variable-initializer
999+ - include: type-annotation
1000+ - include: string
1001+ - include: array-literal
1002+ - include: numeric-literal
1003+ - include: comment
858 - match: |-
1004 - match: |-
859− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1005+ (?x)(\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\?)|(\!))?(?=\s*\s*
860− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1006+ # function assignment |
861− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1007+ (=\s*(
862− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1008+ ((async\s+)?(
863− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1009+ (function\s*[(<*]) |
864− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1010+ (function\s+) |
865− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1011+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
866− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1012+ )) |
867− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1013+ ((async\s*)?(
868− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))
1014+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
869− push:
1015+ # sure shot arrow functions even if => is on new line
870− - match: |-
1016+ (
871− (?x)(?=[};,=]|$|(^(?!\s*((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1017+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
872− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1018+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
873− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1019+ (
874− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1020+ ([)]\s*:) | # ():
875− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1021+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
876− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1022+ )
877− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1023+ ) |
878− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1024+ (
879− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1025+ [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
880− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:))))|(?<=\})
1026+ ) |
881− pop: true
1027+ # arrow function possible to detect only with => on same line
882− - include: type-annotation
1028+ (
883− - include: string
1029+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
884− - include: array-literal
1030+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
885− - include: numeric-literal
1031+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
886− - include: comment
1032+ \s*=> # arrow operator
887− - match: |-
1033+ )
888− (?x)([_$[:alpha:]][_$[:alnum:]]*)(\?)?(?=(\?\s*)?\s*
1034+ ))
889− # function assignment |
1035+ )) |
890− (=\s*(
1036+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
891− ((async\s+)?(
1037+ (:\s*(
892− (function\s*[(<*]) |
1038+ (<) |
893− (function\s+) |
1039+ ([(]\s*(
894− ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1040+ ([)]) |
895− )) |
1041+ (\.\.\.) |
896− ((async\s*)?(
1042+ ([_$[:alnum:]]+\s*(
897− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
1043+ ([:,?=])|
898− # sure shot arrow functions even if => is on new line
1044+ ([)]\s*=>)
899− (
1045+ ))
900− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1046+ ))
901− [(]\s*
1047+ )) |
902− (
1048+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
903− ([)]\s*:) | # ():
1049+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
904− ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1050+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
905− )
1051+ ((async\s+)?(
906− ) |
1052+ (function\s*[(<*]) |
907− (
1053+ (function\s+) |
908− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
1054+ ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
909− ) |
1055+ )) |
910− # arrow function possible to detect only with => on same line
1056+ ((async\s*)?(
911− (
1057+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
912− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
1058+ # sure shot arrow functions even if => is on new line
913− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
1059+ (
914− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
1060+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
915− \s*=> # arrow operator
1061+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
916− )
1062+ (
917− ))
1063+ ([)]\s*:) | # ():
918− )) |
1064+ ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
919− # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
1065+ )
920− (:\s*(
1066+ ) |
921− (<) |
1067+ (
922− ([(]\s*(
1068+ [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
923− ([)]) |
1069+ ) |
924− (\.\.\.) |
1070+ # arrow function possible to detect only with => on same line
925− ([_$[:alnum:]]+\s*(
1071+ (
926− ([:,?=])|
1072+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
927− ([)]\s*=>)
1073+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
928− ))
1074+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
929− ))
1075+ \s*=> # arrow operator
930− )) |
1076+ )
931− (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) |
1077+ ))
932− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
1078+ )))
933− ((async\s+)?(
1079+ captures:
934− (function\s*[(<*]) |
1080+ 1: meta.definition.property.tsx entity.name.function.tsx
935− (function\s+) |
1081+ 2: keyword.operator.optional.tsx
936− ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1082+ 3: keyword.operator.definiteassignment.tsx
937− )) |
1083+ - match: '\#?[_$[:alpha:]][_$[:alnum:]]*'
938− ((async\s*)?(
1084+ scope: meta.definition.property.tsx variable.object.property.tsx
939− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
1085+ - match: \?
940− # sure shot arrow functions even if => is on new line
1086+ scope: keyword.operator.optional.tsx
941− (
1087+ - match: \!
942− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1088+ scope: keyword.operator.definiteassignment.tsx
943− [(]\s*
944− (
945− ([)]\s*:) | # ():
946− ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
947− )
948− ) |
949− (
950− [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends
951− ) |
952− # arrow function possible to detect only with => on same line
953− (
954− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
955− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
956− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
957− \s*=> # arrow operator
958− )
959− ))
960− )))
961− captures:
962− 1: meta.definition.property.tsx entity.name.function.tsx
963− 2: keyword.operator.optional.tsx
964− - match: "[_$[:alpha:]][_$[:alnum:]]*"
965− scope: meta.definition.property.tsx variable.object.property.tsx
966− - match: \?
967− scope: keyword.operator.optional.tsx
968 for-loop:
1089 for-loop:
969 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())'
1090 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())'
970 captures:
1091 captures:
@@ -991,43 +1112,59 @@ contexts:
991 - include: type-parameters
1112 - include: type-parameters
992 - include: function-parameters
1113 - include: function-parameters
993 - include: return-type
1114 - include: return-type
1115+ - include: type-function-return-type
994 - include: decl-block
1116 - include: decl-block
995 - match: \*
1117 - match: \*
996 scope: keyword.generator.asterisk.tsx
1118 scope: keyword.generator.asterisk.tsx
997 function-call:
1119 function-call:
998− - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1120+ - match: '(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
999 push:
1121 push:
1000− - match: '(?<=\))(?!(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1122+ - match: '(?<=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
1001 pop: true
1123 pop: true
1002− - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))'
1124+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))'
1003 push:
1125 push:
1004 - meta_scope: meta.function-call.tsx
1126 - meta_scope: meta.function-call.tsx
1005− - match: '(?=\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()'
1127+ - match: '(?=\s*(?:(\?\.\s*)|(\!))?((<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?\())'
1006 pop: true
1128 pop: true
1007− - include: literal
1129+ - include: function-call-target
1008− - include: support-objects
1009− - include: object-identifiers
1010− - include: punctuation-accessor
1011− - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))import(?=\s*[\(]\s*[\"\''\`]))'
1012− scope: keyword.operator.expression.import.tsx
1013− - match: "([_$[:alpha:]][_$[:alnum:]]*)"
1014− scope: entity.name.function.tsx
1015 - include: comment
1130 - include: comment
1016− - match: \?\.
1131+ - include: function-call-optionals
1017− scope: meta.function-call.tsx punctuation.accessor.optional.tsx
1018 - include: type-arguments
1132 - include: type-arguments
1019 - include: paren-expression
1133 - include: paren-expression
1134+ - match: '(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))(<\s*[\{\[\(]\s*$))'
1135+ push:
1136+ - match: '(?<=\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\)]))(<\s*[\{\[\(]\s*$))'
1137+ pop: true
1138+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))'
1139+ push:
1140+ - meta_scope: meta.function-call.tsx
1141+ - match: '(?=(<\s*[\{\[\(]\s*$))'
1142+ pop: true
1143+ - include: function-call-target
1144+ - include: comment
1145+ - include: function-call-optionals
1146+ - include: type-arguments
1147+ function-call-optionals:
1148+ - match: \?\.
1149+ scope: meta.function-call.tsx punctuation.accessor.optional.tsx
1150+ - match: \!
1151+ scope: meta.function-call.tsx keyword.operator.definiteassignment.tsx
1152+ function-call-target:
1153+ - include: support-function-call-identifiers
1154+ - match: '(\#?[_$[:alpha:]][_$[:alnum:]]*)'
1155+ scope: entity.name.function.tsx
1020 function-declaration:
1156 function-declaration:
1021− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?<=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*'
1157+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?<=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*'
1022 captures:
1158 captures:
1023 1: keyword.control.export.tsx
1159 1: keyword.control.export.tsx
1024− 2: storage.modifier.async.tsx
1160+ 2: storage.modifier.tsx
1025− 3: storage.type.function.tsx
1161+ 3: storage.modifier.async.tsx
1026− 4: keyword.generator.asterisk.tsx
1162+ 4: storage.type.function.tsx
1027− 5: meta.definition.function.tsx entity.name.function.tsx
1163+ 5: keyword.generator.asterisk.tsx
1164+ 6: meta.definition.function.tsx entity.name.function.tsx
1028 push:
1165 push:
1029 - meta_scope: meta.function.tsx
1166 - meta_scope: meta.function.tsx
1030− - match: '(?=$|^|;)|(?<=\})'
1167+ - match: '(?=;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|(?<=\})'
1031 pop: true
1168 pop: true
1032 - include: function-name
1169 - include: function-name
1033 - include: function-body
1170 - include: function-body
@@ -1040,9 +1177,10 @@ contexts:
1040 4: meta.definition.function.tsx entity.name.function.tsx
1177 4: meta.definition.function.tsx entity.name.function.tsx
1041 push:
1178 push:
1042 - meta_scope: meta.function.expression.tsx
1179 - meta_scope: meta.function.expression.tsx
1043− - match: '(?<=\})'
1180+ - match: '(?=;)|(?<=\})'
1044 pop: true
1181 pop: true
1045 - include: function-name
1182 - include: function-name
1183+ - include: single-line-comment-consuming-line-ending
1046 - include: function-body
1184 - include: function-body
1047 function-name:
1185 function-name:
1048 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1186 - match: "[_$[:alpha:]][_$[:alnum:]]*"
@@ -1060,10 +1198,11 @@ contexts:
1060 - include: function-parameters-body
1198 - include: function-parameters-body
1061 function-parameters-body:
1199 function-parameters-body:
1062 - include: comment
1200 - include: comment
1201+ - include: string
1063 - include: decorator
1202 - include: decorator
1064 - include: destructuring-parameter
1203 - include: destructuring-parameter
1065 - include: parameter-name
1204 - include: parameter-name
1066− - include: type-annotation
1205+ - include: parameter-type-annotation
1067 - include: variable-initializer
1206 - include: variable-initializer
1068 - match: ","
1207 - match: ","
1069 scope: punctuation.separator.parameter.tsx
1208 scope: punctuation.separator.parameter.tsx
@@ -1077,11 +1216,11 @@ contexts:
1077 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1216 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1078 )) |
1217 )) |
1079 ((async\s*)?(
1218 ((async\s*)?(
1080− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
1219+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1081 # sure shot arrow functions even if => is on new line
1220 # sure shot arrow functions even if => is on new line
1082 (
1221 (
1083− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
1222+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1084− [(]\s*
1223+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1085 (
1224 (
1086 ([)]\s*:) | # ():
1225 ([)]\s*:) | # ():
1087 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1226 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -1092,9 +1231,9 @@ contexts:
1092 ) |
1231 ) |
1093 # arrow function possible to detect only with => on same line
1232 # arrow function possible to detect only with => on same line
1094 (
1233 (
1095− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
1234+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1096− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
1235+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1097− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
1236+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1098 \s*=> # arrow operator
1237 \s*=> # arrow operator
1099 )
1238 )
1100 ))
1239 ))
@@ -1103,12 +1242,12 @@ contexts:
1103 1: punctuation.accessor.tsx
1242 1: punctuation.accessor.tsx
1104 2: punctuation.accessor.optional.tsx
1243 2: punctuation.accessor.optional.tsx
1105 3: entity.name.function.tsx
1244 3: entity.name.function.tsx
1106− - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])'
1245+ - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])'
1107 captures:
1246 captures:
1108 1: punctuation.accessor.tsx
1247 1: punctuation.accessor.tsx
1109 2: punctuation.accessor.optional.tsx
1248 2: punctuation.accessor.optional.tsx
1110 3: variable.other.constant.property.tsx
1249 3: variable.other.constant.property.tsx
1111− - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([_$[:alpha:]][_$[:alnum:]]*)'
1250+ - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[_$[:alpha:]][_$[:alnum:]]*)'
1112 captures:
1251 captures:
1113 1: punctuation.accessor.tsx
1252 1: punctuation.accessor.tsx
1114 2: punctuation.accessor.optional.tsx
1253 2: punctuation.accessor.optional.tsx
@@ -1117,15 +1256,46 @@ contexts:
1117 scope: variable.other.constant.tsx
1256 scope: variable.other.constant.tsx
1118 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1257 - match: "[_$[:alpha:]][_$[:alnum:]]*"
1119 scope: variable.other.readwrite.tsx
1258 scope: variable.other.readwrite.tsx
1259+ if-statement:
1260+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?=\bif\s*(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))\s*(?!\{))'
1261+ push:
1262+ - match: '(?=;|$|\})'
1263+ pop: true
1264+ - include: comment
1265+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(if)\s*(\()'
1266+ captures:
1267+ 1: keyword.control.conditional.tsx
1268+ 2: meta.brace.round.tsx
1269+ push:
1270+ - match: \)
1271+ captures:
1272+ 0: meta.brace.round.tsx
1273+ pop: true
1274+ - include: expression
1275+ - match: '(?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
1276+ captures:
1277+ 0: punctuation.definition.string.begin.tsx
1278+ push:
1279+ - meta_scope: string.regexp.tsx
1280+ - match: "(/)([dgimsuy]*)"
1281+ captures:
1282+ 1: punctuation.definition.string.end.tsx
1283+ 2: keyword.other.tsx
1284+ pop: true
1285+ - include: regexp
1286+ - include: statements
1120 import-declaration:
1287 import-declaration:
1121− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1288+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type)(?!\s+from))?(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1122 captures:
1289 captures:
1123 1: keyword.control.export.tsx
1290 1: keyword.control.export.tsx
1124− 2: keyword.control.import.tsx
1291+ 2: storage.modifier.tsx
1292+ 3: keyword.control.import.tsx
1293+ 4: keyword.control.type.tsx
1125 push:
1294 push:
1126 - meta_scope: meta.import.tsx
1295 - meta_scope: meta.import.tsx
1127 - match: '(?<!^import|[^\._$[:alnum:]]import)(?=;|$|^)'
1296 - match: '(?<!^import|[^\._$[:alnum:]]import)(?=;|$|^)'
1128 pop: true
1297 pop: true
1298+ - include: single-line-comment-consuming-line-ending
1129 - include: comment
1299 - include: comment
1130 - include: string
1300 - include: string
1131 - match: '(?<=^import|[^\._$[:alnum:]]import)(?!\s*["''])'
1301 - match: '(?<=^import|[^\._$[:alnum:]]import)(?!\s*["''])'
@@ -1137,14 +1307,16 @@ contexts:
1137 - include: import-export-declaration
1307 - include: import-export-declaration
1138 - include: import-export-declaration
1308 - include: import-export-declaration
1139 import-equals-declaration:
1309 import-equals-declaration:
1140− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()'
1310+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()'
1141 captures:
1311 captures:
1142 1: keyword.control.export.tsx
1312 1: keyword.control.export.tsx
1143− 2: keyword.control.import.tsx
1313+ 2: storage.modifier.tsx
1144− 3: variable.other.readwrite.alias.tsx
1314+ 3: keyword.control.import.tsx
1145− 4: keyword.operator.assignment.tsx
1315+ 4: keyword.control.type.tsx
1146− 5: keyword.control.require.tsx
1316+ 5: variable.other.readwrite.alias.tsx
1147− 6: meta.brace.round.tsx
1317+ 6: keyword.operator.assignment.tsx
1318+ 7: keyword.control.require.tsx
1319+ 8: meta.brace.round.tsx
1148 push:
1320 push:
1149 - meta_scope: meta.import-equals.external.tsx
1321 - meta_scope: meta.import-equals.external.tsx
1150 - match: \)
1322 - match: \)
@@ -1153,16 +1325,19 @@ contexts:
1153 pop: true
1325 pop: true
1154 - include: comment
1326 - include: comment
1155 - include: string
1327 - include: string
1156− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(import)\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)'
1328+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)'
1157 captures:
1329 captures:
1158 1: keyword.control.export.tsx
1330 1: keyword.control.export.tsx
1159− 2: keyword.control.import.tsx
1331+ 2: storage.modifier.tsx
1160− 3: variable.other.readwrite.alias.tsx
1332+ 3: keyword.control.import.tsx
1161− 4: keyword.operator.assignment.tsx
1333+ 4: keyword.control.type.tsx
1334+ 5: variable.other.readwrite.alias.tsx
1335+ 6: keyword.operator.assignment.tsx
1162 push:
1336 push:
1163 - meta_scope: meta.import-equals.internal.tsx
1337 - meta_scope: meta.import-equals.internal.tsx
1164 - match: (?=;|$|^)
1338 - match: (?=;|$|^)
1165 pop: true
1339 pop: true
1340+ - include: single-line-comment-consuming-line-ending
1166 - include: comment
1341 - include: comment
1167 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
1342 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
1168 captures:
1343 captures:
@@ -1184,7 +1359,7 @@ contexts:
1184 - include: import-export-clause
1359 - include: import-export-clause
1185 import-export-clause:
1360 import-export-clause:
1186 - include: comment
1361 - include: comment
1187− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*))\s+(as)\s+(?:(\bdefault(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(\b[_$[:alpha:]][_$[:alnum:]]*))'
1362+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*))'
1188 captures:
1363 captures:
1189 1: keyword.control.default.tsx
1364 1: keyword.control.default.tsx
1190 2: constant.language.import-export-all.tsx
1365 2: constant.language.import-export-all.tsx
@@ -1236,6 +1411,9 @@ contexts:
1236 2: keyword.operator.type.modifier.tsx
1411 2: keyword.operator.type.modifier.tsx
1237 3: keyword.operator.optional.tsx
1412 3: keyword.operator.optional.tsx
1238 pop: true
1413 pop: true
1414+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
1415+ captures:
1416+ 1: keyword.control.as.tsx
1239 - include: type
1417 - include: type
1240 inline-tags:
1418 inline-tags:
1241 - match: '(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))'
1419 - match: '(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))'
@@ -1267,15 +1445,16 @@ contexts:
1267 captures:
1445 captures:
1268 1: keyword.operator.expression.instanceof.tsx
1446 1: keyword.operator.expression.instanceof.tsx
1269 push:
1447 push:
1270− - match: '(?<=\))|(?=[;),}\]:?]|\|\||\&\&|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1448+ - match: '(?<=\))|(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|(([\&\~\^\|]\s*)?[_$[:alpha:]][_$[:alnum:]]*\s+instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1271 pop: true
1449 pop: true
1272 - include: type
1450 - include: type
1273 interface-declaration:
1451 interface-declaration:
1274− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(export)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])'
1452+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])'
1275 captures:
1453 captures:
1276 1: keyword.control.export.tsx
1454 1: keyword.control.export.tsx
1277 2: storage.modifier.tsx
1455 2: storage.modifier.tsx
1278− 3: storage.type.interface.tsx
1456+ 3: storage.modifier.tsx
1457+ 4: storage.type.interface.tsx
1279 push:
1458 push:
1280 - meta_scope: meta.interface.tsx
1459 - meta_scope: meta.interface.tsx
1281 - match: '(?<=\})'
1460 - match: '(?<=\})'
@@ -1323,7 +1502,7 @@ contexts:
1323 captures:
1502 captures:
1324 0: punctuation.section.embedded.begin.tsx
1503 0: punctuation.section.embedded.begin.tsx
1325 push:
1504 push:
1326− - meta_scope: meta.embedded.expression.tsx
1505+ - meta_content_scope: meta.embedded.expression.tsx
1327 - match: '\}'
1506 - match: '\}'
1328 captures:
1507 captures:
1329 0: punctuation.section.embedded.end.tsx
1508 0: punctuation.section.embedded.end.tsx
@@ -1352,10 +1531,10 @@ contexts:
1352 pop: true
1531 pop: true
1353 - include: jsx-entities
1532 - include: jsx-entities
1354 jsx-tag:
1533 jsx-tag:
1355− - match: '(?=(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))'
1534+ - match: '(?=(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))'
1356 push:
1535 push:
1357 - meta_scope: meta.tag.tsx
1536 - meta_scope: meta.tag.tsx
1358− - match: '(/>)|(?:(</)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1537+ - match: '(/>)|(?:(</)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1359 captures:
1538 captures:
1360 1: punctuation.definition.tag.end.tsx
1539 1: punctuation.definition.tag.end.tsx
1361 2: punctuation.definition.tag.begin.tsx
1540 2: punctuation.definition.tag.begin.tsx
@@ -1365,7 +1544,7 @@ contexts:
1365 6: support.class.component.tsx
1544 6: support.class.component.tsx
1366 7: punctuation.definition.tag.end.tsx
1545 7: punctuation.definition.tag.end.tsx
1367 pop: true
1546 pop: true
1368− - match: '(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>)'
1547+ - match: '(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>)'
1369 captures:
1548 captures:
1370 1: punctuation.definition.tag.begin.tsx
1549 1: punctuation.definition.tag.begin.tsx
1371 2: entity.name.tag.namespace.tsx
1550 2: entity.name.tag.namespace.tsx
@@ -1393,8 +1572,8 @@ contexts:
1393 - match: |-
1572 - match: |-
1394 (?x)
1573 (?x)
1395 \s*
1574 \s*
1396− (?:([_$[:alpha:]][-$[:alnum:].]*)(:))?
1575+ (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?
1397− ([_$[:alpha:]][-$[:alnum:]]*)
1576+ ([_$[:alpha:]][-_$[:alnum:]]*)
1398 (?=\s|=|/?>|/\*|//)
1577 (?=\s|=|/?>|/\*|//)
1399 captures:
1578 captures:
1400 1: entity.other.attribute-name.namespace.tsx
1579 1: entity.other.attribute-name.namespace.tsx
@@ -1419,15 +1598,15 @@ contexts:
1419 jsx-tag-in-expression:
1598 jsx-tag-in-expression:
1420 - match: |-
1599 - match: |-
1421 (?x)
1600 (?x)
1422− (?<!\+\+|--)(?<=[({\[,?=>:*]|&&|\|\||\?|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*
1601+ (?<!\+\+|--)(?<=[({\[,?=>:*]|&&|\|\||\?|\*\/|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*
1423 (?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
1602 (?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
1424− (?=(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))
1603+ (?=(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))
1425 push:
1604 push:
1426− - match: '(?!(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))'
1605+ - match: '(?!(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))(?=((<\s*)|(\s+))(?!\?)|\/?>))'
1427 pop: true
1606 pop: true
1428 - include: jsx-tag
1607 - include: jsx-tag
1429 jsx-tag-without-attributes:
1608 jsx-tag-without-attributes:
1430− - match: '(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))?\s*(>)'
1609+ - match: '(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))?\s*(>)'
1431 captures:
1610 captures:
1432 1: punctuation.definition.tag.begin.tsx
1611 1: punctuation.definition.tag.begin.tsx
1433 2: entity.name.tag.namespace.tsx
1612 2: entity.name.tag.namespace.tsx
@@ -1438,7 +1617,7 @@ contexts:
1438 push:
1617 push:
1439 - meta_scope: meta.tag.without-attributes.tsx
1618 - meta_scope: meta.tag.without-attributes.tsx
1440 - meta_content_scope: meta.jsx.children.tsx
1619 - meta_content_scope: meta.jsx.children.tsx
1441− - match: '(</)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))?\s*(>)'
1620+ - match: '(</)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))?\s*(>)'
1442 captures:
1621 captures:
1443 1: punctuation.definition.tag.begin.tsx
1622 1: punctuation.definition.tag.begin.tsx
1444 2: entity.name.tag.namespace.tsx
1623 2: entity.name.tag.namespace.tsx
@@ -1449,9 +1628,9 @@ contexts:
1449 pop: true
1628 pop: true
1450 - include: jsx-children
1629 - include: jsx-children
1451 jsx-tag-without-attributes-in-expression:
1630 jsx-tag-without-attributes-in-expression:
1452− - match: '(?<!\+\+|--)(?<=[({\[,?=>:*]|&&|\|\||\?|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*(?=(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1631+ - match: '(?<!\+\+|--)(?<=[({\[,?=>:*]|&&|\|\||\?|\*\/|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*(?=(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1453 push:
1632 push:
1454− - match: '(?!(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1633+ - match: '(?!(<)\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\.|-))?\s*(>))'
1455 pop: true
1634 pop: true
1456 - include: jsx-tag-without-attributes
1635 - include: jsx-tag-without-attributes
1457 label:
1636 label:
@@ -1477,25 +1656,27 @@ contexts:
1477 - include: this-literal
1656 - include: this-literal
1478 - include: super-literal
1657 - include: super-literal
1479 method-declaration:
1658 method-declaration:
1480− - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1659+ - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1481 captures:
1660 captures:
1482 1: storage.modifier.tsx
1661 1: storage.modifier.tsx
1483 2: storage.modifier.tsx
1662 2: storage.modifier.tsx
1484− 3: storage.modifier.async.tsx
1663+ 3: storage.modifier.tsx
1485− 4: storage.type.tsx
1664+ 4: storage.modifier.async.tsx
1665+ 5: storage.type.tsx
1486 push:
1666 push:
1487 - meta_scope: meta.method.declaration.tsx
1667 - meta_scope: meta.method.declaration.tsx
1488 - match: '(?=\}|;|,|$)|(?<=\})'
1668 - match: '(?=\}|;|,|$)|(?<=\})'
1489 pop: true
1669 pop: true
1490 - include: method-declaration-name
1670 - include: method-declaration-name
1491 - include: function-body
1671 - include: function-body
1492− - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*[\(\<])'
1672+ - match: '(?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])'
1493 captures:
1673 captures:
1494 1: storage.modifier.tsx
1674 1: storage.modifier.tsx
1495 2: storage.modifier.tsx
1675 2: storage.modifier.tsx
1496− 3: storage.modifier.async.tsx
1676+ 3: storage.modifier.tsx
1497− 4: keyword.operator.new.tsx
1677+ 4: storage.modifier.async.tsx
1498− 5: keyword.generator.asterisk.tsx
1678+ 5: keyword.operator.new.tsx
1679+ 6: keyword.generator.asterisk.tsx
1499 push:
1680 push:
1500 - meta_scope: meta.method.declaration.tsx
1681 - meta_scope: meta.method.declaration.tsx
1501 - match: '(?=\}|;|,|$)|(?<=\})'
1682 - match: '(?=\}|;|,|$)|(?<=\})'
@@ -1503,22 +1684,23 @@ contexts:
1503 - include: method-declaration-name
1684 - include: method-declaration-name
1504 - include: function-body
1685 - include: function-body
1505 - match: |-
1686 - match: |-
1506− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1687+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1507− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1688+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1508− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1689+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1509− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1690+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1510− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1691+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1511− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1692+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1512− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1693+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1513− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1694+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1514− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1695+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1515− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1696+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1516 captures:
1697 captures:
1517 1: storage.modifier.tsx
1698 1: storage.modifier.tsx
1518 2: storage.modifier.tsx
1699 2: storage.modifier.tsx
1519− 3: storage.modifier.async.tsx
1700+ 3: storage.modifier.tsx
1520− 4: storage.type.property.tsx
1701+ 4: storage.modifier.async.tsx
1521− 5: keyword.generator.asterisk.tsx
1702+ 5: storage.type.property.tsx
1703+ 6: keyword.generator.asterisk.tsx
1522 push:
1704 push:
1523 - meta_scope: meta.method.declaration.tsx
1705 - meta_scope: meta.method.declaration.tsx
1524 - match: '(?=\}|;|,|$)|(?<=\})'
1706 - match: '(?=\}|;|,|$)|(?<=\})'
@@ -1527,16 +1709,16 @@ contexts:
1527 - include: function-body
1709 - include: function-body
1528 method-declaration-name:
1710 method-declaration-name:
1529 - match: |-
1711 - match: |-
1530− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1712+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1531− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1713+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1532− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1714+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1533− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1715+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1534− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1716+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1535− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1717+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1536− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1718+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1537− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1719+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1538− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1720+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1539− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\<])
1721+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\<])
1540 push:
1722 push:
1541 - match: (?=\(|\<)
1723 - match: (?=\(|\<)
1542 pop: true
1724 pop: true
@@ -1548,13 +1730,14 @@ contexts:
1548 - match: \?
1730 - match: \?
1549 scope: keyword.operator.optional.tsx
1731 scope: keyword.operator.optional.tsx
1550 namespace-declaration:
1732 namespace-declaration:
1551− - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"''`]))'
1733+ - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"''`]))'
1552 captures:
1734 captures:
1553 1: keyword.control.export.tsx
1735 1: keyword.control.export.tsx
1554− 2: storage.type.namespace.tsx
1736+ 2: storage.modifier.tsx
1737+ 3: storage.type.namespace.tsx
1555 push:
1738 push:
1556 - meta_scope: meta.namespace.declaration.tsx
1739 - meta_scope: meta.namespace.declaration.tsx
1557− - match: '(?<=\})|(?=;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
1740+ - match: '(?<=\})|(?=;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
1558 pop: true
1741 pop: true
1559 - include: comment
1742 - include: comment
1560 - include: string
1743 - include: string
@@ -1568,41 +1751,53 @@ contexts:
1568 1: keyword.operator.new.tsx
1751 1: keyword.operator.new.tsx
1569 push:
1752 push:
1570 - meta_scope: new.expr.tsx
1753 - meta_scope: new.expr.tsx
1571− - match: '(?<=\))|(?=[;),}\]:]|\|\||\&\&|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1754+ - match: '(?<=\))|(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))'
1572 pop: true
1755 pop: true
1573− - include: paren-expression
1756+ - include: expression
1574− - include: class-declaration
1575− - include: type
1576 null-literal:
1757 null-literal:
1577 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1758 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1578 scope: constant.language.null.tsx
1759 scope: constant.language.null.tsx
1579 numeric-literal:
1760 numeric-literal:
1580− - match: '\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$)'
1761+ - match: '\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)'
1581 scope: constant.numeric.hex.tsx
1762 scope: constant.numeric.hex.tsx
1582− - match: '\b(?<!\$)0(b|B)[01][01_]*\b(?!\$)'
1763+ captures:
1764+ 1: storage.type.numeric.bigint.tsx
1765+ - match: '\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)'
1583 scope: constant.numeric.binary.tsx
1766 scope: constant.numeric.binary.tsx
1584− - match: '\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$)'
1767+ captures:
1768+ 1: storage.type.numeric.bigint.tsx
1769+ - match: '\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$)'
1585 scope: constant.numeric.octal.tsx
1770 scope: constant.numeric.octal.tsx
1771+ captures:
1772+ 1: storage.type.numeric.bigint.tsx
1586 - match: |-
1773 - match: |-
1587 (?x)
1774 (?x)
1588 (?<!\$)(?:
1775 (?<!\$)(?:
1589− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1776+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1590− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1777+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1591− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1778+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1592− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1779+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1593− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1780+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1594− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1781+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1595− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1782+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1596− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1783+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1597 )(?!\$)
1784 )(?!\$)
1598 captures:
1785 captures:
1599 0: constant.numeric.decimal.tsx
1786 0: constant.numeric.decimal.tsx
1600 1: meta.delimiter.decimal.period.tsx
1787 1: meta.delimiter.decimal.period.tsx
1601− 2: meta.delimiter.decimal.period.tsx
1788+ 2: storage.type.numeric.bigint.tsx
1602 3: meta.delimiter.decimal.period.tsx
1789 3: meta.delimiter.decimal.period.tsx
1603− 4: meta.delimiter.decimal.period.tsx
1790+ 4: storage.type.numeric.bigint.tsx
1604 5: meta.delimiter.decimal.period.tsx
1791 5: meta.delimiter.decimal.period.tsx
1605− 6: meta.delimiter.decimal.period.tsx
1792+ 6: storage.type.numeric.bigint.tsx
1793+ 7: storage.type.numeric.bigint.tsx
1794+ 8: meta.delimiter.decimal.period.tsx
1795+ 9: storage.type.numeric.bigint.tsx
1796+ 10: meta.delimiter.decimal.period.tsx
1797+ 11: storage.type.numeric.bigint.tsx
1798+ 12: meta.delimiter.decimal.period.tsx
1799+ 13: storage.type.numeric.bigint.tsx
1800+ 14: storage.type.numeric.bigint.tsx
1606 numericConstant-literal:
1801 numericConstant-literal:
1607 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1802 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
1608 scope: constant.language.nan.tsx
1803 scope: constant.language.nan.tsx
@@ -1611,16 +1806,16 @@ contexts:
1611 object-binding-element:
1806 object-binding-element:
1612 - include: comment
1807 - include: comment
1613 - match: |-
1808 - match: |-
1614− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1809+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1615− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1810+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1616− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1811+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1617− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1812+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1618− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1813+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1619− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1814+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1620− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1815+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1621− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1816+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1622− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1817+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1623− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1818+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1624 push:
1819 push:
1625 - match: '(?=,|\})'
1820 - match: '(?=,|\})'
1626 pop: true
1821 pop: true
@@ -1633,16 +1828,16 @@ contexts:
1633 object-binding-element-const:
1828 object-binding-element-const:
1634 - include: comment
1829 - include: comment
1635 - match: |-
1830 - match: |-
1636− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1831+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1637− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1832+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1638− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1833+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1639− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1834+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1640− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1835+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1641− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1836+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1642− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1837+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1643− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1838+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1644− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1839+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1645− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1840+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1646 push:
1841 push:
1647 - match: '(?=,|\})'
1842 - match: '(?=,|\})'
1648 pop: true
1843 pop: true
@@ -1654,16 +1849,16 @@ contexts:
1654 - include: punctuation-comma
1849 - include: punctuation-comma
1655 object-binding-element-propertyName:
1850 object-binding-element-propertyName:
1656 - match: |-
1851 - match: |-
1657− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1852+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1658− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1853+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1659− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1854+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1660− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1855+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1661− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1856+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1662− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1857+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1663− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1858+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1664− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1859+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1665− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1860+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1666− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1861+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
1667 push:
1862 push:
1668 - match: (:)
1863 - match: (:)
1669 captures:
1864 captures:
@@ -1701,9 +1896,9 @@ contexts:
1701 scope: support.class.tsx
1896 scope: support.class.tsx
1702 - match: |-
1897 - match: |-
1703 (?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
1898 (?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
1704− ([[:upper:]][_$[:digit:][:upper:]]*) |
1899+ (\#?[[:upper:]][_$[:digit:][:upper:]]*) |
1705− ([_$[:alpha:]][_$[:alnum:]]*)
1900+ (\#?[_$[:alpha:]][_$[:alnum:]]*)
1706− )(?=\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1901+ )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)
1707 captures:
1902 captures:
1708 1: punctuation.accessor.tsx
1903 1: punctuation.accessor.tsx
1709 2: punctuation.accessor.optional.tsx
1904 2: punctuation.accessor.optional.tsx
@@ -1713,7 +1908,7 @@ contexts:
1713 (?x)(?:
1908 (?x)(?:
1714 ([[:upper:]][_$[:digit:][:upper:]]*) |
1909 ([[:upper:]][_$[:digit:][:upper:]]*) |
1715 ([_$[:alpha:]][_$[:alnum:]]*)
1910 ([_$[:alpha:]][_$[:alnum:]]*)
1716− )(?=\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1911+ )(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)
1717 captures:
1912 captures:
1718 1: variable.other.constant.object.tsx
1913 1: variable.other.constant.object.tsx
1719 2: variable.other.object.tsx
1914 2: variable.other.object.tsx
@@ -1730,16 +1925,16 @@ contexts:
1730 - include: object-member
1925 - include: object-member
1731 object-literal-method-declaration:
1926 object-literal-method-declaration:
1732 - match: |-
1927 - match: |-
1733− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1928+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1734− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1929+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1735− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1930+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1736− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1931+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1737− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1932+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1738− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1933+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1739− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1934+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1740− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1935+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1741− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1936+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1742− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1937+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1743 captures:
1938 captures:
1744 1: storage.modifier.async.tsx
1939 1: storage.modifier.async.tsx
1745 2: storage.type.property.tsx
1940 2: storage.type.property.tsx
@@ -1751,16 +1946,16 @@ contexts:
1751 - include: method-declaration-name
1946 - include: method-declaration-name
1752 - include: function-body
1947 - include: function-body
1753 - match: |-
1948 - match: |-
1754− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
1949+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1755− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
1950+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1756− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
1951+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1757− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
1952+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1758− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
1953+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1759− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
1954+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1760− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
1955+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1761− (?:\B(\.)[0-9][0-9_]*\b)| # .1
1956+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1762− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
1957+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1763− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*[\(\<])
1958+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?[\(])
1764 captures:
1959 captures:
1765 1: storage.modifier.async.tsx
1960 1: storage.modifier.async.tsx
1766 2: storage.type.property.tsx
1961 2: storage.type.property.tsx
@@ -1777,37 +1972,56 @@ contexts:
1777 - meta_scope: meta.object.member.tsx meta.object-literal.key.tsx
1972 - meta_scope: meta.object.member.tsx meta.object-literal.key.tsx
1778 - match: '(?=:)|((?<=[\]])(?=\s*[\(\<]))'
1973 - match: '(?=:)|((?<=[\]])(?=\s*[\(\<]))'
1779 pop: true
1974 pop: true
1975+ - include: comment
1780 - include: array-literal
1976 - include: array-literal
1781− - match: '(?=[\''\"])'
1977+ - match: '(?=[\''\"\`])'
1782 push:
1978 push:
1783 - meta_scope: meta.object.member.tsx meta.object-literal.key.tsx
1979 - meta_scope: meta.object.member.tsx meta.object-literal.key.tsx
1784− - match: '(?=:)|((?<=[\''\"])(?=\s*[\(\<]))'
1980+ - match: '(?=:)|((?<=[\''\"\`])(?=((\s*[\(\<,}])|(\s+(as)\s+))))'
1785 pop: true
1981 pop: true
1982+ - include: comment
1786 - include: string
1983 - include: string
1787− - match: '(?<=[\]\''\"])(?=\s*[\(\<])'
1984+ - match: |-
1985+ (?x)(?=(\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
1986+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1987+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1988+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1989+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1990+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1991+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1992+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1993+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1994+ )(?!\$)))
1995+ push:
1996+ - meta_scope: meta.object.member.tsx meta.object-literal.key.tsx
1997+ - match: '(?=:)|(?=\s*([\(\<,}])|(\s+as\s+))'
1998+ pop: true
1999+ - include: comment
2000+ - include: numeric-literal
2001+ - match: '(?<=[\]\''\"\`])(?=\s*[\(\<])'
1788 push:
2002 push:
1789 - meta_scope: meta.method.declaration.tsx
2003 - meta_scope: meta.method.declaration.tsx
1790 - match: '(?=\}|;|,)|(?<=\})'
2004 - match: '(?=\}|;|,)|(?<=\})'
1791 pop: true
2005 pop: true
1792 - include: function-body
2006 - include: function-body
1793− - match: '(?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)'
2007+ - match: '(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)'
1794 scope: meta.object.member.tsx
2008 scope: meta.object.member.tsx
1795 captures:
2009 captures:
1796 0: meta.object-literal.key.tsx
2010 0: meta.object-literal.key.tsx
1797 1: constant.numeric.decimal.tsx
2011 1: constant.numeric.decimal.tsx
1798 - match: |-
2012 - match: |-
1799− (?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
2013+ (?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*(
1800 ((async\s+)?(
2014 ((async\s+)?(
1801 (function\s*[(<*]) |
2015 (function\s*[(<*]) |
1802 (function\s+) |
2016 (function\s+) |
1803 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2017 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1804 )) |
2018 )) |
1805 ((async\s*)?(
2019 ((async\s*)?(
1806− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
2020+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1807 # sure shot arrow functions even if => is on new line
2021 # sure shot arrow functions even if => is on new line
1808 (
2022 (
1809− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
2023+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1810− [(]\s*
2024+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1811 (
2025 (
1812 ([)]\s*:) | # ():
2026 ([)]\s*:) | # ():
1813 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2027 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -1818,9 +2032,9 @@ contexts:
1818 ) |
2032 ) |
1819 # arrow function possible to detect only with => on same line
2033 # arrow function possible to detect only with => on same line
1820 (
2034 (
1821− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
2035+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1822− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
2036+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1823− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
2037+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1824 \s*=> # arrow operator
2038 \s*=> # arrow operator
1825 )
2039 )
1826 ))
2040 ))
@@ -1829,7 +2043,7 @@ contexts:
1829 captures:
2043 captures:
1830 0: meta.object-literal.key.tsx
2044 0: meta.object-literal.key.tsx
1831 1: entity.name.function.tsx
2045 1: entity.name.function.tsx
1832− - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)'
2046+ - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)'
1833 scope: meta.object.member.tsx
2047 scope: meta.object.member.tsx
1834 captures:
2048 captures:
1835 0: meta.object-literal.key.tsx
2049 0: meta.object-literal.key.tsx
@@ -1841,14 +2055,27 @@ contexts:
1841 - match: '(?=,|\})'
2055 - match: '(?=,|\})'
1842 pop: true
2056 pop: true
1843 - include: expression
2057 - include: expression
1844− - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)'
2058+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$|\/\/|\/\*)'
1845 scope: meta.object.member.tsx
2059 scope: meta.object.member.tsx
1846 captures:
2060 captures:
1847 1: variable.other.readwrite.tsx
2061 1: variable.other.readwrite.tsx
2062+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+(const)(?=\s*([,}]|$))'
2063+ scope: meta.object.member.tsx
2064+ captures:
2065+ 1: keyword.control.as.tsx
2066+ 2: storage.modifier.tsx
2067+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+'
2068+ captures:
2069+ 1: keyword.control.as.tsx
2070+ push:
2071+ - meta_scope: meta.object.member.tsx
2072+ - match: '(?=[;),}\]:?\-\+\>]|\|\||\&\&|\!\=\=|$|^|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(as)\s+))'
2073+ pop: true
2074+ - include: type
1848 - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)'
2075 - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)'
1849 push:
2076 push:
1850 - meta_scope: meta.object.member.tsx
2077 - meta_scope: meta.object.member.tsx
1851− - match: '(?=,|\}|$)'
2078+ - match: '(?=,|\}|$|\/\/|\/\*)'
1852 pop: true
2079 pop: true
1853 - include: expression
2080 - include: expression
1854 - match: ":"
2081 - match: ":"
@@ -1858,7 +2085,7 @@ contexts:
1858 - meta_scope: meta.object.member.tsx
2085 - meta_scope: meta.object.member.tsx
1859 - match: '(?=,|\})'
2086 - match: '(?=,|\})'
1860 pop: true
2087 pop: true
1861− - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)\(\s*([\{\[]\s*)?$)'
2088+ - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1862 captures:
2089 captures:
1863 1: storage.modifier.async.tsx
2090 1: storage.modifier.async.tsx
1864 push:
2091 push:
@@ -1874,7 +2101,7 @@ contexts:
1874 0: meta.brace.round.tsx
2101 0: meta.brace.round.tsx
1875 pop: true
2102 pop: true
1876 - include: expression-inside-possibly-arrow-parens
2103 - include: expression-inside-possibly-arrow-parens
1877− - match: '(?<=:)\s*(async)?\s*(\()(?=\s*([\{\[]\s*)?$)'
2104+ - match: '(?<=:)\s*(async)?\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
1878 captures:
2105 captures:
1879 1: storage.modifier.async.tsx
2106 1: storage.modifier.async.tsx
1880 2: meta.brace.round.tsx
2107 2: meta.brace.round.tsx
@@ -1884,6 +2111,23 @@ contexts:
1884 0: meta.brace.round.tsx
2111 0: meta.brace.round.tsx
1885 pop: true
2112 pop: true
1886 - include: expression-inside-possibly-arrow-parens
2113 - include: expression-inside-possibly-arrow-parens
2114+ - match: (?<=:)\s*(async)?\s*(?=\<\s*$)
2115+ captures:
2116+ 1: storage.modifier.async.tsx
2117+ push:
2118+ - match: (?<=\>)
2119+ pop: true
2120+ - include: type-parameters
2121+ - match: '(?<=\>)\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
2122+ captures:
2123+ 1: meta.brace.round.tsx
2124+ push:
2125+ - match: \)
2126+ captures:
2127+ 0: meta.brace.round.tsx
2128+ pop: true
2129+ - include: expression-inside-possibly-arrow-parens
2130+ - include: possibly-arrow-return-type
1887 - include: expression
2131 - include: expression
1888 - include: punctuation-comma
2132 - include: punctuation-comma
1889 parameter-array-binding-pattern:
2133 parameter-array-binding-pattern:
@@ -1901,16 +2145,18 @@ contexts:
1901 parameter-binding-element:
2145 parameter-binding-element:
1902 - include: comment
2146 - include: comment
1903 - include: string
2147 - include: string
2148+ - include: numeric-literal
2149+ - include: regex
1904 - include: parameter-object-binding-pattern
2150 - include: parameter-object-binding-pattern
1905 - include: parameter-array-binding-pattern
2151 - include: parameter-array-binding-pattern
1906 - include: destructuring-parameter-rest
2152 - include: destructuring-parameter-rest
1907 - include: variable-initializer
2153 - include: variable-initializer
1908 parameter-name:
2154 parameter-name:
1909− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)'
2155+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)'
1910 captures:
2156 captures:
1911 1: storage.modifier.tsx
2157 1: storage.modifier.tsx
1912 - match: |-
2158 - match: |-
1913− (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
2159+ (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
1914 # function assignment |
2160 # function assignment |
1915 (=\s*(
2161 (=\s*(
1916 ((async\s+)?(
2162 ((async\s+)?(
@@ -1919,11 +2165,11 @@ contexts:
1919 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2165 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1920 )) |
2166 )) |
1921 ((async\s*)?(
2167 ((async\s*)?(
1922− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
2168+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1923 # sure shot arrow functions even if => is on new line
2169 # sure shot arrow functions even if => is on new line
1924 (
2170 (
1925− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
2171+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1926− [(]\s*
2172+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1927 (
2173 (
1928 ([)]\s*:) | # ():
2174 ([)]\s*:) | # ():
1929 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2175 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -1934,9 +2180,9 @@ contexts:
1934 ) |
2180 ) |
1935 # arrow function possible to detect only with => on same line
2181 # arrow function possible to detect only with => on same line
1936 (
2182 (
1937− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
2183+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1938− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
2184+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1939− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
2185+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1940 \s*=> # arrow operator
2186 \s*=> # arrow operator
1941 )
2187 )
1942 ))
2188 ))
@@ -1953,19 +2199,20 @@ contexts:
1953 ))
2199 ))
1954 ))
2200 ))
1955 )) |
2201 )) |
1956− (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) |
2202+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
1957− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
2203+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
2204+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
1958 ((async\s+)?(
2205 ((async\s+)?(
1959 (function\s*[(<*]) |
2206 (function\s*[(<*]) |
1960 (function\s+) |
2207 (function\s+) |
1961 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2208 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
1962 )) |
2209 )) |
1963 ((async\s*)?(
2210 ((async\s*)?(
1964− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
2211+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1965 # sure shot arrow functions even if => is on new line
2212 # sure shot arrow functions even if => is on new line
1966 (
2213 (
1967− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
2214+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
1968− [(]\s*
2215+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1969 (
2216 (
1970 ([)]\s*:) | # ():
2217 ([)]\s*:) | # ():
1971 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2218 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -1976,9 +2223,9 @@ contexts:
1976 ) |
2223 ) |
1977 # arrow function possible to detect only with => on same line
2224 # arrow function possible to detect only with => on same line
1978 (
2225 (
1979− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
2226+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
1980− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
2227+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1981− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
2228+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1982 \s*=> # arrow operator
2229 \s*=> # arrow operator
1983 )
2230 )
1984 ))
2231 ))
@@ -1989,7 +2236,7 @@ contexts:
1989 3: entity.name.function.tsx variable.language.this.tsx
2236 3: entity.name.function.tsx variable.language.this.tsx
1990 4: entity.name.function.tsx
2237 4: entity.name.function.tsx
1991 5: keyword.operator.optional.tsx
2238 5: keyword.operator.optional.tsx
1992− - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)'
2239+ - match: '(?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)'
1993 captures:
2240 captures:
1994 1: storage.modifier.tsx
2241 1: storage.modifier.tsx
1995 2: keyword.operator.rest.tsx
2242 2: keyword.operator.rest.tsx
@@ -1999,16 +2246,16 @@ contexts:
1999 parameter-object-binding-element:
2246 parameter-object-binding-element:
2000 - include: comment
2247 - include: comment
2001 - match: |-
2248 - match: |-
2002− (?x)(?=((\b(?<!\$)0(x|X)[0-9a-fA-F][0-9a-fA-F_]*\b(?!\$))|(\b(?<!\$)0(b|B)[01][01_]*\b(?!\$))|(\b(?<!\$)0(o|O)?[0-7][0-7_]*\b(?!\$))|((?<!\$)(?:
2249+ (?x)(?=((\b(?<!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?<!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?<!\$)(?:
2003− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1.1E+3
2250+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
2004− (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*\b)| # 1.E+3
2251+ (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
2005− (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # .1E+3
2252+ (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
2006− (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*\b)| # 1E+3
2253+ (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
2007− (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*\b)| # 1.1
2254+ (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
2008− (?:\b[0-9][0-9_]*(\.)\B)| # 1.
2255+ (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
2009− (?:\B(\.)[0-9][0-9_]*\b)| # .1
2256+ (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
2010− (?:\b[0-9][0-9_]*\b(?!\.)) # 1
2257+ (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
2011− )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
2258+ )(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))
2012 push:
2259 push:
2013 - match: '(?=,|\})'
2260 - match: '(?=,|\})'
2014 pop: true
2261 pop: true
@@ -2029,6 +2276,15 @@ contexts:
2029 0: punctuation.definition.binding-pattern.object.tsx
2276 0: punctuation.definition.binding-pattern.object.tsx
2030 pop: true
2277 pop: true
2031 - include: parameter-object-binding-element
2278 - include: parameter-object-binding-element
2279+ parameter-type-annotation:
2280+ - match: (:)
2281+ captures:
2282+ 1: keyword.operator.type.annotation.tsx
2283+ push:
2284+ - meta_scope: meta.type.annotation.tsx
2285+ - match: "(?=[,)])|(?==[^>])"
2286+ pop: true
2287+ - include: type
2032 paren-expression:
2288 paren-expression:
2033 - match: \(
2289 - match: \(
2034 captures:
2290 captures:
@@ -2040,14 +2296,14 @@ contexts:
2040 pop: true
2296 pop: true
2041 - include: expression
2297 - include: expression
2042 paren-expression-possibly-arrow:
2298 paren-expression-possibly-arrow:
2043− - match: '(?<=[(=,])\s*(async)?(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\(\s*[\{\[]\s*$)'
2299+ - match: '(?<=[(=,])\s*(async)?(?=\s*((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))'
2044 captures:
2300 captures:
2045 1: storage.modifier.async.tsx
2301 1: storage.modifier.async.tsx
2046 push:
2302 push:
2047 - match: (?<=\))
2303 - match: (?<=\))
2048 pop: true
2304 pop: true
2049 - include: paren-expression-possibly-arrow-with-typeparameters
2305 - include: paren-expression-possibly-arrow-with-typeparameters
2050− - match: '(?<=[(=,]|=>)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\()|(<))\s*$)'
2306+ - match: '(?<=[(=,]|=>|^return|[^\._$[:alnum:]]return)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*))?\()|(<))\s*$)'
2051 captures:
2307 captures:
2052 1: storage.modifier.async.tsx
2308 1: storage.modifier.async.tsx
2053 push:
2309 push:
@@ -2067,7 +2323,7 @@ contexts:
2067 pop: true
2323 pop: true
2068 - include: expression-inside-possibly-arrow-parens
2324 - include: expression-inside-possibly-arrow-parens
2069 possibly-arrow-return-type:
2325 possibly-arrow-return-type:
2070− - match: '(?<=\))\s*(:)(?=\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+\s*=>)'
2326+ - match: '(?<=\)|^)\s*(:)(?=\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*=>)'
2071 captures:
2327 captures:
2072 1: meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx
2328 1: meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx
2073 push:
2329 push:
@@ -2114,23 +2370,23 @@ contexts:
2114 pop: true
2370 pop: true
2115 - include: string-character-escape
2371 - include: string-character-escape
2116 regex:
2372 regex:
2117− - match: '(?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))'
2373+ - match: '(?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
2118 captures:
2374 captures:
2119 1: punctuation.definition.string.begin.tsx
2375 1: punctuation.definition.string.begin.tsx
2120 push:
2376 push:
2121 - meta_scope: string.regexp.tsx
2377 - meta_scope: string.regexp.tsx
2122− - match: "(/)([gimsuy]*)"
2378+ - match: "(/)([dgimsuy]*)"
2123 captures:
2379 captures:
2124 1: punctuation.definition.string.end.tsx
2380 1: punctuation.definition.string.end.tsx
2125 2: keyword.other.tsx
2381 2: keyword.other.tsx
2126 pop: true
2382 pop: true
2127 - include: regexp
2383 - include: regexp
2128− - match: '(?<![_$[:alnum:])\]]|\+\+|--|})\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))'
2384+ - match: '((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))'
2129 captures:
2385 captures:
2130 0: punctuation.definition.string.begin.tsx
2386 0: punctuation.definition.string.begin.tsx
2131 push:
2387 push:
2132 - meta_scope: string.regexp.tsx
2388 - meta_scope: string.regexp.tsx
2133− - match: "(/)([gimsuy]*)"
2389+ - match: "(/)([dgimsuy]*)"
2134 captures:
2390 captures:
2135 1: punctuation.definition.string.end.tsx
2391 1: punctuation.definition.string.end.tsx
2136 2: keyword.other.tsx
2392 2: keyword.other.tsx
@@ -2230,10 +2486,24 @@ contexts:
2230 - include: type-object
2486 - include: type-object
2231 - include: type-predicate-operator
2487 - include: type-predicate-operator
2232 - include: type
2488 - include: type
2489+ shebang:
2490+ - match: \A(#!).*(?=$)
2491+ scope: comment.line.shebang.tsx
2492+ captures:
2493+ 1: punctuation.definition.comment.tsx
2494+ single-line-comment-consuming-line-ending:
2495+ - match: '(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)'
2496+ captures:
2497+ 1: punctuation.whitespace.comment.leading.tsx
2498+ 2: comment.line.double-slash.tsx
2499+ 3: punctuation.definition.comment.tsx
2500+ 4: storage.type.internaldeclaration.tsx
2501+ 5: punctuation.decorator.internaldeclaration.tsx
2502+ push:
2503+ - meta_content_scope: comment.line.double-slash.tsx
2504+ - match: (?=^)
2505+ pop: true
2233 statements:
2506 statements:
2234− - include: string
2235− - include: template
2236− - include: comment
2237 - include: declaration
2507 - include: declaration
2238 - include: control-statement
2508 - include: control-statement
2239 - include: after-operator-block-as-object-literal
2509 - include: after-operator-block-as-object-literal
@@ -2241,21 +2511,31 @@ contexts:
2241 - include: label
2511 - include: label
2242 - include: expression
2512 - include: expression
2243 - include: punctuation-semicolon
2513 - include: punctuation-semicolon
2514+ - include: string
2515+ - include: comment
2244 string:
2516 string:
2245 - include: qstring-single
2517 - include: qstring-single
2246 - include: qstring-double
2518 - include: qstring-double
2519+ - include: template
2247 string-character-escape:
2520 string-character-escape:
2248− - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)'
2521+ - match: '\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]+\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)'
2249 scope: constant.character.escape.tsx
2522 scope: constant.character.escape.tsx
2250 super-literal:
2523 super-literal:
2251 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))super\b(?!\$)'
2524 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))super\b(?!\$)'
2252 scope: variable.language.super.tsx
2525 scope: variable.language.super.tsx
2526+ support-function-call-identifiers:
2527+ - include: literal
2528+ - include: support-objects
2529+ - include: object-identifiers
2530+ - include: punctuation-accessor
2531+ - match: '(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))import(?=\s*[\(]\s*[\"\''\`]))'
2532+ scope: keyword.operator.expression.import.tsx
2253 support-objects:
2533 support-objects:
2254 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(arguments)\b(?!\$)'
2534 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(arguments)\b(?!\$)'
2255 scope: variable.language.arguments.tsx
2535 scope: variable.language.arguments.tsx
2256 - match: |-
2536 - match: |-
2257− (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator
2537+ (?x)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array
2258− |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy
2538+ |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy
2259 |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray
2539 |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray
2260 |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)
2540 |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)
2261 scope: support.class.builtin.tsx
2541 scope: support.class.builtin.tsx
@@ -2309,9 +2589,9 @@ contexts:
2309 4: support.variable.property.target.tsx
2589 4: support.variable.property.target.tsx
2310 - match: |-
2590 - match: |-
2311 (?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
2591 (?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
2312− (constructor|length|prototype|__proto__)
2592+ (?:(constructor|length|prototype|__proto__)\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?\())
2313 |
2593 |
2314− (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\b(?!\$)
2594+ (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\b(?!\$)))
2315 captures:
2595 captures:
2316 1: punctuation.accessor.tsx
2596 1: punctuation.accessor.tsx
2317 2: punctuation.accessor.optional.tsx
2597 2: punctuation.accessor.optional.tsx
@@ -2415,7 +2695,7 @@ contexts:
2415 |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary
2695 |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary
2416 |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead
2696 |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead
2417 |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile
2697 |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile
2418− |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?\()
2698+ |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?\()
2419 captures:
2699 captures:
2420 1: punctuation.accessor.tsx
2700 1: punctuation.accessor.tsx
2421 2: punctuation.accessor.optional.tsx
2701 2: punctuation.accessor.optional.tsx
@@ -2539,6 +2819,7 @@ contexts:
2539 captures:
2819 captures:
2540 0: punctuation.definition.block.tsx
2820 0: punctuation.definition.block.tsx
2541 pop: true
2821 pop: true
2822+ - include: comment
2542 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(switch)\s*(\()'
2823 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(switch)\s*(\()'
2543 captures:
2824 captures:
2544 1: keyword.control.switch.tsx
2825 1: keyword.control.switch.tsx
@@ -2581,7 +2862,34 @@ contexts:
2581 0: case-clause.expr.tsx punctuation.definition.section.case-statement.tsx
2862 0: case-clause.expr.tsx punctuation.definition.section.case-statement.tsx
2582 - include: statements
2863 - include: statements
2583 template:
2864 template:
2584− - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)`)'
2865+ - include: template-call
2866+ - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2867+ captures:
2868+ 1: entity.name.function.tagged-template.tsx
2869+ 2: punctuation.definition.string.template.begin.tsx
2870+ push:
2871+ - meta_scope: string.template.tsx
2872+ - match: "`"
2873+ captures:
2874+ 0: punctuation.definition.string.template.end.tsx
2875+ pop: true
2876+ - include: template-substitution-element
2877+ - include: string-character-escape
2878+ template-call:
2879+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?`)'
2880+ push:
2881+ - meta_scope: string.template.tsx
2882+ - match: (?=`)
2883+ pop: true
2884+ - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))'
2885+ push:
2886+ - match: '(?=(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)?`)'
2887+ pop: true
2888+ - include: support-function-call-identifiers
2889+ - match: "([_$[:alpha:]][_$[:alnum:]]*)"
2890+ scope: entity.name.function.tagged-template.tsx
2891+ - include: type-arguments
2892+ - match: '([_$[:alpha:]][_$[:alnum:]]*)?\s*(?=(<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))(([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>|\<\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\''([^\''\\]|\\.)*\'')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?<==)\>)*(?<!=)\>))*(?<!=)\>)*(?<!=)>\s*)`)'
2585 captures:
2893 captures:
2586 1: entity.name.function.tagged-template.tsx
2894 1: entity.name.function.tagged-template.tsx
2587 push:
2895 push:
@@ -2589,6 +2897,20 @@ contexts:
2589 - match: (?=`)
2897 - match: (?=`)
2590 pop: true
2898 pop: true
2591 - include: type-arguments
2899 - include: type-arguments
2900+ template-substitution-element:
2901+ - match: '\$\{'
2902+ captures:
2903+ 0: punctuation.definition.template-expression.begin.tsx
2904+ push:
2905+ - meta_scope: meta.template.expression.tsx
2906+ - meta_content_scope: meta.embedded.line.tsx
2907+ - match: '\}'
2908+ captures:
2909+ 0: punctuation.definition.template-expression.end.tsx
2910+ pop: true
2911+ - include: expression
2912+ template-type:
2913+ - include: template-call
2592 - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2914 - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)"
2593 captures:
2915 captures:
2594 1: entity.name.function.tagged-template.tsx
2916 1: entity.name.function.tagged-template.tsx
@@ -2599,9 +2921,9 @@ contexts:
2599 captures:
2921 captures:
2600 0: punctuation.definition.string.template.end.tsx
2922 0: punctuation.definition.string.template.end.tsx
2601 pop: true
2923 pop: true
2602− - include: template-substitution-element
2924+ - include: template-type-substitution-element
2603 - include: string-character-escape
2925 - include: string-character-escape
2604− template-substitution-element:
2926+ template-type-substitution-element:
2605 - match: '\$\{'
2927 - match: '\$\{'
2606 captures:
2928 captures:
2607 0: punctuation.definition.template-expression.begin.tsx
2929 0: punctuation.definition.template-expression.begin.tsx
@@ -2612,9 +2934,9 @@ contexts:
2612 captures:
2934 captures:
2613 0: punctuation.definition.template-expression.end.tsx
2935 0: punctuation.definition.template-expression.end.tsx
2614 pop: true
2936 pop: true
2615− - include: expression
2937+ - include: type
2616 ternary-expression:
2938 ternary-expression:
2617− - match: '(?!\?\.\s*[^[:digit:]])(\?)'
2939+ - match: '(?!\?\.\s*[^[:digit:]])(\?)(?!\?)'
2618 captures:
2940 captures:
2619 1: keyword.operator.ternary.tsx
2941 1: keyword.operator.ternary.tsx
2620 push:
2942 push:
@@ -2628,7 +2950,7 @@ contexts:
2628 scope: variable.language.this.tsx
2950 scope: variable.language.this.tsx
2629 type:
2951 type:
2630 - include: comment
2952 - include: comment
2631− - include: string
2953+ - include: type-string
2632 - include: numeric-literal
2954 - include: numeric-literal
2633 - include: type-primitive
2955 - include: type-primitive
2634 - include: type-builtin-literals
2956 - include: type-builtin-literals
@@ -2640,24 +2962,36 @@ contexts:
2640 - include: type-fn-type-parameters
2962 - include: type-fn-type-parameters
2641 - include: type-paren-or-function-parameters
2963 - include: type-paren-or-function-parameters
2642 - include: type-function-return-type
2964 - include: type-function-return-type
2965+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
2966+ captures:
2967+ 1: storage.modifier.tsx
2643 - include: type-name
2968 - include: type-name
2644 type-alias-declaration:
2969 type-alias-declaration:
2645− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*'
2970+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*'
2646 captures:
2971 captures:
2647 1: keyword.control.export.tsx
2972 1: keyword.control.export.tsx
2648− 2: storage.type.type.tsx
2973+ 2: storage.modifier.tsx
2649− 3: entity.name.type.alias.tsx
2974+ 3: storage.type.type.tsx
2975+ 4: entity.name.type.alias.tsx
2650 push:
2976 push:
2651 - meta_scope: meta.type.declaration.tsx
2977 - meta_scope: meta.type.declaration.tsx
2652− - match: '(?=\}|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
2978+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2653 pop: true
2979 pop: true
2654 - include: comment
2980 - include: comment
2655 - include: type-parameters
2981 - include: type-parameters
2982+ - match: '(=)\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2983+ captures:
2984+ 1: keyword.operator.assignment.tsx
2985+ 2: keyword.control.intrinsic.tsx
2986+ push:
2987+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2988+ pop: true
2989+ - include: type
2656 - match: (=)\s*
2990 - match: (=)\s*
2657 captures:
2991 captures:
2658 1: keyword.operator.assignment.tsx
2992 1: keyword.operator.assignment.tsx
2659 push:
2993 push:
2660− - match: '(?=\}|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)'
2994+ - match: '(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
2661 pop: true
2995 pop: true
2662 - include: type
2996 - include: type
2663 type-annotation:
2997 type-annotation:
@@ -2687,8 +3021,13 @@ contexts:
2687 captures:
3021 captures:
2688 0: punctuation.definition.typeparameters.end.tsx
3022 0: punctuation.definition.typeparameters.end.tsx
2689 pop: true
3023 pop: true
2690− - include: type
3024+ - include: type-arguments-body
2691− - include: punctuation-comma
3025+ type-arguments-body:
3026+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(_)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3027+ captures:
3028+ 0: keyword.operator.type.tsx
3029+ - include: type
3030+ - include: punctuation-comma
2692 type-builtin-literals:
3031 type-builtin-literals:
2693 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3032 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2694 scope: support.type.builtin.tsx
3033 scope: support.type.builtin.tsx
@@ -2710,13 +3049,19 @@ contexts:
2710 - include: type
3049 - include: type
2711 - include: type
3050 - include: type
2712 type-fn-type-parameters:
3051 type-fn-type-parameters:
2713− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(new)\b(?=\s*\<)'
3052+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(new)\b(?=\s*\<)'
2714− scope: meta.type.constructor.tsx
2715 captures:
3053 captures:
2716− 1: keyword.control.new.tsx
3054+ 1: meta.type.constructor.tsx storage.modifier.tsx
2717− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(new)\b\s*(?=\()'
3055+ 2: meta.type.constructor.tsx keyword.control.new.tsx
3056+ push:
3057+ - match: (?<=>)
3058+ pop: true
3059+ - include: comment
3060+ - include: type-parameters
3061+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(abstract)\s+)?(new)\b\s*(?=\()'
2718 captures:
3062 captures:
2719− 1: keyword.control.new.tsx
3063+ 1: storage.modifier.tsx
3064+ 2: keyword.control.new.tsx
2720 push:
3065 push:
2721 - meta_scope: meta.type.constructor.tsx
3066 - meta_scope: meta.type.constructor.tsx
2722 - match: (?<=\))
3067 - match: (?<=\))
@@ -2767,6 +3112,30 @@ contexts:
2767 - include: type-predicate-operator
3112 - include: type-predicate-operator
2768 - include: type
3113 - include: type
2769 type-name:
3114 type-name:
3115+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(<)'
3116+ captures:
3117+ 1: entity.name.type.module.tsx
3118+ 2: punctuation.accessor.tsx
3119+ 3: punctuation.accessor.optional.tsx
3120+ 4: meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx
3121+ push:
3122+ - meta_content_scope: meta.type.parameters.tsx
3123+ - match: (>)
3124+ captures:
3125+ 1: meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx
3126+ pop: true
3127+ - include: type-arguments-body
3128+ - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(<)'
3129+ captures:
3130+ 1: entity.name.type.tsx
3131+ 2: meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx
3132+ push:
3133+ - meta_content_scope: meta.type.parameters.tsx
3134+ - match: (>)
3135+ captures:
3136+ 1: meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx
3137+ pop: true
3138+ - include: type-arguments-body
2770 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
3139 - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))'
2771 captures:
3140 captures:
2772 1: entity.name.type.module.tsx
3141 1: entity.name.type.module.tsx
@@ -2802,18 +3171,16 @@ contexts:
2802 - include: type
3171 - include: type
2803 type-operators:
3172 type-operators:
2804 - include: typeof-operator
3173 - include: typeof-operator
2805− - match: '(?:([&|])|(=(?!>)))(?=\s*\{)'
3174+ - match: '([&|])(?=\s*\{)'
2806 captures:
3175 captures:
2807− 1: keyword.operator.type.tsx
3176+ 0: keyword.operator.type.tsx
2808− 2: keyword.operator.assignment.tsx
2809 push:
3177 push:
2810 - match: '(?<=\})'
3178 - match: '(?<=\})'
2811 pop: true
3179 pop: true
2812 - include: type-object
3180 - include: type-object
2813− - match: "([&|])|(=(?!>))"
3181+ - match: "[&|]"
2814 captures:
3182 captures:
2815− 1: keyword.operator.type.tsx
3183+ 0: keyword.operator.type.tsx
2816− 2: keyword.operator.assignment.tsx
2817 push:
3184 push:
2818 - match: (?=\S)
3185 - match: (?=\S)
2819 pop: true
3186 pop: true
@@ -2840,6 +3207,8 @@ contexts:
2840 scope: storage.modifier.tsx
3207 scope: storage.modifier.tsx
2841 - include: type
3208 - include: type
2842 - include: punctuation-comma
3209 - include: punctuation-comma
3210+ - match: (=)(?!>)
3211+ scope: keyword.operator.assignment.tsx
2843 type-paren-or-function-parameters:
3212 type-paren-or-function-parameters:
2844 - match: \(
3213 - match: \(
2845 captures:
3214 captures:
@@ -2850,7 +3219,6 @@ contexts:
2850 captures:
3219 captures:
2851 0: meta.brace.round.tsx
3220 0: meta.brace.round.tsx
2852 pop: true
3221 pop: true
2853− - include: destructuring-parameter
2854 - match: |-
3222 - match: |-
2855 (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*(
3223 (?x)(?:(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*(
2856 (<) |
3224 (<) |
@@ -2863,7 +3231,8 @@ contexts:
2863 ))
3231 ))
2864 ))
3232 ))
2865 )) |
3233 )) |
2866− (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))))
3234+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
3235+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))))
2867 captures:
3236 captures:
2868 1: storage.modifier.tsx
3237 1: storage.modifier.tsx
2869 2: keyword.operator.rest.tsx
3238 2: keyword.operator.rest.tsx
@@ -2882,11 +3251,28 @@ contexts:
2882 scope: punctuation.separator.parameter.tsx
3251 scope: punctuation.separator.parameter.tsx
2883 - include: type
3252 - include: type
2884 type-predicate-operator:
3253 type-predicate-operator:
3254+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(asserts)\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s(is)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3255+ captures:
3256+ 1: keyword.operator.type.asserts.tsx
3257+ 2: variable.parameter.tsx variable.language.this.tsx
3258+ 3: variable.parameter.tsx
3259+ 4: keyword.operator.expression.is.tsx
3260+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(asserts)\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3261+ captures:
3262+ 1: keyword.operator.type.asserts.tsx
3263+ 2: variable.parameter.tsx variable.language.this.tsx
3264+ 3: variable.parameter.tsx
3265+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))asserts(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3266+ scope: keyword.operator.type.asserts.tsx
2885 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3267 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2886 scope: keyword.operator.expression.is.tsx
3268 scope: keyword.operator.expression.is.tsx
2887 type-primitive:
3269 type-primitive:
2888− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3270+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2889 scope: support.type.primitive.tsx
3271 scope: support.type.primitive.tsx
3272+ type-string:
3273+ - include: qstring-single
3274+ - include: qstring-double
3275+ - include: template-type
2890 type-tuple:
3276 type-tuple:
2891 - match: '\['
3277 - match: '\['
2892 captures:
3278 captures:
@@ -2897,56 +3283,84 @@ contexts:
2897 captures:
3283 captures:
2898 0: meta.brace.square.tsx
3284 0: meta.brace.square.tsx
2899 pop: true
3285 pop: true
3286+ - match: \.\.\.
3287+ scope: keyword.operator.rest.tsx
3288+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))([_$[:alpha:]][_$[:alnum:]]*)\s*(\?)?\s*(:)'
3289+ captures:
3290+ 1: entity.name.label.tsx
3291+ 2: keyword.operator.optional.tsx
3292+ 3: punctuation.separator.label.tsx
2900 - include: type
3293 - include: type
2901 - include: punctuation-comma
3294 - include: punctuation-comma
2902 typeof-operator:
3295 typeof-operator:
2903 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3296 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2904− scope: keyword.operator.expression.typeof.tsx
3297+ captures:
3298+ 0: keyword.operator.expression.typeof.tsx
3299+ push:
3300+ - match: '(?=[,);}\]=>:&|{\?]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))'
3301+ pop: true
3302+ - include: expression
2905 undefined-literal:
3303 undefined-literal:
2906 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3304 - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
2907 scope: constant.language.undefined.tsx
3305 scope: constant.language.undefined.tsx
2908 var-expr:
3306 var-expr:
2909− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3307+ - match: '(?=(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))'
2910− captures:
2911− 1: keyword.control.export.tsx
2912− 2: storage.type.tsx
2913 push:
3308 push:
2914 - meta_scope: meta.var.expr.tsx
3309 - meta_scope: meta.var.expr.tsx
2915− - match: '((?=;|}|(\s+(of|in)\s+)|^\s*$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)|((?<=\S)(?<!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))'
3310+ - match: '(?!(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?<!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))'
2916 pop: true
3311 pop: true
3312+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
3313+ captures:
3314+ 1: keyword.control.export.tsx
3315+ 2: storage.modifier.tsx
3316+ 3: storage.type.tsx
3317+ push:
3318+ - match: (?=\S)
3319+ pop: true
2917 - include: destructuring-variable
3320 - include: destructuring-variable
2918 - include: var-single-variable
3321 - include: var-single-variable
2919 - include: variable-initializer
3322 - include: variable-initializer
2920 - include: comment
3323 - include: comment
2921− - match: (,)\s*(?!\S)
3324+ - match: (,)\s*((?!\S)|(?=\/\/))
2922 captures:
3325 captures:
2923 1: punctuation.separator.comma.tsx
3326 1: punctuation.separator.comma.tsx
2924 push:
3327 push:
2925− - match: '(?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
3328+ - match: '(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
2926 pop: true
3329 pop: true
3330+ - include: single-line-comment-consuming-line-ending
2927 - include: comment
3331 - include: comment
2928 - include: destructuring-variable
3332 - include: destructuring-variable
2929 - include: var-single-variable
3333 - include: var-single-variable
2930 - include: punctuation-comma
3334 - include: punctuation-comma
2931 - include: punctuation-comma
3335 - include: punctuation-comma
2932− - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))'
3336+ - match: '(?=(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))'
2933 captures:
3337 captures:
2934 1: keyword.control.export.tsx
3338 1: keyword.control.export.tsx
2935− 2: storage.type.tsx
3339+ 2: storage.modifier.tsx
3340+ 3: storage.type.tsx
2936 push:
3341 push:
2937 - meta_scope: meta.var.expr.tsx
3342 - meta_scope: meta.var.expr.tsx
2938− - match: '((?=;|}|(\s+(of|in)\s+)|^\s*$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)|((?<=\S)(?<!^const|[^\._$[:alnum:]]const)(?=\s*$)))'
3343+ - match: '(?!(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?<!^const|[^\._$[:alnum:]]const)(?=\s*$)))'
2939 pop: true
3344 pop: true
3345+ - match: '(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*'
3346+ captures:
3347+ 1: keyword.control.export.tsx
3348+ 2: storage.modifier.tsx
3349+ 3: storage.type.tsx
3350+ push:
3351+ - match: (?=\S)
3352+ pop: true
2940 - include: destructuring-const
3353 - include: destructuring-const
2941 - include: var-single-const
3354 - include: var-single-const
2942 - include: variable-initializer
3355 - include: variable-initializer
2943 - include: comment
3356 - include: comment
2944− - match: (,)\s*(?!\S)
3357+ - match: (,)\s*((?!\S)|(?=\/\/))
2945 captures:
3358 captures:
2946 1: punctuation.separator.comma.tsx
3359 1: punctuation.separator.comma.tsx
2947 push:
3360 push:
2948− - match: '(?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
3361+ - match: '(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))'
2949 pop: true
3362 pop: true
3363+ - include: single-line-comment-consuming-line-ending
2950 - include: comment
3364 - include: comment
2951 - include: destructuring-const
3365 - include: destructuring-const
2952 - include: var-single-const
3366 - include: var-single-const
@@ -2963,11 +3377,11 @@ contexts:
2963 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3377 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
2964 )) |
3378 )) |
2965 ((async\s*)?(
3379 ((async\s*)?(
2966− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
3380+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2967 # sure shot arrow functions even if => is on new line
3381 # sure shot arrow functions even if => is on new line
2968 (
3382 (
2969− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3383+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
2970− [(]\s*
3384+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2971 (
3385 (
2972 ([)]\s*:) | # ():
3386 ([)]\s*:) | # ():
2973 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3387 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -2978,9 +3392,9 @@ contexts:
2978 ) |
3392 ) |
2979 # arrow function possible to detect only with => on same line
3393 # arrow function possible to detect only with => on same line
2980 (
3394 (
2981− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3395+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
2982− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3396+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2983− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3397+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2984 \s*=> # arrow operator
3398 \s*=> # arrow operator
2985 )
3399 )
2986 ))
3400 ))
@@ -2997,19 +3411,20 @@ contexts:
2997 ))
3411 ))
2998 ))
3412 ))
2999 )) |
3413 )) |
3000− (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) |
3414+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
3001− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3415+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
3416+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3002 ((async\s+)?(
3417 ((async\s+)?(
3003 (function\s*[(<*]) |
3418 (function\s*[(<*]) |
3004 (function\s+) |
3419 (function\s+) |
3005 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3420 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3006 )) |
3421 )) |
3007 ((async\s*)?(
3422 ((async\s*)?(
3008− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
3423+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
3009 # sure shot arrow functions even if => is on new line
3424 # sure shot arrow functions even if => is on new line
3010 (
3425 (
3011− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3426+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
3012− [(]\s*
3427+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
3013 (
3428 (
3014 ([)]\s*:) | # ():
3429 ([)]\s*:) | # ():
3015 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3430 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -3020,9 +3435,9 @@ contexts:
3020 ) |
3435 ) |
3021 # arrow function possible to detect only with => on same line
3436 # arrow function possible to detect only with => on same line
3022 (
3437 (
3023− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3438+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
3024− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3439+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
3025− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3440+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
3026 \s*=> # arrow operator
3441 \s*=> # arrow operator
3027 )
3442 )
3028 ))
3443 ))
@@ -3031,7 +3446,7 @@ contexts:
3031 1: meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx
3446 1: meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx
3032 push:
3447 push:
3033 - meta_scope: meta.var-single-variable.expr.tsx
3448 - meta_scope: meta.var-single-variable.expr.tsx
3034− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3449+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3035 pop: true
3450 pop: true
3036 - include: var-single-variable-type-annotation
3451 - include: var-single-variable-type-annotation
3037 - match: "([_$[:alpha:]][_$[:alnum:]]*)"
3452 - match: "([_$[:alpha:]][_$[:alnum:]]*)"
@@ -3039,12 +3454,12 @@ contexts:
3039 1: meta.definition.variable.tsx variable.other.constant.tsx
3454 1: meta.definition.variable.tsx variable.other.constant.tsx
3040 push:
3455 push:
3041 - meta_scope: meta.var-single-variable.expr.tsx
3456 - meta_scope: meta.var-single-variable.expr.tsx
3042− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3457+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3043 pop: true
3458 pop: true
3044 - include: var-single-variable-type-annotation
3459 - include: var-single-variable-type-annotation
3045 var-single-variable:
3460 var-single-variable:
3046 - match: |-
3461 - match: |-
3047− (?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s*
3462+ (?x)([_$[:alpha:]][_$[:alnum:]]*)(\!)?(?=\s*
3048 # function assignment |
3463 # function assignment |
3049 (=\s*(
3464 (=\s*(
3050 ((async\s+)?(
3465 ((async\s+)?(
@@ -3053,11 +3468,11 @@ contexts:
3053 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3468 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3054 )) |
3469 )) |
3055 ((async\s*)?(
3470 ((async\s*)?(
3056− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
3471+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
3057 # sure shot arrow functions even if => is on new line
3472 # sure shot arrow functions even if => is on new line
3058 (
3473 (
3059− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3474+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
3060− [(]\s*
3475+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
3061 (
3476 (
3062 ([)]\s*:) | # ():
3477 ([)]\s*:) | # ():
3063 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3478 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -3068,9 +3483,9 @@ contexts:
3068 ) |
3483 ) |
3069 # arrow function possible to detect only with => on same line
3484 # arrow function possible to detect only with => on same line
3070 (
3485 (
3071− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3486+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
3072− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3487+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
3073− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3488+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
3074 \s*=> # arrow operator
3489 \s*=> # arrow operator
3075 )
3490 )
3076 ))
3491 ))
@@ -3087,19 +3502,20 @@ contexts:
3087 ))
3502 ))
3088 ))
3503 ))
3089 )) |
3504 )) |
3090− (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) |
3505+ (:\s*(?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
3091− (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3506+ (:\s*((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
3507+ (:\s*(=>|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*(
3092 ((async\s+)?(
3508 ((async\s+)?(
3093 (function\s*[(<*]) |
3509 (function\s*[(<*]) |
3094 (function\s+) |
3510 (function\s+) |
3095 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3511 ([_$[:alpha:]][_$[:alnum:]]*\s*=>)
3096 )) |
3512 )) |
3097 ((async\s*)?(
3513 ((async\s*)?(
3098− ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) |
3514+ ((<\s*$)|([\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
3099 # sure shot arrow functions even if => is on new line
3515 # sure shot arrow functions even if => is on new line
3100 (
3516 (
3101− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?
3517+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)?
3102− [(]\s*
3518+ [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
3103 (
3519 (
3104 ([)]\s*:) | # ():
3520 ([)]\s*:) | # ():
3105 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
3521 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
@@ -3110,34 +3526,37 @@ contexts:
3110 ) |
3526 ) |
3111 # arrow function possible to detect only with => on same line
3527 # arrow function possible to detect only with => on same line
3112 (
3528 (
3113− (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters
3529+ (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=<>]|=[^<])*\>)*\>)*>\s*)? # typeparameters
3114− \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters
3530+ \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
3115− (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type
3531+ (\s*:\s*([^<>\(\)\{\}]|\<([^<>]|\<([^<>]|\<[^<>]+\>)+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
3116 \s*=> # arrow operator
3532 \s*=> # arrow operator
3117 )
3533 )
3118 ))
3534 ))
3119 )))
3535 )))
3120 captures:
3536 captures:
3121 1: meta.definition.variable.tsx entity.name.function.tsx
3537 1: meta.definition.variable.tsx entity.name.function.tsx
3538+ 2: keyword.operator.definiteassignment.tsx
3122 push:
3539 push:
3123 - meta_scope: meta.var-single-variable.expr.tsx
3540 - meta_scope: meta.var-single-variable.expr.tsx
3124− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3541+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3125 pop: true
3542 pop: true
3126 - include: var-single-variable-type-annotation
3543 - include: var-single-variable-type-annotation
3127− - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
3544+ - match: '([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\!)?'
3128 captures:
3545 captures:
3129 1: meta.definition.variable.tsx variable.other.constant.tsx
3546 1: meta.definition.variable.tsx variable.other.constant.tsx
3547+ 2: keyword.operator.definiteassignment.tsx
3130 push:
3548 push:
3131 - meta_scope: meta.var-single-variable.expr.tsx
3549 - meta_scope: meta.var-single-variable.expr.tsx
3132− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3550+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3133 pop: true
3551 pop: true
3134 - include: var-single-variable-type-annotation
3552 - include: var-single-variable-type-annotation
3135− - match: "([_$[:alpha:]][_$[:alnum:]]*)"
3553+ - match: '([_$[:alpha:]][_$[:alnum:]]*)(\!)?'
3136 captures:
3554 captures:
3137 1: meta.definition.variable.tsx variable.other.readwrite.tsx
3555 1: meta.definition.variable.tsx variable.other.readwrite.tsx
3556+ 2: keyword.operator.definiteassignment.tsx
3138 push:
3557 push:
3139 - meta_scope: meta.var-single-variable.expr.tsx
3558 - meta_scope: meta.var-single-variable.expr.tsx
3140− - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))'
3559+ - match: '(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3141 pop: true
3560 pop: true
3142 - include: var-single-variable-type-annotation
3561 - include: var-single-variable-type-annotation
3143 var-single-variable-type-annotation:
3562 var-single-variable-type-annotation:
@@ -3145,17 +3564,17 @@ contexts:
3145 - include: string
3564 - include: string
3146 - include: comment
3565 - include: comment
3147 variable-initializer:
3566 variable-initializer:
3148− - match: (?<!=|!)(=)(?!=)(?=\s*\S)
3567+ - match: (?<!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=>\s*$)
3149 captures:
3568 captures:
3150 1: keyword.operator.assignment.tsx
3569 1: keyword.operator.assignment.tsx
3151 push:
3570 push:
3152− - match: '(?=$|^|[,);}\]])'
3571+ - match: '(?=$|^|[,);}\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))'
3153 pop: true
3572 pop: true
3154 - include: expression
3573 - include: expression
3155 - match: (?<!=|!)(=)(?!=)
3574 - match: (?<!=|!)(=)(?!=)
3156 captures:
3575 captures:
3157 1: keyword.operator.assignment.tsx
3576 1: keyword.operator.assignment.tsx
3158 push:
3577 push:
3159− - match: '(?=[,);}\]])|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)'
3578+ - match: '(?=[,);}\]]|((?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(of|in)\s+))|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)'
3160 pop: true
3579 pop: true
3161 - include: expression
3580 - include: expression
assets/syntaxes/02_Extra/Verilognew file+1

Submodule changed.

assets/syntaxes/02_Extra/Verilog.sublime-syntaxnew file+149
@@ -0,0 +1,149 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: Verilog
5+file_extensions:
6+ - v
7+ - V
8+scope: source.verilog
9+contexts:
10+ main:
11+ - match: '^\s*(module|function|primitive)\s+\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
12+ scope: meta.entity.module.verilog
13+ captures:
14+ 1: storage.type.verilog
15+ 2: entity.name.type.class.verilog
16+ - match: '^\s*(?!else)(?!begin)([a-zA-Z_][a-zA-Z0-9_]*)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(\()'
17+ scope: meta.definition.verilog
18+ captures:
19+ 1: entity.name.type.class.verilog
20+ 2: entity.name.type.instance.verilog
21+ 3: keyword.operator.parenthesis.round.verilog
22+ - match: '^\s*(?!else)(?!begin)([a-zA-Z_][a-zA-Z0-9_]*)\s+([#])(\()([ ._+`,a-zA-Z0-9]+)(\))\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(\()'
23+ scope: meta.definition.withparameter.verilog
24+ captures:
25+ 1: entity.name.type.class.verilog
26+ 2: keyword.other.verilog
27+ 3: keyword.operator.parenthesis.round.verilog
28+ 4: keyword.other.verilog
29+ 5: keyword.operator.parenthesis.round.verilog
30+ 6: entity.name.type.instance.verilog
31+ 7: keyword.operator.parenthesis.round.verilog
32+ - match: '^\s*\b(?!else)(?!begin)([a-zA-Z_][a-zA-Z0-9_]*)\b\s+([#])'
33+ scope: meta.definition.withparameter.verilog
34+ captures:
35+ 1: entity.name.type.class.verilog
36+ 2: keyword.other.verilog
37+ - match: '^\s*(defparam)\s+([a-zA-Z_][a-zA-Z0-9_]*)(.[a-zA-Z_][a-zA-Z0-9_]*)\s*(=)'
38+ scope: meta.definition.defparam.verilog
39+ captures:
40+ 1: keyword.other.verilog
41+ 2: entity.name.type.instance.verilog
42+ 3: meta.module.parameters.verilog
43+ 4: keyword.other.verilog
44+ - match: \b(automatic|cell|config|deassign|defparam|design|disable|edge|endconfig|endgenerate|endspecify|endtable|endtask|event|generate|genvar|ifnone|incdir|include|instance|liblist|library|localparam|macromodule|negedge|noshowcancelled|posedge|pulsestyle_onevent|pulsestyle_ondetect|real|realtime|scalared|showcancelled|specify|specparam|table|task|time|use|vectored)\b
45+ scope: keyword.other.verilog
46+ - match: "(#[0-9]+)"
47+ scope: keyword.delay.verilog
48+ - match: \b(initial|always|wait|force|release|assign)\b
49+ scope: keyword.control.verilog
50+ - match: \b(begin|end|fork|join)\b
51+ scope: keyword.other.verilog
52+ - match: \b(forever|repeat|while|for|if|else|case|casex|casez|default|endcase)\b
53+ scope: keyword.control.verilog
54+ - match: '^\s*(`include)\s+(["<].*[">])'
55+ scope: meta.include.verilog
56+ captures:
57+ 1: meta.preprocessor.verilog
58+ 2: entity.name.type.include.verilog
59+ - match: '^\s*(`ifdef|`ifndef|`undef|`define)\s+([a-zA-Z_][a-zA-Z0-9_]*)\b'
60+ scope: meta.preprocessor.ifdef.verilog
61+ captures:
62+ 1: meta.preprocessor.verilog
63+ 2: constant.other.define.verilog
64+ - match: '`(celldefine|default_nettype|define|else|elsif|endcelldefine|endif|ifdef|ifndef|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef)\b'
65+ scope: meta.preprocessor.verilog
66+ - match: "[.][_a-zA-Z0-9]+"
67+ scope: meta.module.parameters.verilog
68+ - match: '`\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
69+ scope: constant.other.define.verilog
70+ - include: comments
71+ - match: \b(endmodule|endfunction|endprimitive)\b
72+ scope: storage.type.verilog
73+ - match: '^\s*\b([a-zA-Z_][a-zA-Z0-9_]*)\b\s*(:)\s*'
74+ scope: meta.case.verilog
75+ captures:
76+ 1: entity.name.state.verilog
77+ 2: keyword.operator.bitwise.verilog
78+ - include: all-types
79+ - match: (==|===|!=|!==|<=|>=|<|>)
80+ scope: keyword.operator.comparison.verilog
81+ - match: (\-|\+|\*|\/|%)
82+ scope: keyword.operator.arithmetic.verilog
83+ - match: (!|&&|\|\|)
84+ scope: keyword.operator.logical.verilog
85+ - match: (&|\||\^|~|<<|>>|\?|:)
86+ scope: keyword.operator.bitwise.verilog
87+ - match: "({|})"
88+ scope: keyword.operator.parenthesis.curly.verilog
89+ - match: (\(|\))
90+ scope: keyword.operator.parenthesis.round.verilog
91+ - match: '(\[|\])'
92+ scope: keyword.operator.parenthesis.square.verilog
93+ - match: "([;,])"
94+ scope: keyword.delimiter.verilog
95+ - match: (#|@|=)
96+ scope: keyword.other.verilog
97+ - match: '\b(output|input|inout|and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\b'
98+ scope: support.type.verilog
99+ - match: '((\b\d+)?''s?([bB]\s*(([0-1_xXzZ?]+)|(`[A-Z]+[_0-9a-zA-Z]*))|[oO]\s*(([0-7_xXzZ?]+)|(`[A-Z]+[_0-9a-zA-Z]*))|[dD]\s*(([0-9_xXzZ?]+)|(`[A-Z]+[_0-9a-zA-Z]*))|[hH]\s*(([0-9a-fA-F_xXzZ?]+)|(`[A-Z]+[_0-9a-zA-Z]*)))((e|E)(\+|-)?[0-9]+)?\b)|(\b\d+\b)'
100+ scope: constant.numeric.verilog
101+ - include: strings
102+ - match: '\$\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
103+ scope: support.function.verilog
104+ all-types:
105+ - include: storage-type-verilog
106+ - include: storage-modifier-verilog
107+ comments:
108+ - match: /\*
109+ captures:
110+ 0: punctuation.definition.comment.verilog
111+ push:
112+ - meta_scope: comment.block.verilog
113+ - match: \*/
114+ captures:
115+ 0: punctuation.definition.comment.verilog
116+ pop: true
117+ - match: (//).*$\n?
118+ scope: comment.line.double-slash.verilog
119+ captures:
120+ 1: punctuation.definition.comment.verilog
121+ storage-modifier-verilog:
122+ - match: '\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\b'
123+ scope: storage.modifier.verilog
124+ storage-type-verilog:
125+ - match: '\b(wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|parameter|integer)\b'
126+ scope: storage.type.verilog
127+ strings:
128+ - match: '"'
129+ captures:
130+ 0: punctuation.definition.string.begin.verilog
131+ push:
132+ - meta_scope: string.quoted.double.verilog
133+ - match: '"'
134+ captures:
135+ 0: punctuation.definition.string.end.verilog
136+ pop: true
137+ - match: \\.
138+ scope: constant.character.escape.verilog
139+ - match: "'"
140+ captures:
141+ 0: punctuation.definition.string.begin.verilog
142+ push:
143+ - meta_scope: string.quoted.single.verilog
144+ - match: "'"
145+ captures:
146+ 0: punctuation.definition.string.end.verilog
147+ pop: true
148+ - match: \\.
149+ scope: constant.character.escape.verilog
assets/syntaxes/02_Extra/VimLnew file+1

Submodule changed.

assets/syntaxes/02_Extra/Vuenew file+1

Submodule changed.

assets/syntaxes/02_Extra/Zignew file+1

Submodule changed.

assets/syntaxes/02_Extra/cmd-helpnew file+1

Submodule changed.

assets/syntaxes/02_Extra/gnuplotnew file+1

Submodule changed.

assets/syntaxes/02_Extra/gnuplot.sublime-syntaxnew file+182
@@ -0,0 +1,182 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: gnuplot
5+file_extensions:
6+ - gp
7+ - gpl
8+ - gnuplot
9+ - gnu
10+ - plot
11+ - plt
12+scope: source.gnuplot
13+contexts:
14+ main:
15+ - include: number
16+ - include: string_single
17+ - include: string_double
18+ - match: '\b(for)\b\s*(\[)'
19+ comment: |
20+ gnuplot iteration statement.
21+ There are two forms:
22+ numeric [n = 1:2{:inc}]
23+ string based [str in "x y z"]
24+ but both can also iterate over lists etc, so this is kept loose.
25+ captures:
26+ 1: keyword.other.iteration.gnuplot
27+ 2: punctuation.definition.range.begin.gnuplot
28+ push:
29+ - meta_scope: meta.structure.iteration.gnuplot
30+ - match: '\]'
31+ captures:
32+ 0: punctuation.definition.range.end.gnuplot
33+ pop: true
34+ - include: number
35+ - include: operator
36+ - include: string_double
37+ - include: string_single
38+ - match: ":"
39+ scope: punctuation.separator.range.gnuplot
40+ - match: '\b([a-zA-Z]\w*)\b\s*(=|in)'
41+ scope: variable-assignment.range.gnuplot
42+ - match: '(?i:[^\s(pi|e)\]])'
43+ scope: invalid.illegal.expected-range-separator.gnuplot
44+ - match: '\['
45+ comment: "gnuplot range statement [a:b]. Lots of things are legal, still more make no sense!"
46+ captures:
47+ 0: punctuation.definition.range.begin.gnuplot
48+ push:
49+ - meta_scope: meta.structure.range.gnuplot
50+ - match: '\]'
51+ captures:
52+ 0: punctuation.definition.range.end.gnuplot
53+ pop: true
54+ - include: number
55+ - include: operator
56+ - match: ":"
57+ scope: punctuation.separator.range.gnuplot
58+ - match: '(?i:[^\s(pi|e)\]])'
59+ scope: invalid.illegal.expected-range-separator.gnuplot
60+ - match: \\.
61+ scope: constant.character.escape.gnuplot
62+ - match: '(?<!\$)(#)(?!\{).*$\n?'
63+ scope: comment.line.number-sign.gnuplot
64+ captures:
65+ 1: punctuation.definition.comment.gnuplot
66+ - match: for
67+ comment: introduce in gnuplot 4.3.
68+ scope: keyword.other.iteration.gnuplot
69+ - match: \b(angles|arrow|autoscale|bars|border|boxwidth|clabel|clip|cntrparam|colorbox|contour|decimalsign|dgrid3d|dummy|encoding|fit|format|grid|hidden3d|historysize|isosamples|key|label|locale|logscale|macros|bmargin|lmargin|rmargin|tmargin|mapping|mouse|multiplot|offsets|origin|output|palette|parametric|pm3d|pointsize|polar|print|rrange|trange|urange|vrange|samples|size|style|surface|tics|ticscale|ticslevel|timestamp|timefmt|title|view|xyplane|x2data|xdata|y2data|ydata|z2data|zdata|x2label|xlabel|y2label|ylabel|z2label|zlabel|x2range|xrange|y2range|yrange|z2range|zrange|mx2tics|mxtics|my2tics|mytics|mz2tics|mztics|nomx2tics|nomxtics|nomy2tics|nomytics|nomz2tics|nomztics|nox2tics|noxtics|noy2tics|noytics|noz2tics|noztics|x2tics|xtics|y2tics|ytics|z2tics|ztics|x2dtics|x2mtics|xdtics|xmtics|y2dtics|y2mtics|ydtics|ymtics|z2dtics|z2mtics|zdtics|zmtics|x2zeroaxis|xzeroaxis|y2zeroaxis|yzeroaxis|z2zeroaxis|zeroaxis|zzeroaxis|zero|)\b
70+ scope: keyword.other.setting.gnuplot
71+ - match: \b(cd|call|clear|exit|plot|splot|help|load|pause|quit|fit|replot|if|FIT_LIMIT|FIT_MAXITER|FIT_START_LAMBDA|FIT_LAMBDA_FACTOR|FIT_LOG|FIT_SCRIPT|print|pwd|reread|reset|save|show|test|!|functions|var)\b
72+ comment: missuse of scopes alert! Just for pretty colours
73+ scope: keyword.other.command.gnuplot
74+ - match: \b(abs|acos|acosh|arg|asin|asinh|atan|atan2|atanh|besj0|besj1|besy0|besy1|ceil|cos|cosh|erf|erfc|exp|floor|gamma|ibeta|igamma|imag|int|inverf|invnorm|lambertw|lgamma|log|log10|norm|rand|real|sgn|sin|sinh|sqrt|tan|tanh)\b
75+ scope: support.function.gnuplot
76+ - match: \b(gprintf|sprintf|strlen|strstrt|substr|system|word|words)\b
77+ scope: support.function.string.gnuplot
78+ - match: \b(on|off|default|inside|outside|lmargin|rmargin|tmargin|bmargin|at|left|right|center|top|bottom|center|vertical|horizontal|Left|Right|noreverse|noinvert|samplen|spacing|width|height|noautotitle|columnheader|title|noenhanced|nobox|linestyle|ls|linetype|lt|linewidth|lw)\b
79+ scope: constant.other.type.gnuplot
80+ - match: \b(aed512|aed767|aifm|aqua|bitgraph|cgm|corel|dumb|dxf|eepic|emf|emtex|epslatex|epson_180dpi|epson_60dpi|epson_lx800|fig|gif|gpic|hp2623A|hp2648|hp500c|hpdj|hpgl|hpljii|hppj|imagen|jpeg|kc_tek40xx|km_tek40xx|latex|mf|mif|mp|nec_cp6|okidata|pbm|pcl5|pdf|png|postscript|pslatex|pstex|pstricks|qms|regis|selanar|starc|svg|tandy_60dpi|tek40xx|tek410x|texdraw|tgif|tkcanvas|tpic|unknown|vttek)\b
81+ scope: constant.other.terminal.gnuplot
82+ - match: \b(u(sing)?|t(it(le)?)?|notit(le)?|w(i(th)?)?|steps|fs(teps)?|notitle|l(i(nes)?)?|linespoints|via)\b
83+ scope: keyword.modifier.gnuplot
84+ - match: |-
85+ (?x:
86+ \b # Start with a word boundary
87+ (?=\b[\w$]*(\(|.*=)) # Look-ahead for a bracket or equals
88+ (?![^(]*\)) # negative look ahead for a closing bracket without an opening one. This stops a from matching in f(a)
89+ ( # Group variable name
90+ [A-Za-z] # A letter
91+ [\w$]* # Any word chars or $
92+ ) # That is it for the name.
93+ )
94+ comment: user defined function / variable
95+ scope: variable.other.gnuplot
96+ - match: \b(if)\b
97+ scope: keyword.control.gnuplot
98+ - match: \b(show)\b
99+ captures:
100+ 0: keyword.other.command.gnuplot
101+ push:
102+ - meta_scope: keyword.line.show.gnuplot
103+ - meta_content_scope: keyword.line.show.gnuplot
104+ - match: (?!\#)($\n?)
105+ pop: true
106+ - include: main
107+ - match: \b(set)\b\s*\b(terminal|term)\b
108+ captures:
109+ 1: keyword.other.command.gnuplot
110+ 2: keyword.other.setting.gnuplot
111+ push:
112+ - meta_scope: keyword.line.set.terminal.gnuplot
113+ - match: (?!\#)($\n?)
114+ pop: true
115+ - include: main
116+ - match: \b(set)\b\s*\b(key)\b
117+ captures:
118+ 1: keyword.other.command.gnuplot
119+ 2: keyword.other.setting.gnuplot
120+ push:
121+ - meta_scope: keyword.line.set.key.gnuplot
122+ - match: (?!\#)($\n?)
123+ pop: true
124+ - include: main
125+ - match: \b(set|unset)\b\s*(?!\b(terminal|key|for)\b)
126+ captures:
127+ 1: keyword.other.command.gnuplot
128+ 2: keyword.other.setting.gnuplot
129+ push:
130+ - meta_scope: keyword.line.set.gnuplot
131+ - meta_content_scope: keyword.line.set.gnuplot
132+ - match: (?!\#)($\n?)
133+ pop: true
134+ - include: main
135+ number:
136+ - match: |-
137+ (?x: # turn on extended mode
138+ -? # an optional minus
139+ (?:
140+ 0 # a zero
141+ | # ...or...
142+ [1-9] # a 1-9 character
143+ \d* # followed by zero or more digits
144+ )
145+ (?:
146+ \. # a period
147+ \d+ # followed by one or more digits
148+ (?:
149+ [eE] # an e character
150+ [+-]? # followed by an option +/-
151+ \d+ # followed by one or more digits
152+ )? # make exponent optional
153+ )? # make decimal portion optional
154+ )
155+ comment: borrowed from textmate book
156+ scope: constant.numeric.gnuplot
157+ operator:
158+ - match: \s*(==|~=|>|>=|<|<=|&|&&|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*
159+ comment: Operator symbols
160+ scope: keyword.operator.symbols.matlab
161+ string_double:
162+ - match: '"'
163+ captures:
164+ 0: punctuation.definition.string.begin.gnuplot
165+ push:
166+ - meta_scope: string.quoted.double.gnuplot
167+ - match: '"'
168+ captures:
169+ 0: punctuation.definition.string.end.gnuplot
170+ pop: true
171+ - match: '\\[\$`"\\\n]'
172+ scope: constant.character.escape.gnuplot
173+ string_single:
174+ - match: "'"
175+ captures:
176+ 0: punctuation.definition.string.begin.gnuplot
177+ push:
178+ - meta_scope: string.quoted.single.gnuplot
179+ - match: "'"
180+ captures:
181+ 0: punctuation.definition.string.end.gnuplot
182+ pop: true
assets/syntaxes/02_Extra/hostsnew file+1

Submodule changed.

assets/syntaxes/02_Extra/http-request-responsenew file+1

Submodule changed.

assets/syntaxes/02_Extra/log.sublime-syntaxnew file+140
@@ -0,0 +1,140 @@
1+%YAML 1.2
2+---
3+# See http://www.sublimetext.com/docs/3/syntax.html
4+file_extensions:
5+ - log
6+scope: text.log
7+variables:
8+ ipv4_part: (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
9+ hours_minutes_seconds: (?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)
10+contexts:
11+ main:
12+ - match: (\w+)(=)
13+ captures:
14+ 1: variable.parameter.log
15+ 2: keyword.operator.assignment.log
16+ - match: (')([^']*)(')
17+ scope: string.quoted.single.log
18+ captures:
19+ 1: punctuation.definition.string.begin.log
20+ 3: punctuation.definition.string.end.log
21+ - match: \"
22+ captures:
23+ 1: punctuation.definition.string.begin.log
24+ push: double_quoted_string
25+ - include: dates
26+ - include: ip_addresses
27+ - include: numbers
28+ - match: \b(?i:fail(?:ure|ed)?|error|exception)\b
29+ scope: markup.error.log
30+ - match: \b(?i:warn(?:ing)?)\b
31+ scope: markup.warning.log
32+ - match: \b(?i:debug)\b
33+ scope: markup.info.log
34+ #- include: scope:text.html.markdown#autolink-inet
35+ - match: \b\w+:/{2,3}
36+ scope: markup.underline.link.scheme.log
37+ push: url-host
38+ dates:
39+ - match: \b\d{4}-\d{2}-\d{2}(?=\b|T)
40+ scope: meta.date.log meta.number.integer.decimal.log constant.numeric.value.log
41+ push: maybe_date_time_separator
42+ - match: \b\d{4}/\d{2}/\d{2}(?=\b|T)
43+ scope: meta.date.log meta.number.integer.decimal.log constant.numeric.value.log
44+ push: maybe_date_time_separator
45+ - match: \b(?={{hours_minutes_seconds}})
46+ push: time
47+ time:
48+ - match: (?:{{hours_minutes_seconds}})(?:(\.)\d{3})?\b
49+ scope: meta.time.log meta.number.integer.decimal.log constant.numeric.value.log
50+ captures:
51+ 1: punctuation.separator.decimal.log
52+ - match: ''
53+ pop: true
54+ maybe_date_time_separator:
55+ - match: T(?={{hours_minutes_seconds}})
56+ scope: meta.date.log meta.time.log keyword.other.log
57+ set: time
58+ - match: ''
59+ pop: true
60+ ip_addresses:
61+ - match: \b(?=(?:{{ipv4_part}}\.){3}{{ipv4_part}}\b)
62+ push:
63+ - meta_scope: meta.ipaddress.v4.log meta.number.integer.decimal.log
64+ - match: \d+
65+ scope: constant.numeric.value.log
66+ - match: \.
67+ scope: punctuation.separator.sequence.log
68+ - match: ''
69+ pop: true
70+ - match: (?=(?:\h{0,4}:){2,6}\h{1,4}\b)
71+ push:
72+ - meta_scope: meta.ipaddress.v6.log meta.number.integer.hexadecimal.log
73+ - match: \h{1,4}
74+ scope: constant.numeric.value.log
75+ - match: ':'
76+ scope: punctuation.separator.sequence.log
77+ - match: ''
78+ pop: true
79+ numbers:
80+ - match: \b(0x)(\h+)(?:(\.)(\h+))?\b
81+ scope: meta.number.float.hexadecimal.log
82+ captures:
83+ 1: constant.numeric.base.log
84+ 2: constant.numeric.value.log
85+ 3: constant.numeric.value.log punctuation.separator.decimal.log
86+ 4: constant.numeric.value.log
87+ - match: \b\d+(\.)\d+\b
88+ scope: meta.number.float.log constant.numeric.value.log
89+ captures:
90+ 1: punctuation.separator.decimal.log
91+ - match: \b\d+\b
92+ scope: meta.number.integer.log constant.numeric.value.log
93+ url-host:
94+ - meta_content_scope: markup.underline.link.host.log
95+ - match: \[
96+ scope: punctuation.section.brackets.begin.log
97+ push:
98+ - match: \]
99+ scope: punctuation.section.brackets.end.log
100+ pop: true
101+ - include: ip_addresses
102+ - match: '[^:/\s]+'
103+ - match: ''
104+ set: url-after-host
105+ url-after-host:
106+ - match: (:)(\d+)
107+ scope: markup.underline.link.port.log
108+ captures:
109+ 1: punctuation.separator.mapping.port.log
110+ 2: constant.numeric.value.log
111+ #- include: scope:text.html.markdown#url-escaped-chars
112+ - match: (%)\h{2}
113+ scope: markup.underline.link.path.log constant.character.escape.url.log
114+ captures:
115+ 1: punctuation.definition.escape.log
116+ # After a valid domain, zero or more non-space non-< characters may follow
117+ - 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
118+ pop: true
119+ - 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
120+ push:
121+ - meta_scope: markup.underline.link.path.log
122+ - match: (?=[?!.,:*_~]*[\s<])
123+ pop: true
124+ - match: \)
125+ pop: true
126+ - match: (?=\)[?!.,:*_~]*[\s<])
127+ pop: true
128+ - match: '[^?!.,:*_~\s<&()%]+|\S'
129+ scope: markup.underline.link.path.log
130+ - match: ''
131+ pop: true
132+ double_quoted_string:
133+ - meta_scope: string.quoted.double.log
134+ - match: \\"
135+ scope: constant.character.escape.log
136+ - match: \\n
137+ scope: constant.character.escape.log
138+ - match: \"
139+ scope: punctuation.definition.string.end.log
140+ pop: true
assets/syntaxes/show-nonprintable.sublime-syntax → assets/syntaxes/02_Extra/show-nonprintable.sublime-syntaxrenamed+5−1
@@ -7,7 +7,7 @@ file_extensions:
7scope: whitespace
7scope: whitespace
8contexts:
8contexts:
9 main:
9 main:
10− - match: "•"
10+ - match: "·"
11 scope: support.function.show-nonprintable.space
11 scope: support.function.show-nonprintable.space
12 - match: "├─*┤"
12 - match: "├─*┤"
13 scope: constant.character.escape.show-nonprintable.tab
13 scope: constant.character.escape.show-nonprintable.tab
@@ -25,3 +25,7 @@ contexts:
25 scope: entity.other.attribute-name.show-nonprintable.escape
25 scope: entity.other.attribute-name.show-nonprintable.escape
26 - match: "␈"
26 - match: "␈"
27 scope: entity.other.attribute-name.show-nonprintable.backspace
27 scope: entity.other.attribute-name.show-nonprintable.backspace
28+ - match: "\\\\x[A-Z0-9][A-Z0-9]"
29+ scope: comment.block.show-nonprintable.backspace
30+ - match: "\\\\u\\{[a-z0-9]+\\}"
31+ scope: comment.block.show-nonprintable.backspace
assets/syntaxes/02_Extra/ssh-confignew file+1

Submodule changed.

assets/syntaxes/02_Extra/syntax_test_csv.csvnew file+60
@@ -0,0 +1,60 @@
1+# SYNTAX TEST "CSV.sublime-syntax"
2+Forename,Surname,House No.,Street,City,Postcode
3+#^^^^^^^ meta.field-1
4+# ^ punctuation.separator.sequence
5+# ^^^^^^^ meta.field-2
6+# ^ punctuation.separator.sequence
7+# ^^^^^^^^^ meta.field-3
8+# ^ punctuation.separator.sequence
9+# ^^^^^^ meta.field-4
10+# ^ punctuation.separator.sequence
11+# ^^^^ meta.field-1
12+# ^ punctuation.separator.sequence
13+# ^^^^^^^^ meta.field-2
14+John,Doe,87,Logon Road,Citiville,TU43 6GH
15+#^^^ meta.field-1
16+# ^ punctuation.separator.sequence
17+# ^^^ meta.field-2
18+# ^ punctuation.separator.sequence
19+# ^^ meta.field-3
20+# ^ punctuation.separator.sequence
21+# ^^^^^^^^^^ meta.field-4
22+# ^ punctuation.separator.sequence
23+# ^^^^^^^^^ meta.field-1
24+# ^ punctuation.separator.sequence
25+# ^^^^^^^^ meta.field-2
26+Jane,Doe,22,"""Fun"" Street","The City, County",FA90 1XA
27+#^^^ meta.field-1
28+# ^ punctuation.separator.sequence
29+# ^^^ meta.field-2
30+# ^ punctuation.separator.sequence
31+# ^^ meta.field-3
32+# ^ punctuation.separator.sequence
33+# ^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
34+# ^^ constant.character.escape
35+# ^^ constant.character.escape
36+# ^ punctuation.separator.sequence
37+# ^ meta.field-1 string.quoted.double punctuation.definition.string.begin
38+# ^^^^^^^^^^^^^^^^^ meta.field-1 string.quoted.double
39+# ^ meta.field-1 string.quoted.double punctuation.definition.string.end
40+# ^ punctuation.separator.sequence
41+# ^^^^^^^^ meta.field-2
42+Fred,Bloggs,"19","Street
43+#^^^ meta.field-1
44+# ^ punctuation.separator.sequence
45+# ^^^^^^ meta.field-2
46+# ^ punctuation.separator.sequence
47+# ^^^ meta.field-3 string.quoted.double
48+# ^ punctuation.separator.sequence
49+# ^ meta.field-4 punctuation.definition.string.begin
50+# ^^^^^^^^ meta.field-4 string.quoted.double
51+Spanning Multiple ""
52+#^^^^^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
53+# ^^ constant.character.escape
54+Lines",Citee,P0stc0d3
55+#^^^^^ meta.field-4 string.quoted.double
56+# ^ meta.field-4 punctuation.definition.string.end
57+# ^ punctuation.separator.sequence
58+# ^^^^^ meta.field-1
59+# ^ punctuation.separator.sequence
60+# ^^^^^^^^ meta.field-2
assets/syntaxes/02_Extra/syntax_test_man.mannew file+162
@@ -0,0 +1,162 @@
1+# SYNTAX TEST "Manpage.sublime-syntax"
2+SOMETHING(8) System Manager's Manual SOMETHING(8)
3+# ^^^^^ meta.preprocessor
4+# ^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.title
5+# ^^^^^^^ meta.preprocessor
6+
7+NAME
8+#^^^ markup.heading.other
9+ example - do something useful
10+
11+SYNOPSIS
12+ example [options] [--home DIR] [--shell SHELL] [--no-create-home]
13+# ^ punctuation.section.brackets.begin
14+# ^^^^^^ entity.name.command-line-option
15+# ^^^ variable.parameter
16+# ^ punctuation.section.brackets.end
17+# ^ punctuation.section.brackets.begin
18+# ^^^^^^^ entity.name.command-line-option
19+# ^^^^^ variable.parameter
20+# ^ punctuation.section.brackets.end
21+# ^ punctuation.section.brackets.begin
22+# ^^^^^^^^^^^^^^^^ entity.name.command-line-option
23+# ^ punctuation.section.brackets.end
24+ [-u | --set-upstream] [-o <string> | --push-option=<string>]
25+# ^ punctuation.section.brackets.begin
26+# ^^ entity.name.command-line-option
27+# ^ keyword.operator.logical
28+# ^^^^^^^^^^^^^^ entity.name.command-line-option
29+# ^ punctuation.section.brackets.end
30+# ^^^^^^^^^^^^^ entity.name.command-line-option
31+ [--force-with-lease[=<refname>[:<expect>]]]
32+# ^ punctuation.section.brackets.begin
33+# ^^^^^^^^^^^^^^^^^^ entity.name.command-line-option
34+# ^ punctuation.section.brackets.begin
35+# ^ keyword.operator
36+# ^^^^^^^ variable.parameter
37+# ^ punctuation.section.brackets.begin
38+# ^^^^^^ variable.parameter
39+# ^^^ punctuation.section.brackets.end
40+
41+ example --system [options]
42+# ^^^^^^^^ entity.name
43+
44+ COMMON OPTIONS
45+ [--quiet] [--debug] [--help|-h] [--version] [--conf FILE]
46+
47+ /* According to POSIX.1-2001, POSIX.1-2008 */
48+# ^^ source.c comment.block punctuation.definition.comment
49+ #include <sys/select.h>
50+# ^^^^^^^^ source.c meta.preprocessor.include keyword.control.import.include
51+ struct timeval {
52+# ^^^^^^ source.c storage.type
53+
54+ time_t tv_sec; /* seconds */
55+ suseconds_t tv_usec; /* microseconds */
56+ };
57+
58+
59+
60+DESCRIPTION
61+ example does something useful in relation to the command line options
62+ and configuration information in /etc/example.conf.
63+
64+OPTIONS
65+ --conf FILE
66+# ^^^^^^ entity.name.command-line-option
67+#^^^^^^ - variable - entity - markup
68+# ^^^^ variable.parameter
69+ Use FILE instead of /etc/example.conf.
70+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - variable - entity
71+
72+ --disabled-login
73+ Do not run passwd to set the password. The user won't be able
74+ to use her account until the password is set.
75+
76+ --disabled-password
77+ Like --disabled-login, but logins are still possible (for exam-
78+# ^^^^^^^^^^^^^^^^ entity.name
79+#^^^^^^^^^^^^^^^^^^ - entity - variable - markup
80+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - entity - variable - markup
81+ ple using SSH RSA keys) but not using password authentication.
82+
83+ --help Display brief instructions.
84+# ^^^^^^ entity.name.command-line-option
85+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - variable.parameter
86+
87+ --home DIR
88+# ^^^^^^ entity.name.command-line-option
89+# ^^^ variable.parameter
90+# ^ - variable - entity - markup
91+ Use DIR as the user's home directory, rather than the default
92+ specified by the configuration file. If the directory does not
93+ exist, it is created and skeleton files are copied.
94+
95+ --[no-]signed, --signed=(true|false|if-asked)
96+# ^^^^^^^^^^^^^ entity.name.command-line-option
97+# ^ punctuation.separator
98+# ^^^^^^^^ entity.name.command-line-option
99+# ^ keyword.operator
100+# ^ - variable
101+# ^^^^ variable.parameter
102+# ^ keyword.operator.logical
103+# ^^^^^ variable.parameter
104+# ^ keyword.operator.logical
105+# ^^^^^^^^ variable.parameter
106+# ^ - variable
107+ --no-recurse-submodules, --recurse-submodules=check|on-demand|only|no
108+# ^^^^^^^^^^^^^^^^^^^^^^^ entity.name.command-line-option
109+# ^ punctuation.separator
110+# ^^^^^^^^^^^^^^^^^^^^ entity.name.command-line-option
111+# ^ keyword.operator
112+# ^^^^^ variable.parameter
113+# ^ keyword.operator.logical
114+# ^^^^^^^^^ variable.parameter
115+# ^ keyword.operator.logical
116+# ^^^^ variable.parameter
117+# ^ keyword.operator.logical
118+# ^^ variable.parameter
119+ May be used to make sure all submodule commits used by the
120+
121+ -c, -C NUM, --context[=NUM]
122+# ^^ entity.name.command-line-option
123+# ^ punctuation.separator
124+# ^^ entity.name.command-line-option
125+# ^^^ variable.parameter
126+# ^ punctuation.separator
127+# ^^^^^^^^^ entity.name.command-line-option
128+# ^^^^^^^ - entity.name
129+# ^ keyword.operator
130+# ^^^ variable.parameter
131+# ^^ - variable
132+ output NUM (default 3) lines of copied context
133+
134+EXAMPLE
135+ #include <stdio.h>
136+# ^^^^^^^^ source.c meta.preprocessor.include keyword.control.import.include
137+
138+ (This is not C code.)
139+# ^^^^^^^^^^^^^^^^^^^^^^ - source.c
140+
141+ struct timeval {
142+ time_t tv_sec; /* seconds */
143+ suseconds_t tv_usec; /* microseconds */
144+ };
145+# ^ source.c punctuation.terminator
146+
147+ The corresponding argument for pselect() has the following type:
148+#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - source.c
149+ #define POLLIN_SET (EPOLLRDNORM | EPOLLRDBAND | EPOLLIN |
150+ EPOLLHUP | EPOLLERR)
151+# ^ source.c meta.preprocessor.macro meta.group punctuation.section.group.end
152+
153+ENVIRONMENT
154+ $SYSTEMD_LOG_LEVEL
155+# ^ punctuation.definition.variable
156+# ^^^^^^^^^^^^^^^^^ constant.other
157+ systemd reads the log level from this environment variable. This
158+ can be overridden with --log-level=.
159+
160+SEE ALSO
161+ The systemd Homepage[11], systemd-system.conf(5), locale.conf(5)
162+# ^^^^^^^^^^^^^^^^^^^ entity.name.function
assets/syntaxes/02_Extra/syntax_test_tsv.tsvnew file+60
@@ -0,0 +1,60 @@
1+# SYNTAX TEST "CSV.sublime-syntax"
2+Forename Surname House No. Street City Postcode
3+#^^^^^^^ meta.field-1
4+# ^ punctuation.separator.sequence
5+# ^^^^^^^ meta.field-2
6+# ^ punctuation.separator.sequence
7+# ^^^^^^^^^ meta.field-3
8+# ^ punctuation.separator.sequence
9+# ^^^^^^ meta.field-4
10+# ^ punctuation.separator.sequence
11+# ^^^^ meta.field-1
12+# ^ punctuation.separator.sequence
13+# ^^^^^^^^ meta.field-2
14+John Doe 87 Logon Road Citiville TU43 6GH
15+#^^^ meta.field-1
16+# ^ punctuation.separator.sequence
17+# ^^^ meta.field-2
18+# ^ punctuation.separator.sequence
19+# ^^ meta.field-3
20+# ^ punctuation.separator.sequence
21+# ^^^^^^^^^^ meta.field-4
22+# ^ punctuation.separator.sequence
23+# ^^^^^^^^^ meta.field-1
24+# ^ punctuation.separator.sequence
25+# ^^^^^^^^ meta.field-2
26+Jane Doe 22 """Fun"" Street" "The City County" FA90 1XA
27+#^^^ meta.field-1
28+# ^ punctuation.separator.sequence
29+# ^^^ meta.field-2
30+# ^ punctuation.separator.sequence
31+# ^^ meta.field-3
32+# ^ punctuation.separator.sequence
33+# ^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
34+# ^^ constant.character.escape
35+# ^^ constant.character.escape
36+# ^ punctuation.separator.sequence
37+# ^ meta.field-1 string.quoted.double punctuation.definition.string.begin
38+# ^^^^^^^^^^^^^^^^^ meta.field-1 string.quoted.double
39+# ^ meta.field-1 string.quoted.double punctuation.definition.string.end
40+# ^ punctuation.separator.sequence
41+# ^^^^^^^^ meta.field-2
42+Fred Bloggs "19" "Street
43+#^^^ meta.field-1
44+# ^ punctuation.separator.sequence
45+# ^^^^^^ meta.field-2
46+# ^ punctuation.separator.sequence
47+# ^^^ meta.field-3 string.quoted.double
48+# ^ punctuation.separator.sequence
49+# ^ meta.field-4 punctuation.definition.string.begin
50+# ^^^^^^^^ meta.field-4 string.quoted.double
51+Spanning Multiple ""
52+#^^^^^^^^^^^^^^^^^^^^ meta.field-4 string.quoted.double
53+# ^^ constant.character.escape
54+Lines" Citee P0stc0d3
55+#^^^^^ meta.field-4 string.quoted.double
56+# ^ meta.field-4 punctuation.definition.string.end
57+# ^ punctuation.separator.sequence
58+# ^^^^^ meta.field-1
59+# ^ punctuation.separator.sequence
60+# ^^^^^^^^ meta.field-2
assets/syntaxes/02_Extra/syslog.sublime-syntaxnew file+63
@@ -0,0 +1,63 @@
1+%YAML 1.2
2+---
3+# http://www.sublimetext.com/docs/3/syntax.html
4+name: syslog
5+file_extensions:
6+ - syslog
7+scope: text.log.syslog
8+contexts:
9+ main:
10+ - match: ^(\w+\s+\d+)\s+(\d{2}:\d{2}:\d{2})
11+ scope: meta.datetime.syslog constant.numeric.syslog
12+ captures:
13+ 1: meta.date.syslog
14+ 2: meta.time.syslog
15+ push: loghost
16+ - match: ^
17+ push: text
18+ loghost:
19+ - match: '[\w:.-]+'
20+ scope: entity.other.attribute-name.loghost.syslog
21+ set: process
22+ process:
23+ - match: ([\w.-]+)(?:(\[)(\d+)(\]))?([ :])
24+ captures:
25+ 1: support.function.process.syslog
26+ 2: punctuation.separator.pid.begin.syslog
27+ 3: meta.pid.syslog meta.number.integer.syslog constant.numeric.value.syslog
28+ 4: punctuation.separator.pid.end.syslog
29+ 5: punctuation.separator.mapping.syslog
30+ set: structured-data
31+ structured-data:
32+ - match: '\['
33+ scope: punctuation.section.mapping.begin.syslog
34+ push:
35+ - match: \]
36+ scope: punctuation.section.mapping.end.syslog
37+ pop: true
38+ - match: \w+
39+ scope: variable.parameter.syslog
40+ - match: =
41+ scope: keyword.operator.assignment.syslog
42+ push:
43+ - match: '[^\s\]]+'
44+ scope: constant.other.syslog
45+ pop: true
46+ - match: (?=\])
47+ pop: true
48+ - match: (?=\S)
49+ set: text
50+ text:
51+ - match: $
52+ pop: true
53+ - match: '<\w+>'
54+ scope: constant.language.syslog
55+ - match: \b(CMD)\b\s+(\()
56+ captures:
57+ 1: entity.name.label.syslog
58+ 2: punctuation.section.block.begin.syslog
59+ embed: scope:source.shell.bash
60+ escape: \)$
61+ escape_captures:
62+ 0: punctuation.section.block.end.syslog
63+ - include: scope:text.log
assets/syntaxes/varlink → assets/syntaxes/02_Extra/varlinkrenamed

The content is the same.

assets/syntaxes/AWKdeleted−1

Submodule changed.

assets/syntaxes/AsciiDocdeleted−1

Submodule changed.

assets/syntaxes/AsciiDoc.sublime-syntaxdeleted−283
@@ -1,283 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: AsciiDoc
5−comment: |
6− A very early hack. Mostly ripped from other syntaxes.
7− Only the very basic stuff is working.
8−file_extensions:
9− - adoc
10− - asciidoc
11− - asc
12−scope: text.html.asciidoc
13−contexts:
14− main:
15− - include: heading_inline
16− - include: heading-block
17− - include: heading-blockattr
18− - match: \$\$(?!\$)
19− push:
20− - meta_scope: comment.block.passthrough.macro.doubledollar.asciidoc
21− - match: \$\$(?!\$)
22− pop: true
23− - match: \+\+\+(?!\+)
24− push:
25− - meta_scope: comment.block.passthrough.macro.tripeplus.asciidoc
26− - match: \+\+\+(?!\+)
27− pop: true
28− - match: (//).*$\n?
29− scope: comment.line.double-slash.asciidoc
30− - match: |-
31− (?x)^
32− (?= ([/+-.*_=]{4,})\s*$
33− | ([ \t]{1,})
34− | [=]{1,6}\s*+
35− | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
36− )
37− push:
38− - meta_scope: meta.block-level.asciidoc
39− - match: |-
40− (?x)^
41− (?! \1
42− | ([ \t]{1,})
43− | [=]{1,6}\s*+
44− | [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
45− )
46− pop: true
47− - include: block_quote
48− - include: block_raw
49− - include: heading_inline
50− - include: heading-block
51− - include: separator
52− - match: '^[ ]{0,3}([*+-])(?=\s)'
53− captures:
54− 1: punctuation.definition.list_item.asciidoc
55− push:
56− - meta_scope: markup.list.unnumbered.asciidoc
57− - match: ^(?=\S)
58− captures:
59− 1: punctuation.definition.list_item.asciidoc
60− pop: true
61− - include: list-paragraph
62− - match: '^[ ]{0,3}[0-9]+(\.)(?=\s)'
63− captures:
64− 1: punctuation.definition.list_item.asciidoc
65− push:
66− - meta_scope: markup.list.numbered.asciidoc
67− - match: ^(?=\S)
68− captures:
69− 1: punctuation.definition.list_item.asciidoc
70− pop: true
71− - include: list-paragraph
72− - match: '^([/+-.*_=]){4,}\s*$'
73− push:
74− - meta_scope: comment.block.asciidoc
75− - match: '^\1{4,}\s*$'
76− pop: true
77− - match: '^([/+.]){4,}\s*$'
78− comment: asciidoc formatting is disabled inside certain blocks.
79− push:
80− - meta_scope: meta.disable-asciidoc
81− - match: '^[/+.]{4,}\s*$'
82− pop: true
83− - match: '^(?=\S)(?![=-]{3,}(?=$))(?!\.\S+)'
84− push:
85− - meta_scope: meta.paragraph.asciidoc
86− - match: '^(?:\s*$|(?=[ ]{,3}>.))|(?=[ \t]*\n)(?<=^===|^====|=====|^---|^----|-----)[ \t]*\n'
87− pop: true
88− - include: inline
89− - include: scope:text.html.basic
90− - match: '^(={3,})(?=[ \t]*$)'
91− scope: markup.heading.0.asciidoc
92− captures:
93− 1: punctuation.definition.heading.asciidoc
94− - match: '^(-{3,})(?=[ \t]*$)'
95− scope: markup.heading.1.asciidoc
96− captures:
97− 1: punctuation.definition.heading.asciidoc
98− - match: '^(~{3,})(?=[ \t]*$)'
99− scope: markup.heading.2.asciidoc
100− captures:
101− 1: punctuation.definition.heading.asciidoc
102− - match: '^(\^{3,})(?=[ \t]*$)'
103− scope: markup.heading.3.asciidoc
104− captures:
105− 1: punctuation.definition.heading.asciidoc
106− - match: '^(\+{3,})(?=[ \t]*$)'
107− scope: markup.heading.4.asciidoc
108− captures:
109− 1: punctuation.definition.heading.asciidoc
110− attribute-entry:
111− - match: '^:[-_. A-Za-z0-9]+:\s*(.*)\s*$'
112− scope: variable.other
113− attribute-reference:
114− - match: "{[-_. A-Za-z0-9]+}"
115− scope: variable.other
116− attribute-reference-predefined:
117− - match: "{(?i:amp|asciidoc-dir|asciidoc-file|asciidoc-version|author|authored|authorinitials|backend-docbook|backend-xhtml11|backend-html4|docbook-article|xhtml11-article|html4-article|docbook-book|xhtml11-book|html4-book|docbook-manpage|xhtml11-manpage|html4-manpage|backend|backslash|basebackend|brvbar|date|docdate|doctime|docname|docfile|docdir|doctitle|doctype-article|doctype-book|doctype-manpage|doctype|email|empty|encoding|filetype|firstname|gt|id|indir|infile|lastname|level|listindex|localdate|localtime|lt|manname|manpurpose|mantitle|manvolnum|middlename|nbsp|outdir|outfile|reftext|revision|sectnum|showcomments|title|two_colons|two_semicolons|user-dir|verbose)}"
118− scope: support.variable
119− block_quote:
120− - match: '^([/+-.*_=]){4,}\s*$'
121− push:
122− - meta_scope: comment.block.asciidoc
123− - match: '^\1{4,}\s*$'
124− pop: true
125− block_raw:
126− - match: '\G([ ]{4}|\t).*$\n?'
127− scope: markup.raw.block.asciidoc
128− bracket:
129− - match: '<(?![a-z/?\$!])'
130− comment: |
131− asciidoc will convert this for us. We match it so that the
132− HTML grammar will not mark it up as invalid.
133− scope: meta.other.valid-bracket.asciidoc
134− character-replacements:
135− - match: \(C\)|\(R\)|\(TM\)|--(?!-)|\.\.\.(?!\.)|->|<-|=>|<=
136− scope: constant.character.asciidoc
137− escape:
138− - match: '\\[-`*_#+.!(){}\[\]\\>:]'
139− scope: constant.character.escape.asciidoc
140− heading:
141− - match: '(?m)^(\S+)$([=-~^+])+\s*$'
142− scope: markup.heading.asciidoc
143− captures:
144− 1: punctuation.definition.heading.asciidoc
145− heading-block:
146− - match: ^\.(\w.*)$
147− scope: markup.heading.asciidoc
148− captures:
149− 1: punctuation.definition.heading.asciidoc
150− heading-blockattr:
151− - match: '^\[\[?(\w.*)\]$'
152− scope: markup.heading.asciidoc
153− captures:
154− 1: punctuation.definition.heading.asciidoc
155− heading_inline:
156− - match: '\G(={1,6})(?!=)\s*(?=\S)'
157− captures:
158− 1: punctuation.definition.heading.asciidoc
159− push:
160− - meta_scope: markup.heading.asciidoc
161− - meta_content_scope: entity.name.section.asciidoc
162− - match: \s*(=*)$\n?
163− captures:
164− 1: punctuation.definition.heading.asciidoc
165− pop: true
166− - include: inline
167− inline:
168− - include: line-break
169− - include: line-page-break
170− - include: line-ruler
171− - include: escape
172− - include: passthrough-macro-trippleplus-inline
173− - include: passthrough-macro-doubledollar-inline
174− - include: character-replacements
175− - include: bracket
176− - include: raw
177− - include: text-quote-single
178− - include: text-quote-double
179− - include: text-quote-other
180− - include: text-bold-unconstrained
181− - include: text-italic-unconstrained
182− - include: text-monospace-unconstrained
183− - include: text-unquoted-unconstrained
184− - include: text-bold
185− - include: text-italic
186− - include: text-monospace
187− - include: text-unquoted
188− - include: attribute-entry
189− - include: attribute-reference-predefined
190− - include: attribute-reference
191− line-break:
192− - match: (?<=\S)\s+\+$
193− scope: constant.character.escape.asciidoc
194− line-page-break:
195− - match: "^<{3,}$"
196− scope: constant.character.escape.asciidoc
197− line-ruler:
198− - match: "^'{3,}$"
199− scope: constant.character.escape.asciidoc
200− list-paragraph:
201− - match: \G\s+(?=\S)
202− push:
203− - meta_scope: meta.paragraph.list.asciidoc
204− - match: ^\s*$
205− pop: true
206− - include: inline
207− passthrough-macro-doubledollar-inline:
208− - match: '(?:\[.*\])?\$\$(?!\$).+\$\$(?!\$)'
209− scope: comment.block.passthrough.asciidoc
210− passthrough-macro-trippleplus-inline:
211− - match: '(?:\[.*\])?\+\+\+(?!\+).+\+\+\+(?!\+)'
212− scope: comment.block.passthrough.asciidoc
213− raw:
214− - match: '(`+)(?:[^`]|(?!(?<!`)\1(?!`))`)*+(\1)'
215− scope: markup.raw.inline.asciidoc
216− captures:
217− 1: punctuation.definition.raw.asciidoc
218− 2: punctuation.definition.raw.asciidoc
219− separator:
220− - match: '\G[ ]{,3}([-*_])([ ]{,2}\1){2,}[ \t]*$\n?'
221− scope: meta.separator.asciidoc
222− text-bold:
223− - match: (?<!\w)(\*)(?=\S)
224− captures:
225− 1: punctuation.definition.bold.asciidoc
226− push:
227− - meta_scope: markup.bold.asciidoc
228− - match: (?<=\S)(\1)(?!\w)
229− captures:
230− 1: punctuation.definition.bold.asciidoc
231− pop: true
232− text-bold-unconstrained:
233− - match: (\*\*)(?=\S)
234− captures:
235− 1: punctuation.definition.bold.asciidoc
236− push:
237− - meta_scope: markup.bold.asciidoc
238− - match: (?<=\S)(\1)
239− captures:
240− 1: punctuation.definition.bold.asciidoc
241− pop: true
242− text-italic:
243− - match: (?<!\w)('|_)(?=\S)
244− captures:
245− 1: punctuation.definition.italic.asciidoc
246− push:
247− - meta_scope: markup.italic.asciidoc
248− - match: (?<=\S)(\1)((?!\1)|(?=\1\1))(?!\w)
249− captures:
250− 1: punctuation.definition.italic.asciidoc
251− pop: true
252− text-italic-unconstrained:
253− - match: (__)(?=\S)
254− captures:
255− 1: punctuation.definition.italic.asciidoc
256− push:
257− - meta_scope: markup.italic.asciidoc
258− - match: (?<=\S)(\1)
259− captures:
260− 1: punctuation.definition.italic.asciidoc
261− pop: true
262− text-monospace:
263− - match: '(?<!\w)([\+`])[^\+]*(\1)(?!\w)'
264− scope: string.interpolated.asciidoc
265− text-monospace-unconstrained:
266− - match: (\+\+).*(\1)
267− scope: string.interpolated.asciidoc
268− text-quote-double:
269− - match: '(?<!\w)(?:\[.*\])?``(?!`).*''''(?!'')(?!\w)'
270− scope: string.quoted.double.asciidoc
271− text-quote-other:
272− - match: '(?<!\w)(?:\[.*\])?([~^]).*(\1)(?!\w)'
273− scope: string.quoted.single.asciidoc
274− text-quote-single:
275− - match: '(?<!\w)(?:\[.*\])?`(?!`).*''(?!'')(?!\w)'
276− comment: "TODO: Sub- and Superscript are really unconstrained"
277− scope: string.quoted.single.asciidoc
278− text-unquoted:
279− - match: (?<!\w)(#).*(\1)(?!\w)
280− scope: string.unquoted.asciidoc
281− text-unquoted-unconstrained:
282− - match: (##).*(\1)
283− scope: string.unquoted.asciidoc
assets/syntaxes/CMakedeleted−1

Submodule changed.

assets/syntaxes/CSVdeleted−1

Submodule changed.

assets/syntaxes/CSV.sublime-syntaxdeleted−46
@@ -1,46 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: Advanced CSV
5−file_extensions:
6− - csv
7− - tsv
8−scope: text.advanced_csv
9−contexts:
10− main:
11− - match: (\")
12− captures:
13− 1: string.quoted.double.advanced_csv
14− push:
15− - meta_scope: meta.quoted.advanced_csv
16− - match: (\")
17− captures:
18− 1: string.quoted.double.advanced_csv
19− pop: true
20− - include: main
21− - match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)'
22− captures:
23− 1: keyword.operator.advanced_csv
24− 2: constant.numeric.formula.advanced_csv
25− 4: constant.numeric.formula.advanced_csv
26− 6: constant.numeric.formula.advanced_csv
27− 8: constant.numeric.formula.advanced_csv
28− 9: keyword.operator.advanced_csv
29− 10: keyword.operator.advanced_csv
30− push:
31− - meta_scope: meta.range.advanced_csv
32− - match: (?=(\")|$)
33− pop: true
34− - include: scope:source.python
35− - match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")'
36− scope: meta.number.advanced_csv
37− captures:
38− 1: constant.numeric.advanced_csv
39− - match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")'
40− scope: meta.nonnumber.advanced_csv
41− captures:
42− 1: storage.type.advanced_csv
43− - match: (\,)
44− scope: meta.delimiter.advanced_csv
45− captures:
46− 1: keyword.operator.advanced_csv
assets/syntaxes/Cabaldeleted−1

Submodule changed.

assets/syntaxes/Crystaldeleted−1

Submodule changed.

assets/syntaxes/Dartdeleted−1

Submodule changed.

assets/syntaxes/Dart.sublime-syntaxdeleted−369
@@ -1,369 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: Dart
5−file_extensions:
6− - dart
7−scope: source.dart
8−contexts:
9− main:
10− - match: ^(#!.*)$
11− scope: meta.preprocessor.script.dart
12− - match: ^\s*\b(library|import|export|part of|part)\b
13− captures:
14− 0: keyword.other.import.dart
15− push:
16− - meta_scope: meta.declaration.dart
17− - match: ;
18− captures:
19− 0: punctuation.terminator.dart
20− pop: true
21− - include: strings
22− - match: \b(as|show|hide|deferred)\b
23− scope: keyword.other.import.dart
24− - include: comments
25− - include: constants-and-special-vars
26− - include: annotations
27− - include: decl-typedef
28− - include: decl-class
29− - include: decl-enum
30− - include: decl-function
31− - include: keywords
32− - include: strings
33− annotations:
34− - match: '^(?:\s*)((@)([a-zA-Z0-9_]+))'
35− captures:
36− 1: annotation.dart
37− 2: entity.name.function.annotation.dart
38− 3: support.type.dart
39− comments:
40− - match: /\*\*/
41− scope: comment.block.empty.dart
42− captures:
43− 0: punctuation.definition.comment.dart
44− - include: comments-inline
45− comments-inline:
46− - match: /\*
47− push:
48− - meta_scope: comment.block.dart
49− - match: \*/
50− pop: true
51− - include: scope:text.dart-doccomments
52− - match: (///)
53− captures:
54− 1: marker.dart
55− push:
56− - meta_scope: comment.line.triple-slash.dart
57− - match: $
58− pop: true
59− - include: scope:text.dart-doccomments
60− - match: (//)
61− captures:
62− 1: marker.dart
63− push:
64− - meta_scope: comment.line.double-slash.dart
65− - match: $
66− pop: true
67− - include: scope:text.dart-doccomments
68− constants-and-special-vars:
69− - match: \b(true|false|null)\b
70− scope: constant.language.dart
71− - match: \b(this|super)\b
72− scope: variable.language.dart
73− - match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
74− scope: constant.numeric.dart
75− decl-class:
76− - match: \bclass\b
77− captures:
78− 0: keyword.control.new.dart
79− push:
80− - meta_scope: meta.declaration.class.dart
81− - match: "(?={)"
82− pop: true
83− - include: keywords
84− - match: "[A-Za-z_][A-Za-z0-9_]*"
85− scope: class.name.dart
86− decl-enum:
87− - match: \benum\b
88− captures:
89− 0: keyword.declaration.dart
90− push:
91− - meta_scope: meta.declaration.enum.dart
92− - match: "(?={)"
93− pop: true
94− - include: keywords
95− - match: "[A-Za-z_][A-Za-z0-9_]*"
96− scope: enum.name.dart
97− decl-function:
98− - match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(get)\s+(\w+)\s+(?==>)
99− comment: A getter with a primitive return type.
100− scope: meta.declaration.function.dart
101− captures:
102− 1: storage.type.primitive.dart
103− 2: keyword.declaration.dart
104− 3: function.name.dart
105− - match: ^\s*(?:\b(\w+)\b\s+)?(get)\s+(\w+)\s+(?==>)
106− comment: A getter with a user-defined return type or no return type.
107− scope: meta.declaration.function.dart
108− captures:
109− 1: type.user-defined.dart
110− 2: keyword.declaration.dart
111− 3: function.name.dart
112− - match: ^\s*(set)\s+(\w+)(?=\()
113− comment: A setter.
114− captures:
115− 1: keyword.declaration.dart
116− 2: function.name.dart
117− push:
118− - meta_scope: meta.declaration.function.dart
119− - match: \)
120− pop: true
121− - include: comments-inline
122− - include: decl-function-parameter
123− - include: strings
124− - include: keywords
125− - match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
126− comment: A function with a primitive return type.
127− captures:
128− 1: storage.type.primitive.dart
129− 2: function.name.dart
130− push:
131− - meta_scope: meta.declaration.function.dart
132− - match: \)
133− pop: true
134− - include: comments-inline
135− - include: decl-function-parameter
136− - include: strings
137− - include: keywords
138− - match: ^\s*(?:\b(return)\b)\s+(\w+)(?=\()
139− comment: A function invocation after 'return'
140− captures:
141− 1: keyword.control.dart
142− 2: function.name.dart
143− push:
144− - meta_scope: meta.invocation.function.dart
145− - match: \)
146− pop: true
147− - include: comments-inline
148− - include: decl-function-parameter
149− - include: strings
150− - include: keywords
151− - match: ^\s*\b(new)\b\s+(\w+)(?=\()
152− comment: A class instantiation after 'new'
153− captures:
154− 1: keyword.declaration.dart
155− 2: function.name.dart
156− push:
157− - meta_scope: meta.invocation.function.dart
158− - match: \)
159− pop: true
160− - include: comments-inline
161− - include: decl-function-parameter
162− - include: strings
163− - include: keywords
164− decl-function-parameter:
165− - include: constants-and-special-vars
166− - match: (?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
167− comment: A function with a primitive return type.
168− captures:
169− 1: storage.type.primitive.dart
170− 2: function.name.dart
171− push:
172− - meta_scope: meta.parameter.function.dart
173− - match: \)
174− pop: true
175− - include: decl-function-parameter
176− - include: strings
177− - include: keywords
178− - match: \b(new)\b\s+(\w+)(?=\()
179− comment: A class instantiation after 'new'
180− captures:
181− 1: keyword.declaration.dart
182− 2: function.name.dart
183− push:
184− - meta_scope: meta.invocation.function.dart
185− - match: \)
186− pop: true
187− - include: decl-function-parameter
188− - include: strings
189− - include: keywords
190− - match: (?:\b(\w+)\b)\s+(\w+)(?=\()
191− comment: A function with a user-defined return type.
192− captures:
193− 1: type.user-defined.dart
194− 2: function.name.dart
195− push:
196− - meta_scope: meta.parameter.function.dart
197− - match: \)
198− pop: true
199− - include: decl-function-parameter
200− - include: strings
201− - include: keywords
202− - match: (\w+)(?=\()
203− comment: A function with no return type.
204− captures:
205− 1: function.name.dart
206− push:
207− - meta_scope: meta.parameter.function.dart
208− - match: \)
209− pop: true
210− - include: decl-function-parameter
211− - include: strings
212− - include: keywords
213− decl-typedef:
214− - match: typedef
215− captures:
216− 0: keyword.control.new.dart
217− push:
218− - meta_scope: meta.declaration.typedef.dart
219− - match: ;
220− captures:
221− 0: punctuation.terminator.dart
222− pop: true
223− - match: '(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b|([a-zA-Z_][a-zA-Z0-9_]*))\s+([a-zA-Z_][a-zA-Z0-9_]+)'
224− captures:
225− 1: storage.type.primitive.dart
226− 2: typedef.return.dart
227− 3: typedef.name.dart
228− - match: \(
229− push:
230− - meta_scope: typedef.params.dart
231− - match: \)
232− pop: true
233− - include: keywords
234− keywords:
235− - match: \bassert\b
236− scope: keyword.control.assert.dart
237− - match: \bas\b
238− scope: keyword.cast.dart
239− - match: \b(try|catch|finally|throw|on|rethrow)\b
240− scope: keyword.control.catch-exception.dart
241− - match: \s+\?\s+|\s+:\s+
242− scope: keyword.control.ternary.dart
243− - match: \b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b
244− scope: keyword.control.dart
245− - match: \b(async\*|async|await\*|await|yield)\b
246− scope: keyword.control.async.dart
247− - match: \b(new)\b
248− scope: keyword.control.new.dart
249− - match: \b(abstract|extends|external|factory|implements|with|interface|get|native|operator|set|typedef)\b
250− scope: keyword.declaration.dart
251− - match: \b(is\!?)\b
252− scope: keyword.operator.dart
253− - match: (<<|>>>?|~|\^|\||&)
254− scope: keyword.operator.bitwise.dart
255− - match: ((&|\^|\||<<|>>>?)=)
256− scope: keyword.operator.assignment.bitwise.dart
257− - match: (===?|!==?|<=?|>=?)
258− scope: keyword.operator.comparison.dart
259− - match: '(([+*/%-]|\~)=)'
260− scope: keyword.operator.assignment.arithmetic.dart
261− - match: (=)
262− scope: keyword.operator.assignment.dart
263− - match: (\-\-|\+\+)
264− scope: keyword.operator.increment-decrement.dart
265− - match: (\-|\+|\*|\/|\~\/|%)
266− scope: keyword.operator.arithmetic.dart
267− - match: (!|&&|\|\|)
268− scope: keyword.operator.logical.dart
269− - match: ;
270− scope: punctuation.terminator.dart
271− - match: \b(static|final|const)\b
272− scope: storage.modifier.dart
273− - match: \b(?:void|bool|num|int|double|dynamic|var|String|List|Map)\b
274− scope: storage.type.primitive.dart
275− regexp:
276− - match: '\\[^''"]'
277− scope: constant.character.escaped.regex.dart
278− - match: \(
279− push:
280− - meta_content_scope: meta.capture.regex.dart
281− - match: \)
282− pop: true
283− - match: \?(:|=|!)
284− scope: ignore.capture.regex.dart
285− - match: \*|\+|\?|\.|\|
286− scope: keyword.other.regex.dart
287− - match: \^|\$
288− scope: keyword.other.regex.dart
289− - match: \.
290− scope: constant.other.regex.dart
291− - match: '\[(\^)?'
292− captures:
293− 1: keyword.other.negation.regex.dart
294− push:
295− - meta_scope: constant.character.range.regex.dart
296− - match: '\]'
297− pop: true
298− - match: '\\[^"'']'
299− scope: constant.character.escaped.regex.dart
300− - match: '\{(?:\d+)?,(?:\d+)?\}'
301− scope: keyword.other.regex.dart
302− string-interp:
303− - match: '(\$)(\{)'
304− captures:
305− 1: keyword.other.dart
306− 2: keyword.other.dart
307− push:
308− - meta_scope: interpolation.dart
309− - meta_content_scope: source.dart
310− - match: '(\})'
311− captures:
312− 1: keyword.other.dart
313− pop: true
314− - include: main
315− - match: (\$)(\w+)
316− captures:
317− 1: keyword.other.dart
318− 2: variable.parameter.dart
319− - match: \\.
320− scope: constant.character.escape.dart
321− strings:
322− - match: (?<!r)"""
323− push:
324− - meta_scope: string.interpolated.triple.double.dart
325− - match: '"""(?!")'
326− pop: true
327− - include: string-interp
328− - match: (?<!r)'''
329− push:
330− - meta_scope: string.interpolated.triple.single.dart
331− - match: "'''(?!')"
332− pop: true
333− - include: string-interp
334− - match: r"""
335− push:
336− - meta_scope: string.quoted.triple.double.dart
337− - match: '"""(?!")'
338− pop: true
339− - match: r'''
340− push:
341− - meta_scope: string.quoted.triple.single.dart
342− - match: "'''(?!')"
343− pop: true
344− - match: (?<!\\|r)"
345− push:
346− - meta_scope: string.interpolated.double.dart
347− - match: '"'
348− pop: true
349− - match: \n
350− scope: invalid.string.newline
351− - include: string-interp
352− - match: r"
353− push:
354− - meta_scope: string.quoted.double.dart
355− - match: '"'
356− pop: true
357− - include: regexp
358− - match: (?<!\|r)'
359− push:
360− - meta_scope: string.interpolated.single.dart
361− - match: "'"
362− pop: true
363− - include: string-interp
364− - match: r'
365− push:
366− - meta_scope: string.quoted.single.dart
367− - match: "'"
368− pop: true
369− - include: regexp
assets/syntaxes/Dockerdeleted−1

Submodule changed.

assets/syntaxes/Elixirdeleted−1

Submodule changed.

assets/syntaxes/Elmdeleted−1

Submodule changed.

assets/syntaxes/FSharpdeleted−1

Submodule changed.

assets/syntaxes/FSharp.sublime-syntaxdeleted−672
@@ -1,672 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: "F#"
5−file_extensions:
6− - fs
7− - fsi
8− - fsx
9−scope: source.fsharp
10−contexts:
11− main:
12− - include: compiler_directives
13− - include: comments
14− - include: constants
15− - include: strings
16− - include: chars
17− - include: double_tick
18− - include: definition
19− - include: abstract_definition
20− - include: attributes
21− - include: modules
22− - include: anonymous_functions
23− - include: du_declaration
24− - include: record_declaration
25− - include: records
26− - include: strp_inlined
27− - include: keywords
28− - include: cexprs
29− - include: text
30− abstract_definition:
31− - match: '\b(abstract)\s+(member)?(\s+\[\<.*\>\])?\s*([_[:alpha:]0-9,\._`\s]+)(:)'
32− captures:
33− 1: keyword.fsharp
34− 2: keyword.fsharp
35− 3: support.function.attribute.fsharp
36− 5: keyword.fsharp
37− push:
38− - meta_scope: abstract.definition.fsharp
39− - match: \s*(with)\b|=|$
40− captures:
41− 1: keyword.fsharp
42− pop: true
43− - include: comments
44− - include: common_declaration
45− - match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([[:alpha:]0-9''`^._ ]+)){0,1}'
46− captures:
47− 1: keyword.symbol.fsharp
48− 2: variable.parameter.fsharp
49− 3: keyword.symbol.fsharp
50− 4: entity.name.type.fsharp
51− - match: '(?!with|get|set\b)\b([\w0-9''`^._]+)'
52− captures:
53− 1: entity.name.type.fsharp
54− - include: keywords
55− anonymous_functions:
56− - match: \b(fun)\b
57− captures:
58− 1: keyword.fsharp
59− push:
60− - meta_scope: function.anonymous
61− - match: (->)
62− captures:
63− 1: keyword.fsharp
64− pop: true
65− - include: comments
66− - match: (\()
67− captures:
68− 1: keyword.symbol.fsharp
69− push:
70− - match: \s*(?=(->))
71− captures:
72− 1: keyword.symbol.fsharp
73− pop: true
74− - include: member_declaration
75− - include: variables
76− attributes:
77− - match: '\[\<'
78− push:
79− - meta_scope: support.function.attribute.fsharp
80− - match: '\>\]|\]'
81− pop: true
82− - include: main
83− cexprs:
84− - match: '\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\s*\{'
85− scope: cexpr.fsharp
86− captures:
87− 0: keyword.fsharp
88− chars:
89− - match: ('\\?.')
90− scope: char.fsharp
91− captures:
92− 1: string.quoted.single.fsharp
93− comments:
94− - match: (\(\*(?!\)))
95− captures:
96− 1: comment.block.fsharp
97− push:
98− - meta_scope: comment.block.fsharp
99− - match: (\*\))
100− captures:
101− 1: comment.block.fsharp
102− pop: true
103− - match: //.*$
104− scope: comment.line.double-slash.fsharp
105− common_binding_definition:
106− - include: comments
107− - include: attributes
108− - match: (:)\s*(\()\s*(static member|member)
109− captures:
110− 1: keyword.symbol.fsharp
111− 2: keyword.symbol.fsharp
112− 3: keyword.fsharp
113− push:
114− - match: (\))\s*((?=,)|(?=\=))
115− captures:
116− 1: keyword.symbol.fsharp
117− pop: true
118− - match: '(\^[[:alpha:]0-9''._]+)'
119− captures:
120− 1: entity.name.type.fsharp
121− - include: variables
122− - include: keywords
123− - match: (:)\s*(\()
124− captures:
125− 1: keyword.symbol.fsharp
126− 2: keyword.symbol.fsharp
127− push:
128− - match: '(\)\s*(([?[:alpha:]0-9''`^._ ]*)))'
129− captures:
130− 1: keyword.symbol.fsharp
131− 2: entity.name.type.fsharp
132− pop: true
133− - include: tuple_signature
134− - match: '(:)\s*(\^[[:alpha:]0-9''._]+)\s*(when)'
135− captures:
136− 1: keyword.symbol.fsharp
137− 2: entity.name.type.fsharp
138− 3: keyword.fsharp
139− push:
140− - match: (?=:)
141− captures:
142− 1: keyword.symbol.fsharp
143− pop: true
144− - match: \b(and|when|or)\b
145− scope: keyword.fsharp
146− - match: "([[:alpha:]0-9'^._]+)"
147− comment: Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition
148− captures:
149− 1: entity.name.type.fsharp
150− - match: (\(|\))
151− scope: keyword.symbol.fsharp
152− - match: '(:)\s*([?[:alpha:]0-9''`^._ ]+)'
153− captures:
154− 1: keyword.symbol.fsharp
155− 2: entity.name.type.fsharp
156− - match: '(->)\s*(\()?\s*([?[:alpha:]0-9''`^._ ]+)*'
157− captures:
158− 1: keyword.symbol.fsharp
159− 2: keyword.symbol.fsharp
160− 3: entity.name.type.fsharp
161− - match: (\*)\s*(\()
162− captures:
163− 1: keyword.symbol.fsharp
164− 2: keyword.symbol.fsharp
165− push:
166− - match: '(\)\s*(([?[:alpha:]0-9''`^._ ]+))+)'
167− captures:
168− 1: keyword.symbol.fsharp
169− 2: entity.name.type.fsharp
170− pop: true
171− - include: tuple_signature
172− - match: '(\*)(\s*([?[:alpha:]0-9''`^._ ]+))*'
173− captures:
174− 1: keyword.symbol.fsharp
175− 2: entity.name.type.fsharp
176− - match: '(<(?![[:space:]]*\)))'
177− captures:
178− 1: keyword.symbol.fsharp
179− push:
180− - match: ((?<!:)>)
181− captures:
182− 1: keyword.symbol.fsharp
183− pop: true
184− - include: generic_declaration
185− - match: "({)"
186− captures:
187− 1: keyword.symbol.fsharp
188− push:
189− - match: "(})"
190− captures:
191− 1: keyword.symbol.fsharp
192− pop: true
193− - include: record_signature
194− - include: definition
195− - include: variables
196− - include: keywords
197− common_declaration:
198− - match: '\s*(->)\s*([[:alpha:]0-9''`^._ ]+)(<)'
199− captures:
200− 1: keyword.symbol.fsharp
201− 2: entity.name.type.fsharp
202− 3: keyword.symbol.fsharp
203− push:
204− - match: (>)
205− captures:
206− 1: keyword.symbol.fsharp
207− pop: true
208− - match: "([[:alpha:]0-9'`^._ ]+)"
209− captures:
210− 1: entity.name.type.fsharp
211− - include: keywords
212− - match: '\s*(->)\s*(?!with|get|set\b)\b([\w0-9''`^._]+)'
213− captures:
214− 1: keyword.symbol.fsharp
215− 2: entity.name.type.fsharp
216− - match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([?[:alpha:]0-9''`^._ ]+)(<))'
217− captures:
218− 1: keyword.symbol.fsharp
219− 2: variable.parameter.fsharp
220− 3: keyword.symbol.fsharp
221− 4: keyword.symbol.fsharp
222− 5: entity.name.type.fsharp
223− push:
224− - match: (>)
225− captures:
226− 1: keyword.symbol.fsharp
227− pop: true
228− - match: "([[:alpha:]0-9'`^._ ]+)"
229− captures:
230− 1: entity.name.type.fsharp
231− - include: keywords
232− compiler_directives:
233− - match: \s?(#if|#elif|#else|#elseif|#endif|#light|#nowarn)
234− scope: compiler_directive.fsharp
235− captures:
236− constants:
237− - match: \(\)
238− scope: constant.language.unit.fsharp
239− - match: '\b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))'
240− scope: constant.numeric.floating-point.fsharp
241− - match: '\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))'
242− scope: constant.numeric.integer.nativeint.fsharp
243− - match: \b(true|false|null|unit)\b
244− scope: constant.others.fsharp
245− definition:
246− - match: '\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
247− captures:
248− 1: keyword.fsharp
249− 2: keyword.fsharp
250− 3: support.function.attribute.fsharp
251− 4: keyword.fsharp
252− 5: variable.fsharp
253− push:
254− - meta_scope: binding.fsharp
255− - match: \s*(with\b|=|\n+=|(?<=\=))
256− captures:
257− 1: keyword.fsharp
258− pop: true
259− - include: common_binding_definition
260− - match: '\b(static val mutable|val mutable|val)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
261− captures:
262− 1: keyword.fsharp
263− 2: keyword.fsharp
264− 3: support.function.attribute.fsharp
265− 4: keyword.fsharp
266− 5: variable.fsharp
267− push:
268− - meta_scope: binding.fsharp
269− - match: \n$
270− pop: true
271− - include: common_binding_definition
272− double_tick:
273− - match: (``)(.*)(``)
274− scope: variable.other.binding.fsharp
275− captures:
276− 1: string.quoted.single.fsharp
277− 2: variable.other.binding.fsharp
278− 3: string.quoted.single.fsharp
279− du_declaration:
280− - match: \b(of)\b
281− captures:
282− 1: keyword.fsharp
283− push:
284− - meta_scope: du_declaration.fsharp
285− - match: $|(\|)
286− captures:
287− 1: keyword.symbol.fsharp
288− pop: true
289− - include: comments
290− - match: '([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)'
291− captures:
292− 1: variable.parameter.fsharp
293− 2: keyword.symbol.fsharp
294− 3: entity.name.type.fsharp
295− - match: "([[:alpha:]0-9'`^._]+)|``([[:alpha:]0-9'^._ ]+)``"
296− captures:
297− 1: entity.name.type.fsharp
298− - include: keywords
299− generic_declaration:
300− - match: (:)\s*(\()\s*(static member|member)
301− captures:
302− 1: keyword.symbol.fsharp
303− 2: keyword.symbol.fsharp
304− 3: keyword.fsharp
305− push:
306− - match: (\))
307− captures:
308− 1: keyword.symbol.fsharp
309− pop: true
310− - match: (\()
311− captures:
312− 1: keyword.symbol.fsharp
313− push:
314− - match: (\))
315− captures:
316− 1: keyword.symbol.fsharp
317− pop: true
318− - include: member_declaration
319− - match: '((''|\^)[[:alpha:]0-9''._]+)'
320− captures:
321− 1: entity.name.type.fsharp
322− - include: variables
323− - include: keywords
324− - match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\!|struct|while|mutable)(?!')\b
325− scope: keyword.fsharp
326− - match: ":"
327− scope: keyword.fsharp
328− - include: constants
329− - match: '((''|\^)[[:alpha:]0-9''._]+)'
330− captures:
331− 1: entity.name.type.fsharp
332− - match: (<)
333− captures:
334− 1: keyword.symbol.fsharp
335− push:
336− - match: (>)
337− captures:
338− 1: keyword.symbol.fsharp
339− pop: true
340− - match: '((''|\^)[[:alpha:]0-9''._]+)'
341− captures:
342− 1: entity.name.type.fsharp
343− - include: tuple_signature
344− - include: generic_declaration
345− - match: '(?!when|and|or\b)\b([\w0-9''`^._]+)'
346− captures:
347− 1: entity.name.type.fsharp
348− - match: (\|)
349− captures:
350− 1: keyword.symbol.fsharp
351− - include: keywords
352− keywords:
353− - match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|or|use|use\!|struct|while|mutable)(?!')\b
354− scope: keyword.fsharp
355− - match: '(&&&|\|\|\||\^\^\^|~~~|<<<|>>>|\|>|\->|\<\-|:>|:\?>|:|\[|\]|\;|<>|=|@|\|\||&&|{|}|\||_|\.\.|\,|\+|\-|\*|\/|\^|\!|\>|\>\=|\>\>|\<|\<\=|\(|\)|\<\<)'
356− scope: keyword.symbol.fsharp
357− member_declaration:
358− - include: comments
359− - include: common_declaration
360− - match: (:)\s*(\()\s*(static member|member)
361− captures:
362− 1: keyword.symbol.fsharp
363− 2: keyword.symbol.fsharp
364− 3: keyword.fsharp
365− push:
366− - match: (\))\s*((?=,)|(?=\=))
367− captures:
368− 1: keyword.symbol.fsharp
369− pop: true
370− - match: (\()
371− captures:
372− 1: keyword.symbol.fsharp
373− push:
374− - match: (\))
375− captures:
376− 1: keyword.symbol.fsharp
377− pop: true
378− - include: member_declaration
379− - match: '(\^[[:alpha:]0-9''._]+)'
380− captures:
381− 1: entity.name.type.fsharp
382− - include: variables
383− - include: keywords
384− - match: '(\^[[:alpha:]0-9''._]+)'
385− captures:
386− 1: entity.name.type.fsharp
387− - match: \b(and|when|or)\b
388− scope: keyword.fsharp
389− - match: (\(|\))
390− scope: keyword.symbol.fsharp
391− - match: '(\?{0,1})([[:alpha:]0-9''`^._]+|``[[:alpha:]0-9''`^:,._ ]+``)\s*(:{0,1})(\s*([?[:alpha:]0-9''`<>._ ]+)){0,1}'
392− captures:
393− 1: keyword.symbol.fsharp
394− 2: variable.parameter.fsharp
395− 3: keyword.symbol.fsharp
396− 4: entity.name.type.fsharp
397− - include: keywords
398− modules:
399− - match: '\b(namespace|module)\s*(public|internal|private)?\s+([[:alpha:]][[:alpha:]0-9''_. ]*)'
400− captures:
401− 1: keyword.fsharp
402− 2: keyword.fsharp
403− 3: entity.name.section.fsharp
404− push:
405− - meta_scope: entity.name.section.fsharp
406− - match: (\s?=|\s|$)
407− captures:
408− 1: keyword.symbol.fsharp
409− pop: true
410− - match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
411− scope: entity.name.section.fsharp
412− captures:
413− 1: punctuation.separator.namespace-reference.fsharp
414− 2: entity.name.section.fsharp
415− - match: '\b(open)\s+([[:alpha:]][[:alpha:]0-9''_]*)(?=(\.[A-Z][[:alpha:]0-9_]*)*)'
416− captures:
417− 1: keyword.fsharp
418− 2: entity.name.section.fsharp
419− push:
420− - meta_scope: namespace.open.fsharp
421− - match: (\s|$)
422− pop: true
423− - match: '(\.)([[:alpha:]][[:alpha:]0-9''_]*)'
424− scope: entity.name.section.fsharp
425− captures:
426− 1: punctuation.separator.namespace-reference.fsharp
427− 2: entity.name.section.fsharp
428− - match: '^\s*(module)\s+([A-Z][[:alpha:]0-9''_]*)\s*(=)\s*([A-Z][[:alpha:]0-9''_]*)'
429− captures:
430− 1: keyword.fsharp
431− 2: entity.name.type.namespace.fsharp
432− 3: punctuation.separator.namespace-definition.fsharp
433− 4: entity.name.section.fsharp
434− push:
435− - meta_scope: namespace.alias.fsharp
436− - match: (\s|$)
437− pop: true
438− - match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
439− scope: entity.name.section.fsharp
440− captures:
441− 1: punctuation.separator.namespace-reference.fsharp
442− 2: entity.name.section.fsharp
443− record_declaration:
444− - match: '(\{)'
445− captures:
446− 1: keyword.symbol.fsharp
447− push:
448− - match: '(?<=\})'
449− pop: true
450− - include: comments
451− - match: '(((mutable)\s[[:alpha:]]+)|[[:alpha:]0-9''`<>^._]*)\s*((?<!:):(?!:))\s*'
452− captures:
453− 3: keyword.fsharp
454− 4: keyword.symbol.fsharp
455− push:
456− - match: '$|(;|\})'
457− captures:
458− 1: keyword.symbol.fsharp
459− pop: true
460− - include: comments
461− - match: "([[:alpha:]0-9'`^_ ]+)"
462− captures:
463− 1: entity.name.type.fsharp
464− - include: keywords
465− - include: compiler_directives
466− - include: constants
467− - include: strings
468− - include: chars
469− - include: double_tick
470− - include: definition
471− - include: attributes
472− - include: anonymous_functions
473− - include: keywords
474− - include: cexprs
475− - include: text
476− record_signature:
477− - match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
478− captures:
479− 1: keyword.symbol.fsharp
480− 2: variable.parameter.fsharp
481− - match: "({)"
482− captures:
483− 1: keyword.symbol.fsharp
484− push:
485− - match: "(})"
486− captures:
487− 1: keyword.symbol.fsharp
488− pop: true
489− - match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
490− captures:
491− 1: keyword.symbol.fsharp
492− 2: variable.parameter.fsharp
493− - include: record_signature
494− - include: keywords
495− records:
496− - match: '\b(type)[\s]+(private|internal|public)?\s*'
497− captures:
498− 1: keyword.fsharp
499− 2: keyword.fsharp
500− push:
501− - meta_scope: record.fsharp
502− - match: '\s*((with)|((as)\s+([[:alpha:]0-9'']+))|(=)|[\n=]|(\(\)))'
503− captures:
504− 2: keyword.fsharp
505− 3: keyword.fsharp
506− 4: keyword.fsharp
507− 5: variable.parameter.fsharp
508− 6: keyword.symbol.fsharp
509− 7: constant.language.unit.fsharp
510− pop: true
511− - include: comments
512− - include: attributes
513− - match: "([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)"
514− captures:
515− 1: entity.name.type.fsharp
516− - match: (<)
517− captures:
518− 1: keyword.fsharp
519− push:
520− - match: ((?<!:)>)
521− captures:
522− 1: keyword.fsharp
523− pop: true
524− - match: '((''|\^)``[[:alpha:]0-9`^:,._ ]+``|(''|\^)[[:alpha:]0-9`^:._]+)'
525− captures:
526− 1: entity.name.type.fsharp
527− - match: \b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\b
528− scope: keyword.fsharp
529− - match: (\()
530− captures:
531− 1: keyword.symbol.fsharp
532− push:
533− - match: (\))
534− captures:
535− 1: keyword.symbol.fsharp
536− pop: true
537− - match: (static member|member|new)
538− captures:
539− 1: keyword.fsharp
540− - include: common_binding_definition
541− - match: '([\w0-9''`^._]+)'
542− captures:
543− 1: entity.name.type.fsharp
544− - include: keywords
545− - match: \s*(private|internal|public)
546− captures:
547− 1: keyword.symbol.fsharp
548− 2: keyword.fsharp
549− - match: (\()
550− captures:
551− 1: keyword.symbol.fsharp
552− push:
553− - match: '\s*(?=(=)|[\n=]|(\(\))|(as))'
554− captures:
555− 1: keyword.symbol.fsharp
556− pop: true
557− - include: member_declaration
558− - include: keywords
559− string_formatter:
560− - match: (%0?-?(\d+)?((a|t)|(\.\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\+?A)))
561− scope: entity.name.type.format.specifier.fsharp
562− captures:
563− 1: keyword.format.specifier.fsharp
564− strings:
565− - match: '(?=[^\\])(@")'
566− captures:
567− 1: punctuation.definition.string.begin.fsharp
568− push:
569− - meta_scope: string.quoted.literal.fsharp
570− - match: (")(?!")
571− captures:
572− 1: punctuation.definition.string.end.fsharp
573− pop: true
574− - match: '"(")'
575− scope: constant.character.string.escape.fsharp
576− - match: '(?=[^\\])(""")'
577− captures:
578− 1: punctuation.definition.string.begin.fsharp
579− push:
580− - meta_scope: string.quoted.triple.fsharp
581− - match: (""")
582− captures:
583− 1: punctuation.definition.string.end.fsharp
584− pop: true
585− - include: string_formatter
586− - match: '(?=[^\\])(")'
587− captures:
588− 1: punctuation.definition.string.begin.fsharp
589− push:
590− - meta_scope: string.quoted.double.fsharp
591− - match: (")
592− captures:
593− 1: punctuation.definition.string.end.fsharp
594− pop: true
595− - match: '\\$[ \t]*'
596− scope: punctuation.separator.string.ignore-eol.fsharp
597− - match: '\\([\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})'
598− scope: constant.character.string.escape.fsharp
599− - match: '\\(?![\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8}).'
600− scope: invalid.illeagal.character.string.fsharp
601− - include: string_formatter
602− strp_inlined:
603− - match: (\()
604− captures:
605− 1: keyword.symbol.fsharp
606− push:
607− - match: (\))
608− captures:
609− 1: keyword.symbol.fsharp
610− pop: true
611− - include: strp_inlined_body
612− strp_inlined_body:
613− - include: comments
614− - include: anonymous_functions
615− - match: '(\^[[:alpha:]0-9''._]+)'
616− captures:
617− 1: entity.name.type.fsharp
618− - match: \b(and|when|or)\b
619− scope: keyword.fsharp
620− - match: (\()
621− captures:
622− 1: keyword.symbol.fsharp
623− push:
624− - match: (\))
625− captures:
626− 1: keyword.symbol.fsharp
627− pop: true
628− - include: strp_inlined_body
629− - match: '(static member|member)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)'
630− captures:
631− 1: keyword.fsharp
632− 2: variable.fsharp
633− 3: keyword.symbol.fsharp
634− - include: compiler_directives
635− - include: constants
636− - include: strings
637− - include: chars
638− - include: double_tick
639− - include: keywords
640− - include: text
641− - include: definition
642− - include: attributes
643− - include: keywords
644− - include: cexprs
645− - include: text
646− text:
647− - match: \\
648− scope: text.fsharp
649− tuple_signature:
650− - match: "(([?[:alpha:]0-9'`^._ ]+))+"
651− captures:
652− 1: entity.name.type.fsharp
653− - match: (\()
654− captures:
655− 1: keyword.symbol.fsharp
656− push:
657− - match: (\))
658− captures:
659− 1: keyword.symbol.fsharp
660− pop: true
661− - match: "(([?[:alpha:]0-9'`^._ ]+))+"
662− captures:
663− 1: entity.name.type.fsharp
664− - include: tuple_signature
665− - include: keywords
666− variables:
667− - match: \(\)
668− scope: constant.language.unit.fsharp
669− - match: '(\?{0,1})(``[[:alpha:]0-9''`^:,._ ]+``|[[:alpha:]0-9''`<>^._ ]\w*)'
670− captures:
671− 1: keyword.symbol.fsharp
672− 2: variable.parameter.fsharp
assets/syntaxes/JavaScript (Babel)deleted−1

Submodule changed.

assets/syntaxes/Jsonnetdeleted−1

Submodule changed.

assets/syntaxes/Juliadeleted−1

Submodule changed.

assets/syntaxes/LESSdeleted−1

Submodule changed.

assets/syntaxes/Nixdeleted−1

Submodule changed.

assets/syntaxes/Packagesdeleted−1

Submodule changed.

assets/syntaxes/PowerShelldeleted−1

Submodule changed.

assets/syntaxes/Protobufdeleted−1

Submodule changed.

assets/syntaxes/PureScriptdeleted−1

Submodule changed.

assets/syntaxes/Robotdeleted−1

Submodule changed.

assets/syntaxes/Syslogdeleted−1

Submodule changed.

assets/syntaxes/TOMLdeleted−1

Submodule changed.

assets/syntaxes/Terraformdeleted−1

Submodule changed.

assets/syntaxes/TypeScriptdeleted−1

Submodule changed.

assets/syntaxes/VimLdeleted−1

Submodule changed.

assets/syntaxes/VimL.sublime-syntaxdeleted−91
@@ -1,91 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: VimL
5−file_extensions:
6− - vim
7− - .vimrc
8−scope: source.viml
9−contexts:
10− main:
11− - include: comment
12− - include: string_quoted_double
13− - include: string_quoted_single
14− - include: string_regex
15− - include: inline_comment
16− - include: number_int
17− - include: number_hex
18− - include: keyword
19− - include: support_function
20− - include: support_variable
21− - include: support_type
22− - include: function_params
23− - include: function_definition
24− - include: function_call
25− - include: function
26− - include: variable
27− - include: expr
28− comment:
29− - match: ^\s*".*$
30− scope: comment.line.quotes.viml
31− captures:
32− 1: punctuation.definition.comment.vim
33− expr:
34− - match: (\|\||&&|==(\?|#)?|(!|>|<)=(#|\?)?|(=|!)~(#|\?)?|(>|<)(#|\?)is|isnot|\.|\*|\\|%)
35− scope: storage.function.viml
36− function:
37− - match: \b(fu(n|nction)?|end(f|fu|fun|function)?)\b
38− scope: storage.function.viml
39− function_call:
40− - match: '(([sgbwtl]|)?:?[0-9a-zA-Z_#]+)(?=\()'
41− scope: support.function.any-method
42− function_definition:
43− - match: '^\s*(function)\s*!?\s+(?=(s:)?[0-9a-zA-Z_#]+\s*\()'
44− captures:
45− 1: storage.function.viml
46− push:
47− - meta_scope: meta.function.viml
48− - match: (\()
49− captures:
50− 1: punctuation.definition.parameters.begin.viml
51− pop: true
52− - match: "(s:)?[0-9a-zA-Z_#]+"
53− scope: entity.name.function.viml
54− function_params:
55− - match: '-\w+='
56− scope: support.type.viml
57− inline_comment:
58− - match: '(?!\$)(")(?!\{).*$\n?'
59− scope: comment.line.quotes.viml
60− captures:
61− 1: punctuation.definition.comment.vim
62− keyword:
63− - match: \b(if|while|for|try|return|throw|end(if|for|while|try)?|au(g|group)|else(if|)?|do|in|catch|finally|:)\b
64− scope: keyword.control.viml
65− number_hex:
66− - match: "0x[0-9a-f]+"
67− scope: constant.numeric.hex
68− number_int:
69− - match: '-?\d+'
70− scope: constant.numeric.integer
71− string_quoted_double:
72− - match: '"(\\\\|\\"|\n[^\S\n]*\\|[^\n"])*"'
73− scope: string.quoted.double.viml
74− string_quoted_single:
75− - match: '''(''''|\n[^\S\n]*\\|[^\n''])*'''
76− scope: string.quoted.single.viml
77− string_regex:
78− - match: '/(\\\\|\\/|\n[^\S\n]*\\|[^\n/])*/'
79− scope: string.regexp.viml
80− support_function:
81− - match: \b(set(local|global)?|let|command|filetype|colorscheme|\w*map|\w*a(b|brev)?|syn|exe(c|cute)?|ec(ho|)?|au(tocmd|)?)\b
82− scope: support.function.viml
83− support_type:
84− - match: <.*?>
85− scope: support.type.viml
86− support_variable:
87− - match: '\b(am(enu|)?|(hl|inc)?search|[Bb]uf([Nn]ew[Ff]ile|[Rr]ead)?|[Ff]ile[Tt]ype)\b'
88− scope: support.variable.viml
89− variable:
90− - match: '([sSgGbBwWlLaAvV]:|@|$|&(?!&))\w*'
91− scope: variable.other.viml
assets/syntaxes/fish.sublime-syntaxdeleted−1009
@@ -1,1009 +0,0 @@
1−%YAML 1.2
2−---
3−# http://www.sublimetext.com/docs/3/syntax.html
4−name: friendly interactive shell (fish)
5−file_extensions:
6− - fish
7−first_line_match: '^#!.*\b(fish)|^#\s*-\*-[^*]*mode:\s*shell-script[^*]*-\*-'
8−scope: source.shell.fish
9−contexts:
10− main:
11− - include: comment-external
12− - include: line-continuation
13− - match: \)|end
14− comment: In an ideal world, command-call-standard would be performing this match because fish highlights the strings which follow as arguments. But we can't do that in a tmLanguage
15− push:
16− - meta_scope: meta.function-call.fish invalid.illegal.function-call.fish
17− - match: '(?=[\s;&)|<>])'
18− pop: true
19− - match: (?=\S)
20− comment: Anonymous scope - Base scope pipeline goes up until one of the definitive ends (newline and ';') or the sequences that could be an end if we're actually inside a $self scope right now (')' and "end")
21− push:
22− - match: \n|(;)|(?=\))|(?=end)
23− captures:
24− 1: meta.function-call.operator.fish keyword.operator.control.fish
25− pop: true
26− - match: '(?:[&|]|(?:[0-9]+)?(?:<|>>?|\^\^?))'
27− comment: Match operators ('&', pipe, and redirect) which cannot start a pipeline because they must be consumed within or after a pipeline
28− scope: invalid.illegal.operator.fish
29− - include: comment-internal-end
30− - match: (?=\S)
31− comment: The reason we match '&' here is because we explicitly require it come after a command (unlike ';' which can be alone on a line)
32− push:
33− - match: '(?=[\n;)])|(&)'
34− captures:
35− 1: meta.function-call.operator.fish keyword.operator.control.fish
36− pop: true
37− - include: pipeline
38− argument:
39− - match: '(?![\s;&)|<>^])'
40− comment: End arg if it precedes whitespace or operators (excluding stderr redirect '^' due to a fish quirk)
41− push:
42− - match: '(?=[\s;&)|<>])'
43− pop: true
44− - match: \%
45− comment: Process expansion only occurs if the '%' is at the front of the argument, and continues for the entire argument
46− captures:
47− 0: meta.string.unquoted.fish punctuation.definition.process.fish
48− push:
49− - meta_scope: meta.parameter.argument.process-expansion.fish
50− - match: '(?=[\s;&)|<>])'
51− pop: true
52− - match: '(?:self|last)(?=$|[\s;&)|<>])'
53− comment: Match special process names. By a convention that I'm making up, scope them as a type of variable
54− scope: meta.string.unquoted.fish variable.language.fish
55− - include: parameter-patterns
56− - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>])'
57− comment: Treat a sequence of integers (with possible sign and decimal separator) as a standalone constant. Do this separate to the
58− scope: meta.parameter.argument.numeric.fish meta.string.unquoted.fish constant.numeric.fish
59− - match: '(?![\s($])'
60− comment: This scope can be used by plugins to locate arguments which don't *start* with command substitution or variable expansion and may directly resolve to file paths. Of course, they could have command substitution or variable expansion further on in them, but looking ahead for that too is nontrivial
61− push:
62− - meta_scope: meta.parameter.argument.path.fish
63− - match: '(?=[\s;&)|<>])'
64− pop: true
65− - match: \~
66− comment: Home directory expansion only occurs if the '~' is at the front of the argument, so check it first
67− scope: meta.string.unquoted.fish keyword.operator.tilde.fish
68− - include: parameter-patterns
69− - match: (?!\s)
70− comment: Use standard parameter patterns for whatever doesn't match the above
71− push:
72− - meta_scope: meta.parameter.argument.fish
73− - match: '(?=[\s;&)|<>])'
74− pop: true
75− - include: parameter-patterns
76− command-call-meta:
77− - match: '(builtin|command|exec)\b(?!\s+[-&|])'
78− comment: These meta commands force the parameter to behave as a standard command. They stop at piping
79− captures:
80− 1: support.function.fish
81− push:
82− - match: |-
83− (?x)
84− (?# Look ahead for control operations after whitespace)
85− (?=\s*
86− (?:
87− (?# Find simple control operations)
88− [\n;&)]
89− |
90− (?# Find piping)
91− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
92− )
93− )
94− pop: true
95− - include: line-continuation
96− - include: command-call-standard
97− - match: '(not)\b(?!\s+[-&|])'
98− comment: This meta command acts as a unary operator on the command to the right, which can also be a meta command. It only applies to one command and stops at piping
99− captures:
100− 1: keyword.operator.word.fish
101− push:
102− - match: |-
103− (?x)
104− (?# Look ahead for control operations after whitespace)
105− (?=\s*
106− (?:
107− (?# Find simple control operations)
108− [\n;&)]
109− |
110− (?# Find piping)
111− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
112− )
113− )
114− pop: true
115− - include: line-continuation
116− - include: command-call-meta
117− - include: command-call-standard
118− command-call-standard:
119− - match: '\#'
120− comment: A command call can't be a comment, but this match will only be satisfied if the command is first after a pipe because comments are otherwise consumed earlier
121− push:
122− - meta_scope: invalid.illegal.function-call.fish
123− - match: '(?=[\n)])'
124− pop: true
125− - match: "(?:[&|<>^])"
126− comment: Match an operator which cannot start a command call but does not stop the next characters from being interpreted as a command
127− scope: invalid.illegal.operator.fish
128− - match: (?=\S)
129− comment: Anonymous scope - A complete command comprising a name element and optional parameter, redirection, and comment elements
130− push:
131− - match: |-
132− (?x)
133− (?# Look ahead for operators)
134− (?=
135− (?:
136− (?# Find a control operator)
137− [\n;&)]
138− |
139− (?# Find a pipe operator)
140− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
141− )
142− )
143− pop: true
144− - match: '(?![\s<>^%])'
145− comment: Anonymous scope - A name or block element. If a block is found, everything up to the `end` command is captured here. Note that redirection and process expansion can't start the element
146− push:
147− - match: '(?=[\s;&)|<>])'
148− pop: true
149− - include: command-call-standard-block
150− - match: '\[(?=[\s<>]|\\\n)'
151− comment: "Look for the alternate form of test, which uses a matching pair of '[' ']'"
152− captures:
153− 0: support.function.test.begin.fish
154− push:
155− - match: '(\])|(\n|[;&)|].*)'
156− captures:
157− 1: support.function.test.end.fish
158− 2: invalid.illegal.function-call.fish
159− pop: true
160− - include: line-continuation
161− - include: parameter
162− - include: redirection
163− - match: '(?:break|continue|return)(?=[\s;&)|<>])'
164− comment: Look for loop/function control commands. We perform no checking on the validity of their scope (because only allowing them in the correct scope won't work if they are used within if-blocks) or parameters (because fish does that during execution not parsing)
165− captures:
166− 0: keyword.control.conditional.fish
167− - match: (?!\s)
168− comment: Anonymous scope - A generic name element
169− push:
170− - match: '(?=[\s;&)|<>])'
171− pop: true
172− - match: (?=\()
173− comment: fish would match the whole command name invalid if there was a command substitution anywhere in it, but we can't look ahead that effectively
174− push:
175− - meta_scope: invalid.illegal.function-call.fish
176− - match: '(?=[\s;&)|<>])'
177− pop: true
178− - match: \(
179− push:
180− - match: '\)|(?=[\n;&)|<>])'
181− pop: true
182− - match: (?!\s)
183− comment: Otherwise, treat the element as a fraction of a name made of arbitrary strings (which breaks at an escaped newline)
184− push:
185− - meta_scope: variable.function.fish
186− - match: '(?=[\s;&()|<>])'
187− pop: true
188− - match: \$
189− comment: The string scope explicitly forbids '$' so that the argument rule can pick it up as a variable expansion, but '$' is treated as a literal in command names, so we have to match it separately
190− scope: meta.string.unquoted.fish
191− - include: string
192− - match: \%
193− comment: A command name can't begin with a process expansion operator (however the variable expansion operator '$' is allowed)
194− push:
195− - meta_scope: invalid.illegal.function-call.fish
196− - match: '(?=[\s;&)|<>])'
197− pop: true
198− - include: string
199− - include: redirection
200− - match: '(?:[^\n\S]+)'
201− comment: Match any whitespace characters that aren't the newline
202− push:
203− - match: |-
204− (?x)
205− (?# Look ahead for operators)
206− (?=
207− (?:
208− (?# Find a control operator)
209− [\n;&)]
210− |
211− (?# Find a pipe operator)
212− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
213− )
214− )
215− pop: true
216− - match: '(?!--[\s;&)|<>])'
217− comment: A list of elements that does not start with an end-of-options parameter
218− push:
219− - match: |-
220− (?x)
221− (?# Look ahead for operators or the end of options)
222− (?=
223− (?:
224− (?# Find a control operator)
225− [\n;&)]
226− |
227− (?# Find a pipe operator)
228− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
229− |
230− (?# Find a double hyphen)
231− --[\s;&)|<>]
232− )
233− )
234− pop: true
235− - include: line-continuation
236− - include: comment-internal-end
237− - include: redirection
238− - include: parameter
239− - match: '(?=--[\s;&)|<>])'
240− comment: A list of elements that starts with an end-of-options parameter
241− push:
242− - match: |-
243− (?x)
244− (?# Look ahead for operators)
245− (?=
246− (?:
247− (?# Find a control operator)
248− [\n;&)]
249− |
250− (?# Find a pipe operator)
251− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
252− )
253− )
254− pop: true
255− - match: '(?=--[\s;&)|<>])'
256− comment: Contain just the end-of-options parameter and give it the normal scope
257− push:
258− - match: '(?=[\s;&)|<>])'
259− pop: true
260− - include: parameter
261− - match: (?=\s)
262− comment: A list of elements (now forcibly using arguments)
263− push:
264− - match: |-
265− (?x)
266− (?# Look ahead for operators)
267− (?=
268− (?:
269− (?# Find a control operator)
270− [\n;&)]
271− |
272− (?# Find a pipe operator)
273− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
274− )
275− )
276− pop: true
277− - include: line-continuation
278− - include: comment-internal-end
279− - include: redirection
280− - include: argument
281− command-call-standard-block:
282− - match: '(begin|while|if|for|switch|function)\s*([&|<>])'
283− comment: Block commands cannot be backgrounded, piped, or redirected
284− captures:
285− 1: variable.function.fish
286− 2: invalid.illegal.operator.fish
287− - match: (begin)\s*(\))
288− comment: The begin command uniquely cannot be the last command in a command substitution
289− captures:
290− 1: variable.function.fish
291− 2: invalid.illegal.operator.fish
292− - match: 'begin(?=\s*$|\s*[\n;]|\s+[^\s-])'
293− comment: The begin command can be alone on a line or followed by any command that doesn't start with a '-'. If a '-' is seen it shouldn't be treated as a block
294− captures:
295− 0: keyword.control.conditional.fish
296− push:
297− - meta_scope: meta.block.begin.fish
298− - match: 'end(?=$|[\s;&)|<>])'
299− captures:
300− 0: keyword.control.conditional.fish
301− pop: true
302− - include: main
303− - match: '(?=while\s+[^\s;)-])'
304− comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope
305− push:
306− - meta_scope: meta.block.while.fish
307− - match: 'end(?=$|[\s;&)|<>])'
308− captures:
309− 0: keyword.control.conditional.fish
310− pop: true
311− - match: while
312− comment: Anonymous scope - Capture the command name we know is there, include a single instance of a pipeline, and end when an operator is seen
313− captures:
314− 0: keyword.control.conditional.fish
315− push:
316− - match: '\s*(?=[\n;&)])'
317− pop: true
318− - include: line-continuation
319− - include: pipeline
320− - match: '\n|(;)|([&)])'
321− comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen
322− captures:
323− 1: keyword.operator.control.fish
324− 2: invalid.illegal.operator.fish
325− push:
326− - match: '(?=end(?:$|[\s;&)|<>]))'
327− pop: true
328− - include: main
329− - match: '(?=if\s+[^\s;)-])'
330− comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope
331− push:
332− - meta_scope: meta.block.if.fish
333− - match: 'end(?=$|[\s;&)|<>])'
334− captures:
335− 0: keyword.control.conditional.fish
336− pop: true
337− - include: command-call-standard-block-if-internal
338− - match: '(?=for\s+[^\s;)-])'
339− comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope
340− push:
341− - meta_scope: meta.block.for-in.fish
342− - match: 'end(?=$|[\s;&)|<>])'
343− captures:
344− 0: keyword.control.conditional.fish
345− pop: true
346− - match: (for)(?:\s+)
347− comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the varname), and end when the whitespace after the varname is captured
348− captures:
349− 1: keyword.control.conditional.fish
350− push:
351− - match: \s+
352− pop: true
353− - include: line-continuation
354− - include: parameter
355− - match: \S+
356− comment: Capture anything that a parameter explicitly rejects, which is mostly operators
357− scope: invalid.illegal.operator.fish
358− - include: line-continuation
359− - match: in(?=\s)
360− comment: Anonymous scope - Capture the command name which might be there, include an arbitrary number of arguments, and end when the control operator is seen
361− captures:
362− 0: keyword.control.conditional.fish
363− push:
364− - match: '\s*(?=[\n;&)])'
365− pop: true
366− - include: line-continuation
367− - include: comment-internal-end
368− - include: argument
369− - match: '\n|(;)|([&)])'
370− comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen
371− captures:
372− 1: keyword.operator.control.fish
373− 2: invalid.illegal.operator.fish
374− push:
375− - match: '(?=end(?:$|[\s;&)|<>]))'
376− pop: true
377− - include: main
378− - match: '\S+?(?=[\s;&)])'
379− comment: Anything beside line continuation, "in", or a control operator is invalid
380− scope: invalid.illegal.function-call.fish
381− - match: '(?=switch\s+[^\s;)-])'
382− comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope
383− push:
384− - meta_scope: meta.block.switch.fish
385− - match: 'end(?=$|[\s;&)|<>])'
386− captures:
387− 0: keyword.control.conditional.fish
388− pop: true
389− - match: (?=switch)
390− comment: Anonymous scope - Match the valid part of the switch statement, then look for an invalid part
391− push:
392− - match: '\s*(?=[\n;&)])'
393− pop: true
394− - match: (switch)(?:\s+)
395− comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the value), and end when whitespace or a control operator is seen
396− captures:
397− 1: keyword.control.conditional.fish
398− push:
399− - match: '(?=[\s;&)])'
400− pop: true
401− - include: line-continuation
402− - include: parameter
403− - match: \S+
404− comment: Capture anything that a parameter explicitly rejects, which is mostly operators
405− scope: invalid.illegal.operator.fish
406− - match: \s+
407− comment: Anonymous scope - Capture whitespace which might be there, match any non-control-operator strings as invalid, and end when a control operator is seen
408− push:
409− - match: '(?=[\n;&)])'
410− pop: true
411− - match: '\S+?(?=[\s;&)])'
412− scope: invalid.illegal.string.fish
413− - match: '\n|(;)|([&)])'
414− comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen
415− captures:
416− 1: keyword.operator.control.fish
417− 2: invalid.illegal.operator.fish
418− push:
419− - match: '(?=end(?:$|[\s;&)|<>]))'
420− pop: true
421− - match: 'case(?=[\s;&)])'
422− comment: Anonymous scope - Capture the command name which might be there, include an arbitrary number of arguments, and end when the control operator is captured
423− captures:
424− 0: keyword.control.conditional.fish
425− push:
426− - match: '\n|(;)|([&)])'
427− captures:
428− 1: keyword.operator.control.fish
429− 2: invalid.illegal.operator.fish
430− pop: true
431− - include: line-continuation
432− - include: comment-internal-end
433− - include: argument
434− - match: '\S+?(?=[\s;&)])'
435− comment: Anything else (eg, redirection) is illegal
436− scope: invalid.illegal.operator.fish
437− - include: main
438− - match: '(?=function\s+[^\s;)-])'
439− comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope
440− push:
441− - meta_scope: meta.block.function.fish
442− - match: 'end(?=$|[\s;&)|<>])'
443− captures:
444− 0: keyword.control.conditional.fish
445− pop: true
446− - match: (?=function)
447− comment: Anonymous scope - Match the defined name of the function statement, then look for further parameters
448− push:
449− - match: '\s*(?=[\n;&)])'
450− pop: true
451− - match: (function)(?:\s+)
452− comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the value), and end when whitespace or a control operator is seen
453− captures:
454− 1: keyword.control.conditional.fish
455− push:
456− - match: '(?=[\s;&)])'
457− pop: true
458− - include: line-continuation
459− - match: "(?:[()|<>])"
460− push:
461− - meta_scope: invalid.illegal.string.fish
462− - match: '(?=[\s;&)])'
463− pop: true
464− - match: (?!\\\n)
465− comment: Anonymous scope - Start when an escaped newline isn't present, and end when whitespace or an operator is seen
466− push:
467− - match: '(?=[\s;&()|<>])'
468− pop: true
469− - match: (?!\s)
470− push:
471− - meta_scope: entity.name.function.fish
472− - match: '(?=[\s;&()|<>])'
473− pop: true
474− - include: parameter
475− - match: \s+
476− comment: Anonymous scope - Capture whitespace which might be there, then match anything normal for a command call
477− push:
478− - match: '(?=[\n;&)])'
479− pop: true
480− - include: line-continuation
481− - include: comment-internal-end
482− - include: redirection
483− - include: parameter
484− - match: '\n|(;)|([&)])'
485− comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen
486− captures:
487− 1: keyword.operator.control.fish
488− 2: invalid.illegal.operator.fish
489− push:
490− - match: '(?=end(?:$|[\s;&)|<>]))'
491− pop: true
492− - include: main
493− command-call-standard-block-if-internal:
494− - match: '(?=if(?:\s*\n|\s+[^\s;]))'
495− comment: Anonymous scope - Capture an `if` and the command up to the control operator, then capture from the control operator indefinitely
496− push:
497− - match: '(?=end(?:$|[\s;&)|<>]))'
498− pop: true
499− - match: if
500− comment: Anonymous scope - Match the command name we know is there, include a single instance of a pipeline, and end when a control operator is seen
501− captures:
502− 0: keyword.control.conditional.fish
503− push:
504− - match: '\s*(?=[\n;&])'
505− pop: true
506− - include: line-continuation
507− - include: pipeline
508− - match: \n|(;)|(&)
509− comment: Anonymous scope - Match the operator we know is there, then include the base scope or an `else` structure
510− captures:
511− 1: keyword.operator.control.fish
512− 2: invalid.illegal.operator.fish
513− push:
514− - match: '(?=end(?:$|[\s;&)|<>]))'
515− pop: true
516− - match: '(?=else\s*[\s;])'
517− comment: Anonymous scope - Capture an `else` up to the control operator or the start of an `if` structure, then match from the control operator indefinitely or match an `if` structure
518− push:
519− - match: '(?=end(?:$|[\s;&)|<>]))'
520− pop: true
521− - match: 'else(?=\s*[\s;])'
522− comment: Anonymous scope - Match the `else` we know is there and any comment, and mark anything besides an `if` as illegal
523− captures:
524− 0: keyword.control.conditional.fish
525− push:
526− - match: '\s*(?=[\n;&]|if(?:\s*\n|\s+[^\s;]))'
527− pop: true
528− - include: line-continuation
529− - include: comment-internal-end
530− - match: '\S+?(?=[\s;&])'
531− comment: Anything else is illegal
532− scope: invalid.illegal.string.fish
533− - match: \n|(;)|(&)
534− comment: Anonymous scope - Match the operator which will be there if no `if` was seen, then include the base scope which marks further `else` commands as invalid
535− captures:
536− 1: keyword.operator.control.fish
537− 2: invalid.illegal.operator.fish
538− push:
539− - match: '(?=end(?:$|[\s;&)|<>]))'
540− pop: true
541− - include: main
542− - include: command-call-standard-block-if-internal
543− - include: main
544− command-substitution:
545− - match: (?=\()
546− comment: 'Capture "(...)" or "(...)[...]"'
547− push:
548− - match: '(?![\(\[])'
549− pop: true
550− - match: \(
551− captures:
552− 0: punctuation.section.parens.begin.fish
553− push:
554− - meta_scope: meta.parens.command-substitution.fish
555− - match: \)
556− captures:
557− 0: punctuation.section.parens.end.fish
558− pop: true
559− - include: main
560− - include: index-expansion
561− comment-external:
562− - match: '\#'
563− comment: A full or inline comment outside of any command call
564− captures:
565− 0: punctuation.definition.comment.fish
566− push:
567− - meta_scope: comment.line.external.fish
568− - match: \n
569− pop: true
570− comment-internal-end:
571− - match: '\#'
572− comment: An inline comment at the end of a command call. Does not consume the newline, thus allowing the command call to capture it and end
573− captures:
574− 0: punctuation.definition.comment.fish
575− push:
576− - meta_scope: comment.line.internal.end.fish
577− - match: (?=\n)
578− pop: true
579− index-expansion:
580− - match: '\['
581− comment: In other words, the anonymous scope which contains the variable and the index expansion parameter list should only be allowed to contain a single copy of each of those two things. We cannot enforce that without a scope stack. Our workaround is to allow an infinite number of these and hope the user can keep track of when there are too many
582− captures:
583− 0: punctuation.section.brackets.begin.fish
584− push:
585− - meta_scope: meta.brackets.index-expansion.fish
586− - match: '\]'
587− captures:
588− 0: punctuation.section.brackets.end.fish
589− pop: true
590− - match: \.\.
591− scope: keyword.operator.range.fish
592− - include: command-substitution
593− - include: variable-expansion
594− - include: string-quoted
595− - match: '(?:[+-]?[0-9]+)(?=[\s;&)|<>]|\]|\.\.)'
596− scope: constant.numeric.fish
597− - match: '(?![\s''"]|\.\.)'
598− comment: 'Begin/end string as before with the addition of breaking at a '']'' or ".."'
599− push:
600− - match: '(?=[\s;&)|<>''"]|\]|\.\.)'
601− pop: true
602− - include: string-unquoted-patterns
603− line-continuation:
604− - match: (?=\\\n)
605− comment: End when an unescaped newline is seen, the first character of a line isn't whitespace or a comment character or the escaped newline itself, or if the next character after some consumed whitespace isn't more whitespace or a comment character
606− push:
607− - match: '(?=\n)|^(?![\s\#\\])|\s(?![\s\#])'
608− pop: true
609− - match: \\\n
610− scope: constant.character.escape
611− - match: '\#'
612− captures:
613− 0: punctuation.definition.comment.fish
614− push:
615− - meta_scope: comment.line.continuation.fish
616− - match: \n
617− pop: true
618− parameter:
619− - match: '(?![\s;&)|<>^])'
620− comment: See the argument rule for more general information on parameters
621− push:
622− - match: '(?=[\s;&)|<>])'
623− pop: true
624− - match: '(?:--)(?=[\s;&)|<>])'
625− comment: End of options (parameter of just two hyphens)
626− scope: meta.parameter.option.end.fish variable.parameter.fish punctuation.definition.option.end.fish meta.string.unquoted.fish
627− - match: (?=--)
628− comment: Long option (parameter starting with two hyphens)
629− push:
630− - meta_scope: meta.parameter.option.long.fish
631− - match: '(?=[\s;&)|<>])'
632− pop: true
633− - match: (?:--)
634− captures:
635− 0: punctuation.definition.option.long.begin.fish meta.string.unquoted.fish
636− push:
637− - meta_scope: variable.parameter.fish
638− - match: '(?=[\s;&)|<>]|=)'
639− pop: true
640− - include: command-substitution
641− - match: (?=\$)
642− push:
643− - meta_scope: meta.string.unquoted.fish
644− - match: (?!\$)
645− pop: true
646− - include: variable-expansion
647− - include: string-quoted
648− - match: '(?![''"])'
649− push:
650− - meta_scope: meta.string.unquoted.fish
651− - match: '(?=[\s;&()|<>''"$]|\=)'
652− pop: true
653− - include: string-unquoted-patterns
654− - match: (?:=)
655− comment: Consume the '=' and then use standard parameter patterns as well as numerics
656− captures:
657− 0: variable.parameter.fish punctuation.definition.option.long.separator.fish meta.string.unquoted.fish
658− push:
659− - match: '(?=[\s;&)|<>])'
660− pop: true
661− - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>])'
662− scope: meta.string.unquoted.fish constant.numeric.fish
663− - include: parameter-patterns
664− - match: '(?:-)(?=[^\s;&)|<>])'
665− comment: Short option (parameter starting with one hyphen)
666− captures:
667− 0: punctuation.definition.option.short.fish meta.string.unquoted.fish
668− push:
669− - meta_scope: meta.parameter.option.short.fish variable.parameter.fish
670− - match: '(?=[\s;&)|<>])'
671− pop: true
672− - include: parameter-patterns
673− - include: argument
674− parameter-patterns:
675− - include: command-substitution
676− - match: (?=\$)
677− comment: Give variable expansion the unquoted string scope
678− push:
679− - meta_scope: meta.string.unquoted.fish
680− - match: (?!\$)
681− pop: true
682− - include: variable-expansion
683− - include: string
684− pipeline:
685− - match: '(?:[&|]|(?:[0-9]+)?(?:<|>>?|\^\^?))'
686− comment: Todo - Restructure pipeline so that this match isn't duplicated from the base scope, which it must also be for any other scopes which implement their own control operator consumption. Might require the unary operator commands to become an explicit recursive match (though we tried this once and it was more complicated than anything should be)
687− scope: invalid.illegal.operator.fish
688− - match: (and|or)\b(?!\s+-)
689− comment: Todo - These commands cannot be followed by backgrounding, piping, or redirection alone. Add logic to catch these cases. It will be extensive...
690− scope: meta.function-call.fish keyword.operator.word.fish
691− - include: line-continuation
692− - match: (not)\b(?!\s+-)
693− comment: This is a hack for now, which allows nesting of 'not' and 'and'/'or' commands. A better solution will be explicit recursivity in these commands
694− scope: meta.function-call.fish keyword.operator.word.fish
695− - match: '(?:case|else|end)(?=[\s;&)|<>])'
696− comment: Match a command which is illegal in the base scope
697− scope: invalid.illegal.function-call.fish
698− - match: '(?=[^\s#])'
699− comment: Anonymous scope - Pipeline. Define a pipeline as either one command call, or multiple command calls linked by pipe operators ('|', '2>|', etc). The pipeline terminates at the first encounter of any control operator
700− push:
701− - match: '(\s*)(?=[\n;&)])'
702− captures:
703− 1: meta.function-call.fish
704− pop: true
705− - match: |-
706− (?x)
707− (?# Negative lookahead for piping)
708− (?!
709− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
710− )
711− comment: Match the first command of a potential pipeline
712− push:
713− - meta_scope: meta.function-call.fish
714− - match: |-
715− (?x)
716− (?# Look ahead for operators after whitespace)
717− (?=\s*
718− (?:
719− (?# Find a control operator)
720− [\n;&)]
721− |
722− (?# Find a pipe operator)
723− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
724− )
725− )
726− pop: true
727− - include: command-call-meta
728− - include: command-call-standard
729− - match: |-
730− (?x)
731− (?# Look ahead for piping)
732− (?=
733− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
734− )
735− comment: Match a second or later command of a pipeline, starting with the connective piping
736− push:
737− - meta_scope: meta.function-call.fish
738− - match: '(?=\s*[\n;&)])'
739− pop: true
740− - match: |-
741− (?x)
742− (?# Look ahead for piping followed by either control operators or piping)
743− (?=
744− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
745− \s*
746− (?:
747− $
748− |
749− [\n;&)]
750− |
751− (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\|
752− )
753− )
754− comment: Match a pipe not followed by a command, hence a malformed segment of the pipeline
755− push:
756− - match: '(?=\s*$|\s*[\n;&)])'
757− pop: true
758− - match: '(?:(?:[0-9]+)?(?:<|>|>>))?\|(?=\s*$|\s*[\n)])'
759− comment: If the pipeline would end implicitly (ie, with a newline or close parenthesis), then mark the pipe itself invalid
760− scope: invalid.illegal.operator.fish
761− - match: |-
762− (?x)
763− (?# Consume valid piping; captures 1 2 3)
764− (?:([0-9]+)?(<|>>?|\^\^?))?(\|)
765− (?# Consume whitespace)
766− \s*
767− (?# Consume remainder; capture 4)
768− (.*)
769− comment: If the pipeline would end with an explicit operator or encounter a second set of piping, then mark the first set of piping as valid and beyond as invalid
770− captures:
771− 1: meta.pipe.fish constant.numeric.file-descriptor.fish
772− 2: meta.pipe.fish keyword.operator.redirect.fish
773− 3: meta.pipe.fish keyword.operator.pipe.fish
774− 4: invalid.illegal.function-call.fish
775− - match: '(?:([0-9]+)?(<|>>?|\^\^?))?(\|)'
776− comment: Pick up a legitimate pipe
777− scope: meta.pipe.fish
778− captures:
779− 1: constant.numeric.file-descriptor.fish
780− 2: keyword.operator.pipe.redirect.fish
781− 3: keyword.operator.pipe.fish
782− - include: line-continuation
783− - include: command-call-meta
784− - include: command-call-standard
785− redirection:
786− - match: '(?=(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])\&)'
787− comment: End at anything that would end a parameter, including redirections *if* they are *not* this same type of redirection (ie, have an '&'), in which case this scope stays open and we match the next one. The negative lookahead for <>^ at the end is to keep ST2 happy (not hanging)
788− push:
789− - match: '(?=[\s;&)|]|(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])(?![&<>^]))'
790− pop: true
791− - match: '(?:([0-9]+)(<|>|>>)|(>>|\^\^|[<>^]))(\&)\s*'
792− comment: We have to try and catch an '&' here because if it is seen by the outer end match then it will be considered a valid operator and the redirection scope will immediately terminate
793− captures:
794− 1: constant.numeric.file-descriptor.fish
795− 2: keyword.operator.redirect.fish
796− 3: keyword.operator.redirect.fish
797− 4: keyword.operator.redirect.dereference.fish
798− push:
799− - meta_scope: meta.redirection.fish
800− - match: '(\&.*$)|(?![&\\])'
801− captures:
802− 1: invalid.illegal.file-descriptor.fish
803− pop: true
804− - include: line-continuation
805− - match: (?=\\\n)
806− push:
807− - meta_scope: meta.redirection.fish
808− - match: (?!\\\n)
809− pop: true
810− - include: line-continuation
811− - match: (?=\()
812− comment: Evaluates to a string which may be an integer
813− push:
814− - meta_scope: meta.redirection.fish
815− - match: (?!\()
816− pop: true
817− - include: command-substitution
818− - match: (?=\$)
819− comment: Evaluates to a string which may be an integer
820− push:
821− - meta_scope: meta.redirection.fish
822− - match: (?!\$)
823− pop: true
824− - include: variable-expansion
825− - match: '(?=[''"])'
826− comment: May be a quoted integer, which is allowed
827− push:
828− - meta_scope: meta.redirection.fish
829− - match: '(?![''"])'
830− pop: true
831− - include: string-quoted
832− - match: '(?:[0-9]+)(?=$|[\s;&)|<>])'
833− scope: meta.redirection.file-descriptor.fish constant.numeric.file-descriptor.fish
834− - match: '(?:-)(?=$|[\s;&)|<>])'
835− scope: meta.redirection.file-descriptor.fish keyword.operator.redirect.close.fish
836− - match: (?:\S+.*)$
837− comment: Anything else is illegal
838− scope: meta.redirection.fish invalid.illegal.file-descriptor.fish
839− - match: '(?=(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])\??)'
840− comment: End at anything that would end a parameter, including redirections *if* they are *not* this same type of redirection (ie, redirection into file descriptor, or into pipe), in which case this scope stays open and we match the next one
841− push:
842− - match: '(?=[\s;&)|]|(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])[&|])'
843− pop: true
844− - match: '(?:([0-9]+)(<|>|>>)|(>>|\^\^|[<>^]))(\?)?\s*'
845− comment: We have to try and catch bad operators here because if they are seen by the outer end match then they will be considered valid and the redirection scope will immediately terminate
846− captures:
847− 1: constant.numeric.file-descriptor.fish
848− 2: keyword.operator.redirect.fish
849− 3: keyword.operator.redirect.fish
850− 4: keyword.operator.redirect.clobber-test.fish
851− push:
852− - meta_scope: meta.redirection.fish
853− - match: "((?:[&?]|[0-9]*[<>^]).*$)|(?![&?<>^])"
854− captures:
855− 1: invalid.illegal.path.fish
856− pop: true
857− - include: line-continuation
858− - match: (?=\\\n)
859− push:
860− - meta_scope: meta.redirection.fish
861− - match: (?!\\\n)
862− pop: true
863− - include: line-continuation
864− - match: (?=\()
865− comment: Evaluates to a string, so path cannot begin with '('
866− push:
867− - meta_scope: meta.redirection.fish
868− - match: (?!\()
869− pop: true
870− - include: command-substitution
871− - match: (?=\$)
872− comment: Evaluates to a string, so path cannot begin with '$'
873− push:
874− - meta_scope: meta.redirection.fish
875− - match: (?!\$)
876− pop: true
877− - include: variable-expansion
878− - match: "(?:[&?]|[0-9]*[<>^]).*$"
879− comment: Check for characters which are associated with redirection, so path cannot begin with them. Don't put them in the meta.redirection.path scope, so that only valid paths are in there
880− scope: meta.redirection.fish invalid.illegal.path.fish
881− - match: \~
882− scope: meta.redirection.path.fish keyword.operator.tilde.fish
883− - match: '(?:\''(?:\\[\''\\]|[^\''\\])*\''|\"(?:\\[\"$\n\\]|[^\"$\n\\])*\"|(?:\\[abefnrtv $\\*?#(){}\[\]<>^&;|"'']|\\[~%]|\\[xX][0-9A-Fa-f]{1,2}|\\[0-7]{1,3}|\\u[0-9A-Fa-f]{1,4}|\\U[0-9A-Fa-f]{1,8}|\\c[?-~]|[^\s$\\*?~%#()<>&|;"'']|\\(?=[^abefnrtv\s$\\*?#(){}\[\]<>^&;|"''xXuUc])|\\\n|[~%#])+)+'
884− comment: Use the function call match to build a file path, as the syntax is fairly similar (possibly identical, after exceptions caught above? I haven't checked)
885− scope: meta.redirection.path.fish
886− string:
887− - include: string-quoted
888− - include: string-unquoted
889− string-quoted:
890− - match: \'
891− captures:
892− 0: punctuation.definition.string.begin.fish
893− push:
894− - meta_scope: string.quoted.single.fish
895− - match: \'
896− captures:
897− 0: punctuation.definition.string.end.fish
898− pop: true
899− - match: '\\[\''\\]'
900− comment: Only accepted escapes are \' and \\
901− scope: constant.character.escape.fish
902− - match: \"
903− captures:
904− 0: punctuation.definition.string.begin.fish
905− push:
906− - meta_scope: string.quoted.double.fish
907− - match: \"
908− captures:
909− 0: punctuation.definition.string.end.fish
910− pop: true
911− - match: '\\[\n\"\\$]'
912− comment: Only accepted escapes are \<newline>, \", \\, and \$
913− scope: constant.character.escape.fish
914− - include: variable-expansion
915− string-unquoted:
916− - match: '(?![\s;&()|<>''"$])'
917− comment: End unquoted string at anything that can't be in one
918− push:
919− - meta_scope: meta.string.unquoted.fish
920− - match: '(?=[\s;&()|<>''"$])'
921− pop: true
922− - include: string-unquoted-patterns
923− string-unquoted-patterns:
924− - match: |-
925− (?x)
926− \\[abefnrtv $\\*?#(){}\[\]<>^&|;"']
927− |
928− \\[~%]
929− |
930− \\[xX][0-9A-Fa-f]{1,2}
931− |
932− \\[0-7]{1,3}
933− |
934− \\u[0-9A-Fa-f]{1,4}
935− |
936− \\U[0-9A-Fa-f]{1,8}
937− |
938− \\c[?-~]
939− comment: This list follows the order given in official fish documentation. Technically '~' and '%' only need escaping if they appear at the front of a parameter. If they are escaped within a parameter, then fish does not *highlight* the escape, however it does silently *parse* the escape and the backslash is removed before the parameter is passed to the command. So, we highlight these escapes as well since they are actually treated as valid escapes by fish
940− scope: constant.character.escape.fish
941− - match: \\\n
942− comment: Just for convenience we separate the newline escape
943− scope: constant.character.escape.fish
944− - match: '\{'
945− captures:
946− 0: punctuation.section.braces.begin.fish
947− push:
948− - meta_scope: meta.braces.brace-expansion.fish
949− - match: '(\})|(\n|[;&)|].*)'
950− captures:
951− 1: punctuation.section.braces.end.fish
952− 2: invalid.illegal.punctuation.section.fish
953− pop: true
954− - match: \,
955− scope: punctuation.section.braces.separator.fish
956− - include: command-substitution
957− - include: variable-expansion
958− - match: '(?:[^\S\n]+)'
959− comment: Unescaped spaces aren't allowed, as technically that separates the braces into two separate arguments. Don't consume a newline though, so the scope end capture can get it
960− scope: invalid.illegal.whitespace.fish
961− - include: string-quoted
962− - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>]|\}|\,)'
963− scope: constant.numeric.fish
964− - match: '(?![\s;&)|<>''"])'
965− comment: "Begin/end string as before with the addition of breaking at a '}' or ','"
966− push:
967− - match: '(?=[\s;&)|<>''"]|\}|\,)'
968− pop: true
969− - match: \\\,
970− scope: constant.character.escape.fish
971− - include: string-unquoted-patterns
972− - match: (\*\*)|(\*)|(\?)
973− scope: meta.wildcard-expansion.fish
974− captures:
975− 1: keyword.operator.double-star.fish
976− 2: keyword.operator.single-star.fish
977− 3: keyword.operator.question-mark.fish
978− variable-expansion:
979− - include: variable-expansion-illegal
980− - match: (?=\$)
981− comment: 'Capture "$foo" or "$foo[]" or "$$foo[][]" etc'
982− push:
983− - meta_scope: meta.variable-expansion.fish
984− - match: '(?=[^\$\w\[])'
985− pop: true
986− - match: \$
987− captures:
988− 0: punctuation.definition.variable.fish
989− push:
990− - meta_scope: variable.other.fish
991− - match: '(?=[^\$\w])'
992− pop: true
993− - include: variable-expansion-illegal
994− - include: variable-expansion-simple
995− - include: index-expansion
996− variable-expansion-illegal:
997− - match: '\$(?:(?=[,''"\]}\s;&)|])|[^\w\$][^$,''"\]}\s;&)|]*)'
998− comment: A lone '$' in a scope, or an attempt to expand a variable starting with a nonword character, is an error. These boundaries are the same as for meta.string.unquoted
999− scope: invalid.illegal.variable-expansion.fish
1000− variable-expansion-simple:
1001− - match: \$
1002− captures:
1003− 0: punctuation.definition.variable.fish
1004− push:
1005− - meta_scope: variable.other.fish
1006− - match: '(?=[^\$\w])'
1007− pop: true
1008− - include: variable-expansion-illegal
1009− - include: variable-expansion-simple
assets/syntaxes/sublime-fishdeleted−1

Submodule changed.

assets/themes.bin

Binary file not shown.

assets/themes/Coldarknew file+1

Submodule changed.

assets/themes/Nord-sublimenew file+1

Submodule changed.

assets/themes/Solarizednew file+1

Submodule changed.

assets/themes/ansi-light.tmTheme → assets/themes/ansi.tmThemerenamed+13−87
@@ -3,14 +3,14 @@
3<plist version="1.0">
3<plist version="1.0">
4 <dict>
4 <dict>
5 <!--
5 <!--
6− The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
6+ The colors in this theme are encoded as #RRGGBBAA where:
7− palette number from 00 to 0f, and AA is the special value 00 to indicate
7+ * If AA is 00, then RR is an ANSI palette number from 00 to 07.
8− that this encoding is being used.
8+ * If AA is 01, the terminal's default fg/bg color is used.
9 -->
9 -->
10 <key>author</key>
10 <key>author</key>
11 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
11 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
12 <key>name</key>
12 <key>name</key>
13− <string>ANSI Light</string>
13+ <string>ANSI</string>
14 <key>colorSpaceName</key>
14 <key>colorSpaceName</key>
15 <string>sRGB</string>
15 <string>sRGB</string>
16 <key>settings</key>
16 <key>settings</key>
@@ -19,32 +19,17 @@
19 <key>settings</key>
19 <key>settings</key>
20 <dict>
20 <dict>
21 <key>background</key>
21 <key>background</key>
22− <string>#07000000</string>
22+ <string>#00000001</string>
23− <key>caret</key>
23+ <key>foreground</key>
24− <string>#00000000</string>
24+ <string>#00000001</string>
25− <key>foreground</key>
25+ <!--
26− <string>#00000000</string>
26+ Explicitly set the gutter color since bat falls back to a
27− <key>invisibles</key>
27+ hardcoded DEFAULT_GUTTER_COLOR otherwise.
28− <string>#00000000</string>
28+ -->
29− <key>lineHighlight</key>
30− <string>#00000000</string>
31− <key>selection</key>
32− <string>#00000000</string>
33 <key>gutter</key>
29 <key>gutter</key>
34− <string>#07000000</string>
30+ <string>#00000001</string>
35 <key>gutterForeground</key>
31 <key>gutterForeground</key>
36− <string>#00000000</string>
32+ <string>#00000001</string>
37− </dict>
38− </dict>
39− <dict>
40− <key>name</key>
41− <string>Text</string>
42− <key>scope</key>
43− <string>variable.parameter.function</string>
44− <key>settings</key>
45− <dict>
46− <key>foreground</key>
47− <string>#00000000</string>
48 </dict>
33 </dict>
49 </dict>
34 </dict>
50 <dict>
35 <dict>
@@ -58,39 +43,6 @@
58 <string>#02000000</string>
43 <string>#02000000</string>
59 </dict>
44 </dict>
60 </dict>
45 </dict>
61− <dict>
62− <key>name</key>
63− <string>Punctuation</string>
64− <key>scope</key>
65− <string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
66− <key>settings</key>
67− <dict>
68− <key>foreground</key>
69− <string>#00000000</string>
70− </dict>
71− </dict>
72− <dict>
73− <key>name</key>
74− <string>Delimiters</string>
75− <key>scope</key>
76− <string>none</string>
77− <key>settings</key>
78− <dict>
79− <key>foreground</key>
80− <string>#00000000</string>
81− </dict>
82− </dict>
83− <dict>
84− <key>name</key>
85− <string>Operators</string>
86− <key>scope</key>
87− <string>keyword.operator</string>
88− <key>settings</key>
89− <dict>
90− <key>foreground</key>
91− <string>#00000000</string>
92− </dict>
93− </dict>
94 <dict>
46 <dict>
95 <key>name</key>
47 <key>name</key>
96 <string>Keywords</string>
48 <string>Keywords</string>
@@ -102,17 +54,6 @@
102 <string>#05000000</string>
54 <string>#05000000</string>
103 </dict>
55 </dict>
104 </dict>
56 </dict>
105− <dict>
106− <key>name</key>
107− <string>Variables</string>
108− <key>scope</key>
109− <string>variable</string>
110− <key>settings</key>
111− <dict>
112− <key>foreground</key>
113− <string>#00000000</string>
114− </dict>
115− </dict>
116 <dict>
57 <dict>
117 <key>name</key>
58 <key>name</key>
118 <string>Functions</string>
59 <string>Functions</string>
@@ -146,17 +87,6 @@
146 <string>#03000000</string>
87 <string>#03000000</string>
147 </dict>
88 </dict>
148 </dict>
89 </dict>
149− <dict>
150− <key>name</key>
151− <string>Classes</string>
152− <key>scope</key>
153− <string>meta.class</string>
154− <key>settings</key>
155− <dict>
156− <key>foreground</key>
157− <string>#00000000</string>
158− </dict>
159− </dict>
160 <dict>
90 <dict>
161 <key>name</key>
91 <key>name</key>
162 <string>Methods</string>
92 <string>Methods</string>
@@ -480,8 +410,6 @@
480 <dict>
410 <dict>
481 <key>background</key>
411 <key>background</key>
482 <string>#01000000</string>
412 <string>#01000000</string>
483− <key>foreground</key>
484− <string>#00000000</string>
485 </dict>
413 </dict>
486 </dict>
414 </dict>
487 <dict>
415 <dict>
@@ -493,8 +421,6 @@
493 <dict>
421 <dict>
494 <key>background</key>
422 <key>background</key>
495 <string>#03000000</string>
423 <string>#03000000</string>
496− <key>foreground</key>
497− <string>#07000000</string>
498 </dict>
424 </dict>
499 </dict>
425 </dict>
500 </array>
426 </array>
assets/themes/ansi-dark.tmTheme → assets/themes/base16-256.tmThemerenamed+69−22
@@ -3,14 +3,22 @@
3<plist version="1.0">
3<plist version="1.0">
4 <dict>
4 <dict>
5 <!--
5 <!--
6+ Most base16 users should use the base16 theme. This theme, base16-256,
7+ is for users who configure their terminal with a 256-color variant of a
8+ base16 theme, and who use base16-shell. DO NOT use this theme simply
9+ because your terminal supports 256 colors.
10+
11+ base16: https://github.com/chriskempson/base16
12+ base16-shell: https://github.com/chriskempson/base16-shell
13+
6 The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
14 The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
7− palette number from 00 to 0f, and AA is the special value 00 to indicate
15+ palette number from 00 to ff (the 256 terminal colors), and AA is the
8− that this encoding is being used.
16+ special value 00 to indicate this encoding is being used.
9 -->
17 -->
10 <key>author</key>
18 <key>author</key>
11 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
19 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
12 <key>name</key>
20 <key>name</key>
13− <string>ANSI Dark</string>
21+ <string>Base16 256</string>
14 <key>colorSpaceName</key>
22 <key>colorSpaceName</key>
15 <string>sRGB</string>
23 <string>sRGB</string>
16 <key>settings</key>
24 <key>settings</key>
@@ -25,15 +33,15 @@
25 <key>foreground</key>
33 <key>foreground</key>
26 <string>#07000000</string>
34 <string>#07000000</string>
27 <key>invisibles</key>
35 <key>invisibles</key>
28− <string>#07000000</string>
36+ <string>#08000000</string>
29 <key>lineHighlight</key>
37 <key>lineHighlight</key>
30− <string>#07000000</string>
38+ <string>#08000000</string>
31 <key>selection</key>
39 <key>selection</key>
32− <string>#07000000</string>
40+ <string>#13000000</string>
33 <key>gutter</key>
41 <key>gutter</key>
34− <string>#00000000</string>
42+ <string>#12000000</string>
35 <key>gutterForeground</key>
43 <key>gutterForeground</key>
36− <string>#07000000</string>
44+ <string>#08000000</string>
37 </dict>
45 </dict>
38 </dict>
46 </dict>
39 <dict>
47 <dict>
@@ -55,7 +63,7 @@
55 <key>settings</key>
63 <key>settings</key>
56 <dict>
64 <dict>
57 <key>foreground</key>
65 <key>foreground</key>
58− <string>#02000000</string>
66+ <string>#08000000</string>
59 </dict>
67 </dict>
60 </dict>
68 </dict>
61 <dict>
69 <dict>
@@ -132,7 +140,7 @@
132 <key>settings</key>
140 <key>settings</key>
133 <dict>
141 <dict>
134 <key>foreground</key>
142 <key>foreground</key>
135− <string>#06000000</string>
143+ <string>#11000000</string>
136 </dict>
144 </dict>
137 </dict>
145 </dict>
138 <dict>
146 <dict>
@@ -154,7 +162,7 @@
154 <key>settings</key>
162 <key>settings</key>
155 <dict>
163 <dict>
156 <key>foreground</key>
164 <key>foreground</key>
157− <string>#07000000</string>
165+ <string>#0f000000</string>
158 </dict>
166 </dict>
159 </dict>
167 </dict>
160 <dict>
168 <dict>
@@ -209,7 +217,7 @@
209 <key>settings</key>
217 <key>settings</key>
210 <dict>
218 <dict>
211 <key>foreground</key>
219 <key>foreground</key>
212− <string>#03000000</string>
220+ <string>#10000000</string>
213 </dict>
221 </dict>
214 </dict>
222 </dict>
215 <dict>
223 <dict>
@@ -220,7 +228,7 @@
220 <key>settings</key>
228 <key>settings</key>
221 <dict>
229 <dict>
222 <key>foreground</key>
230 <key>foreground</key>
223− <string>#03000000</string>
231+ <string>#10000000</string>
224 </dict>
232 </dict>
225 </dict>
233 </dict>
226 <dict>
234 <dict>
@@ -231,7 +239,7 @@
231 <key>settings</key>
239 <key>settings</key>
232 <dict>
240 <dict>
233 <key>foreground</key>
241 <key>foreground</key>
234− <string>#03000000</string>
242+ <string>#10000000</string>
235 </dict>
243 </dict>
236 </dict>
244 </dict>
237 <dict>
245 <dict>
@@ -242,7 +250,7 @@
242 <key>settings</key>
250 <key>settings</key>
243 <dict>
251 <dict>
244 <key>foreground</key>
252 <key>foreground</key>
245− <string>#03000000</string>
253+ <string>#10000000</string>
246 </dict>
254 </dict>
247 </dict>
255 </dict>
248 <dict>
256 <dict>
@@ -264,7 +272,7 @@
264 <key>settings</key>
272 <key>settings</key>
265 <dict>
273 <dict>
266 <key>foreground</key>
274 <key>foreground</key>
267− <string>#03000000</string>
275+ <string>#10000000</string>
268 </dict>
276 </dict>
269 </dict>
277 </dict>
270 <dict>
278 <dict>
@@ -297,7 +305,7 @@
297 <key>settings</key>
305 <key>settings</key>
298 <dict>
306 <dict>
299 <key>foreground</key>
307 <key>foreground</key>
300− <string>#03000000</string>
308+ <string>#10000000</string>
301 </dict>
309 </dict>
302 </dict>
310 </dict>
303 <dict>
311 <dict>
@@ -321,7 +329,7 @@
321 <key>settings</key>
329 <key>settings</key>
322 <dict>
330 <dict>
323 <key>foreground</key>
331 <key>foreground</key>
324− <string>#03000000</string>
332+ <string>#10000000</string>
325 </dict>
333 </dict>
326 </dict>
334 </dict>
327 <dict>
335 <dict>
@@ -380,7 +388,7 @@
380 <key>settings</key>
388 <key>settings</key>
381 <dict>
389 <dict>
382 <key>foreground</key>
390 <key>foreground</key>
383− <string>#03000000</string>
391+ <string>#10000000</string>
384 </dict>
392 </dict>
385 </dict>
393 </dict>
386 <dict>
394 <dict>
@@ -391,7 +399,20 @@
391 <key>settings</key>
399 <key>settings</key>
392 <dict>
400 <dict>
393 <key>foreground</key>
401 <key>foreground</key>
394− <string>#03000000</string>
402+ <string>#10000000</string>
403+ </dict>
404+ </dict>
405+ <dict>
406+ <key>name</key>
407+ <string>Separator</string>
408+ <key>scope</key>
409+ <string>meta.separator</string>
410+ <key>settings</key>
411+ <dict>
412+ <key>background</key>
413+ <string>#13000000</string>
414+ <key>foreground</key>
415+ <string>#07000000</string>
395 </dict>
416 </dict>
396 </dict>
417 </dict>
397 <dict>
418 <dict>
@@ -481,7 +502,7 @@
481 <key>background</key>
502 <key>background</key>
482 <string>#01000000</string>
503 <string>#01000000</string>
483 <key>foreground</key>
504 <key>foreground</key>
484− <string>#07000000</string>
505+ <string>#0f000000</string>
485 </dict>
506 </dict>
486 </dict>
507 </dict>
487 <dict>
508 <dict>
@@ -492,11 +513,37 @@
492 <key>settings</key>
513 <key>settings</key>
493 <dict>
514 <dict>
494 <key>background</key>
515 <key>background</key>
495− <string>#03000000</string>
516+ <string>#10000000</string>
496 <key>foreground</key>
517 <key>foreground</key>
497 <string>#00000000</string>
518 <string>#00000000</string>
498 </dict>
519 </dict>
499 </dict>
520 </dict>
521+ <dict>
522+ <key>name</key>
523+ <string>Deprecated</string>
524+ <key>scope</key>
525+ <string>invalid.deprecated</string>
526+ <key>settings</key>
527+ <dict>
528+ <key>background</key>
529+ <string>#11000000</string>
530+ <key>foreground</key>
531+ <string>#0f000000</string>
532+ </dict>
533+ </dict>
534+ <dict>
535+ <key>name</key>
536+ <string>Unimplemented</string>
537+ <key>scope</key>
538+ <string>invalid.unimplemented</string>
539+ <key>settings</key>
540+ <dict>
541+ <key>background</key>
542+ <string>#08000000</string>
543+ <key>foreground</key>
544+ <string>#0f000000</string>
545+ </dict>
546+ </dict>
500 </array>
547 </array>
501 <key>uuid</key>
548 <key>uuid</key>
502 <string>uuid</string>
549 <string>uuid</string>
assets/themes/base16.tmTheme+9−2
@@ -3,9 +3,16 @@
3<plist version="1.0">
3<plist version="1.0">
4 <dict>
4 <dict>
5 <!--
5 <!--
6+ This theme is meant for users who configure their terminal with a base16
7+ color theme. If you use a 256-color variant along with base16-shell, use
8+ the bat theme base16-256 instead.
9+
10+ base16: https://github.com/chriskempson/base16
11+ base16-shell: https://github.com/chriskempson/base16-shell
12+
6 The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
13 The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
7− palette number from 00 to 0f, and AA is the special value 00 to indicate
14+ palette number from 00 to 0f (the 8 colors and their bright versions),
8− that this encoding is being used.
15+ and AA is the special value 00 to indicate this encoding is being used.
9 -->
16 -->
10 <key>author</key>
17 <key>author</key>
11 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
18 <string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
assets/themes/dracula-sublimenew file+1

Submodule changed.

assets/themes/gruvboxnew file+1

Submodule changed.

assets/themes/onehalf+1−1

Submodule changed.

assets/themes/sublime-monokai-extended+1−1

Submodule changed.

assets/themes/visual-studio-dark-plusnew file+1

Submodule changed.

assets/themes/zenburn+1−1

Submodule changed.

build.rs+75
@@ -1,8 +1,83 @@
1// TODO: Re-enable generation of shell completion files (below) when clap 3 is out.
1// TODO: Re-enable generation of shell completion files (below) when clap 3 is out.
2// For more details, see https://github.com/sharkdp/bat/issues/372
2// For more details, see https://github.com/sharkdp/bat/issues/372
3
3
4+// For bat-as-a-library, no build script is required. The build script is for
5+// the manpage and completions, which are only relevant to the bat application.
6+#[cfg(not(feature = "application"))]
4fn main() {}
7fn main() {}
5
8
9+#[cfg(feature = "application")]
10+fn main() -> Result<(), Box<dyn std::error::Error>> {
11+ use std::collections::HashMap;
12+ use std::error::Error;
13+ use std::fs;
14+ use std::path::Path;
15+
16+ // Read environment variables.
17+ let project_name = option_env!("PROJECT_NAME").unwrap_or("bat");
18+ let executable_name = option_env!("PROJECT_EXECUTABLE").unwrap_or(project_name);
19+ let executable_name_uppercase = executable_name.to_uppercase();
20+ static PROJECT_VERSION: &str = env!("CARGO_PKG_VERSION");
21+
22+ /// Generates a file from a template.
23+ fn template(
24+ variables: &HashMap<&str, &str>,
25+ in_file: &str,
26+ out_file: impl AsRef<Path>,
27+ ) -> Result<(), Box<dyn Error>> {
28+ let mut content = fs::read_to_string(in_file)?;
29+
30+ for (variable_name, value) in variables {
31+ // Replace {{variable_name}} by the value
32+ let pattern = format!("{{{{{variable_name}}}}}", variable_name = variable_name);
33+ content = content.replace(&pattern, value);
34+ }
35+
36+ fs::write(out_file, content)?;
37+ Ok(())
38+ }
39+
40+ let mut variables = HashMap::new();
41+ variables.insert("PROJECT_NAME", project_name);
42+ variables.insert("PROJECT_EXECUTABLE", executable_name);
43+ variables.insert("PROJECT_EXECUTABLE_UPPERCASE", &executable_name_uppercase);
44+ variables.insert("PROJECT_VERSION", PROJECT_VERSION);
45+
46+ let out_dir_env = std::env::var_os("OUT_DIR").expect("OUT_DIR to be set in build.rs");
47+ let out_dir = Path::new(&out_dir_env);
48+
49+ fs::create_dir_all(out_dir.join("assets/manual")).unwrap();
50+ fs::create_dir_all(out_dir.join("assets/completions")).unwrap();
51+
52+ template(
53+ &variables,
54+ "assets/manual/bat.1.in",
55+ out_dir.join("assets/manual/bat.1"),
56+ )?;
57+ template(
58+ &variables,
59+ "assets/completions/bat.bash.in",
60+ out_dir.join("assets/completions/bat.bash"),
61+ )?;
62+ template(
63+ &variables,
64+ "assets/completions/bat.fish.in",
65+ out_dir.join("assets/completions/bat.fish"),
66+ )?;
67+ template(
68+ &variables,
69+ "assets/completions/_bat.ps1.in",
70+ out_dir.join("assets/completions/_bat.ps1"),
71+ )?;
72+ template(
73+ &variables,
74+ "assets/completions/bat.zsh.in",
75+ out_dir.join("assets/completions/bat.zsh"),
76+ )?;
77+
78+ Ok(())
79+}
80+
6// #[macro_use]
81// #[macro_use]
7// extern crate clap;
82// extern crate clap;
8
83
ci/before_deploy.bashdeleted−180
@@ -1,180 +0,0 @@
1−#!/usr/bin/env bash
2−# Building and packaging for release
3−
4−set -ex
5−
6−build() {
7− cargo build --target "$TARGET" --release --verbose
8−}
9−
10−pack() {
11− local tempdir
12− local out_dir
13− local package_name
14− local gcc_prefix
15−
16− tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
17− out_dir=$(pwd)
18− package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET"
19−
20− if [[ $TARGET == "arm-unknown-linux-gnueabihf" ]]; then
21− gcc_prefix="arm-linux-gnueabihf-"
22− elif [[ $TARGET == "aarch64-unknown-linux-gnu" ]]; then
23− gcc_prefix="aarch64-linux-gnu-"
24− else
25− gcc_prefix=""
26− fi
27−
28− # create a "staging" directory
29− mkdir "$tempdir/$package_name"
30− mkdir "$tempdir/$package_name/autocomplete"
31−
32− # copying the main binary
33− cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/"
34− "${gcc_prefix}"strip "$tempdir/$package_name/$PROJECT_NAME"
35−
36− # manpage, readme and license
37− cp "doc/$PROJECT_NAME.1" "$tempdir/$package_name"
38− cp README.md "$tempdir/$package_name"
39− cp LICENSE-MIT "$tempdir/$package_name"
40− cp LICENSE-APACHE "$tempdir/$package_name"
41−
42− # various autocomplete
43− # TODO: disabled for now, see issue #372
44− # cp target/"$TARGET"/release/build/"$PROJECT_NAME"-*/out/"$PROJECT_NAME".bash "$tempdir/$package_name/autocomplete/${PROJECT_NAME}.bash-completion"
45− # cp target/"$TARGET"/release/build/"$PROJECT_NAME"-*/out/"$PROJECT_NAME".fish "$tempdir/$package_name/autocomplete"
46− cp assets/completions/bat.fish "$tempdir/$package_name/autocomplete"
47− # cp target/"$TARGET"/release/build/"$PROJECT_NAME"-*/out/_"$PROJECT_NAME" "$tempdir/$package_name/autocomplete"
48−
49− # archiving
50− pushd "$tempdir"
51− tar czf "$out_dir/$package_name.tar.gz" "$package_name"/*
52− popd
53− rm -r "$tempdir"
54−}
55−
56−make_deb() {
57− local tempdir
58− local architecture
59− local version
60− local dpkgname
61− local conflictname
62− local gcc_prefix
63− local homepage
64− local maintainer
65−
66− homepage="https://github.com/sharkdp/bat"
67− maintainer="David Peter <mail@david-peter.de>"
68−
69− case $TARGET in
70− x86_64*)
71− architecture=amd64
72− gcc_prefix=""
73− ;;
74− i686*)
75− architecture=i386
76− gcc_prefix=""
77− ;;
78− aarch64*)
79− architecture=arm64
80− gcc_prefix="aarch64-linux-gnu-"
81− ;;
82− arm*hf)
83− architecture=armhf
84− gcc_prefix="arm-linux-gnueabihf-"
85− ;;
86− *)
87− echo "make_deb: skipping target '${TARGET}'" >&2
88− return 0
89− ;;
90− esac
91− version=${TRAVIS_TAG#v}
92− if [[ $TARGET = *musl* ]]; then
93− dpkgname=$PROJECT_NAME-musl
94− conflictname=$PROJECT_NAME
95− else
96− dpkgname=$PROJECT_NAME
97− conflictname=$PROJECT_NAME-musl
98− fi
99−
100− tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
101−
102− # copy the main binary
103− install -Dm755 "target/$TARGET/release/$PROJECT_NAME" "$tempdir/usr/bin/$PROJECT_NAME"
104− "${gcc_prefix}"strip "$tempdir/usr/bin/$PROJECT_NAME"
105−
106− # manpage
107− install -Dm644 "doc/$PROJECT_NAME.1" "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
108− gzip --best "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
109−
110− # readme and license
111− install -Dm644 README.md "$tempdir/usr/share/doc/$PROJECT_NAME/README.md"
112− install -Dm644 LICENSE-MIT "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-MIT"
113− install -Dm644 LICENSE-APACHE "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-APACHE"
114− cat > "$tempdir/usr/share/doc/$PROJECT_NAME/copyright" <<EOF
115−Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
116−Upstream-Name: $PROJECT_NAME
117−Source: $homepage
118−
119−Files: *
120−Copyright: $maintainer
121−License: Apache-2.0 or MIT
122−
123−License: Apache-2.0
124− On Debian systems, the complete text of the Apache-2.0 can be found in the
125− file /usr/share/common-licenses/Apache-2.0.
126−
127−License: MIT
128− Permission is hereby granted, free of charge, to any
129− person obtaining a copy of this software and associated
130− documentation files (the "Software"), to deal in the
131− Software without restriction, including without
132− limitation the rights to use, copy, modify, merge,
133− publish, distribute, sublicense, and/or sell copies of
134− the Software, and to permit persons to whom the Software
135− is furnished to do so, subject to the following
136− conditions:
137− .
138− The above copyright notice and this permission notice
139− shall be included in all copies or substantial portions
140− of the Software.
141− .
142− THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
143− ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
144− TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
145− PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
146− SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
147− CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
148− OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
149− IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
150− DEALINGS IN THE SOFTWARE.
151−EOF
152−
153− # Control file
154− mkdir "$tempdir/DEBIAN"
155− cat > "$tempdir/DEBIAN/control" <<EOF
156−Package: $dpkgname
157−Version: $version
158−Section: utils
159−Priority: optional
160−Maintainer: David Peter <mail@david-peter.de>
161−Architecture: $architecture
162−Provides: $PROJECT_NAME
163−Conflicts: $conflictname
164−Description: A cat(1) clone with wings.
165− A cat(1) clone with syntax highlighting and Git integration.
166−EOF
167−
168− fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
169−}
170−
171−
172−main() {
173− build
174− pack
175− if [[ $TARGET = *linux* ]]; then
176− make_deb
177− fi
178−}
179−
180−main
ci/before_deploy.ps1deleted−28

This diff is too big to show here.

ci/before_install.bashdeleted−37

This diff is too big to show here.

ci/script.bashdeleted−14

This diff is too big to show here.

ci/.gitattributes → diagnostics/.gitattributesrenamed

The content is the same.

diagnostics/info.shnew file+261

This diff is too big to show here.

doc/README-ja.md+316−112

This diff is too big to show here.

doc/README-ko.mdnew file+835

This diff is too big to show here.

doc/README-ru.mdnew file+597

This diff is too big to show here.

doc/README-zh.mdnew file+678

This diff is too big to show here.

doc/alternatives.md+40−1

This diff is too big to show here.

doc/assets.mdnew file+100

This diff is too big to show here.

doc/bat.1deleted−144

This diff is too big to show here.

doc/logo-header.svg+1−1

This diff is too big to show here.

doc/release-checklist.mdnew file+73

This diff is too big to show here.

doc/sponsors.mdnew file+14

This diff is too big to show here.

doc/sponsors/workos-logo-white-bg.svgnew file+11

This diff is too big to show here.

examples/advanced.rsnew file+18

This diff is too big to show here.

examples/cat.rsnew file+13

This diff is too big to show here.

examples/inputs.rsnew file+19

This diff is too big to show here.

examples/list_syntaxes_and_themes.rsnew file+18

This diff is too big to show here.

examples/simple.rsnew file+6

This diff is too big to show here.

examples/yaml.rsnew file+35

This diff is too big to show here.

rustfmt.tomlnew file+1

This diff is too big to show here.

src/app.rsdeleted−335

This diff is too big to show here.

src/assets.rs+640−172

This diff is too big to show here.

src/assets/assets_metadata.rsnew file+82

This diff is too big to show here.

src/assets/build_assets.rsnew file+176

This diff is too big to show here.

src/assets/build_assets/acknowledgements.rsnew file+222

This diff is too big to show here.

src/assets/lazy_theme_set.rsnew file+104

This diff is too big to show here.

src/assets/serialized_syntax_set.rsnew file+27

This diff is too big to show here.

src/bin/bat/app.rsnew file+341

This diff is too big to show here.

src/bin/bat/assets.rsnew file+65

This diff is too big to show here.

src/clap_app.rs → src/bin/bat/clap_app.rsrenamed+383−203

This diff is too big to show here.

src/bin/bat/config.rsnew file+174

This diff is too big to show here.

src/bin/bat/directories.rsnew file+72

This diff is too big to show here.

src/bin/bat/input.rsnew file+20

This diff is too big to show here.

src/bin/bat/main.rsnew file+364

This diff is too big to show here.

src/config.rs+95−86

This diff is too big to show here.

src/controller.rs+186−58

This diff is too big to show here.

src/decorations.rs+13−9

This diff is too big to show here.

src/diff.rs+5−2

This diff is too big to show here.

src/dirs.rsdeleted−57

This diff is too big to show here.

src/error.rsnew file+65

This diff is too big to show here.

src/input.rsnew file+352

This diff is too big to show here.

src/inputfile.rsdeleted−135

This diff is too big to show here.

src/less.rsnew file+131

This diff is too big to show here.

src/lib.rsnew file+57

This diff is too big to show here.

src/line_range.rs+154−33

This diff is too big to show here.

src/macros.rsnew file+7

This diff is too big to show here.

src/main.rsdeleted−265

This diff is too big to show here.

src/output.rs+115−73

This diff is too big to show here.

src/pager.rsnew file+123

This diff is too big to show here.

src/paging.rsnew file+12

This diff is too big to show here.

src/preprocessor.rs+108−27

This diff is too big to show here.

src/pretty_printer.rsnew file+357

This diff is too big to show here.

src/printer.rs+427−251

This diff is too big to show here.

src/style.rs+84−40

This diff is too big to show here.

src/syntax_mapping.rs+235−18

This diff is too big to show here.

src/syntax_mapping/ignored_suffixes.rsnew file+107

This diff is too big to show here.

src/terminal.rs+53−19

This diff is too big to show here.

src/util.rsdeleted−27

This diff is too big to show here.

src/vscreen.rsnew file+212

This diff is too big to show here.

src/wrapping.rsnew file+12

This diff is too big to show here.

tests/.gitattributes+12−4

This diff is too big to show here.

tests/assets.rsnew file+42

This diff is too big to show here.

tests/benchmarks/.gitignorenew file+1

This diff is too big to show here.

tests/benchmarks/comparison.shdeleted−31

This diff is too big to show here.

tests/benchmarks/highlighting-speed-src/grep-output-ansi-sequences.txtnew file+2272

This diff is too big to show here.

tests/benchmarks/test-src/jquery-3.3.1.js → tests/benchmarks/highlighting-speed-src/jquery.jsrenamed

The content is the same.

tests/benchmarks/test-src/miniz.c → tests/benchmarks/highlighting-speed-src/miniz.crenamed

The content is the same.

tests/benchmarks/highlighting-speed-src/numpy_test_multiarray.pynew file+8471

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-0.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-1.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-10.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-100.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-11.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-12.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-13.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-14.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-15.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-16.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-17.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-18.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-19.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-2.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-20.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-21.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-22.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-23.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-24.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-25.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-26.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-27.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-28.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-29.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-3.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-30.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-31.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-32.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-33.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-34.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-35.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-36.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-37.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-38.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-39.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-4.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-40.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-41.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-42.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-43.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-44.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-45.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-46.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-47.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-48.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-49.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-5.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-50.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-51.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-52.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-53.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-54.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-55.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-56.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-57.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-58.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-59.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-6.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-60.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-61.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-62.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-63.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-64.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-65.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-66.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-67.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-68.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-69.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-7.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-70.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-71.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-72.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-73.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-74.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-75.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-76.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-77.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-78.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-79.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-8.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-80.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-81.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-82.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-83.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-84.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-85.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-86.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-87.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-88.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-89.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-9.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-90.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-91.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-92.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-93.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-94.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-95.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-96.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-97.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-98.txtnew file+1

This diff is too big to show here.

tests/benchmarks/many-small-files/small-file-99.txtnew file+1

This diff is too big to show here.

tests/benchmarks/run-benchmarks.shmode 100644 → 100755+139−17

This diff is too big to show here.

tests/benchmarks/startup-time-src/small-CpuInfo-file.cpuinfonew file+1

This diff is too big to show here.

tests/benchmarks/startup-time-src/small-Markdown-file.mdnew file+3

This diff is too big to show here.

tests/benchmarks/test-src/jquery-3.3.1.min.jsdeleted−2

This diff is too big to show here.

tests/examples/cache.cnew file+1

This diff is too big to show here.

tests/examples/git/.config/git/confignew file+3

This diff is too big to show here.

tests/examples/git/.gitconfignew file+3

This diff is too big to show here.

tests/examples/longline.jsonnew file+3

This diff is too big to show here.

tests/examples/nonprintable.txtnew file

Binary file not shown.

tests/examples/regression_tests/first_line_fallback.invalid-syntaxnew file+2

This diff is too big to show here.

tests/examples/regression_tests/issue_190.mdnew file+3

This diff is too big to show here.

tests/examples/regression_tests/issue_28.mdnew file+4

This diff is too big to show here.

tests/examples/regression_tests/issue_314.hsnew file+4

This diff is too big to show here.

tests/examples/regression_tests/issue_914.rbnew file+3

This diff is too big to show here.

tests/examples/regression_tests/issue_915.vuenew file+2

This diff is too big to show here.

tests/examples/regression_tests/issue_985.jsnew file+5

This diff is too big to show here.

tests/examples/test.binarynew file

Binary file not shown.

tests/examples/test.json.suffixnew file+1

This diff is too big to show here.

tests/examples/test.json~new file+1

This diff is too big to show here.

tests/examples/unicode-wrap.txtnew file+7

This diff is too big to show here.

tests/integration_tests.rs+1125−29

This diff is too big to show here.

tests/mocked-pagers/morenew file+2

This diff is too big to show here.

tests/mocked-pagers/more.batnew file+1

This diff is too big to show here.

tests/mocked-pagers/mostnew file+2

This diff is too big to show here.

tests/mocked-pagers/most.batnew file+1

This diff is too big to show here.

tests/no_duplicate_extensions.rsnew file+38

This diff is too big to show here.

tests/scripts/find-slow-to-highlight-files.pynew file+125

This diff is too big to show here.

tests/scripts/license-checks.shnew file+24

This diff is too big to show here.

tests/snapshot_tests.rs+11−1

This diff is too big to show here.

tests/snapshots/generate_snapshots.py+1−1

This diff is too big to show here.

tests/snapshots/output/changes.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/changes_grid.snapshot.txt+2

This diff is too big to show here.

tests/snapshots/output/changes_grid_header.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/changes_grid_header_numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/changes_grid_header_numbers_rule.snapshot.txtnew file+27

This diff is too big to show here.

tests/snapshots/output/changes_grid_header_rule.snapshot.txtnew file+27

This diff is too big to show here.

tests/snapshots/output/changes_grid_numbers.snapshot.txt+24−22

This diff is too big to show here.

tests/snapshots/output/changes_grid_numbers_rule.snapshot.txtnew file+25

This diff is too big to show here.

tests/snapshots/output/changes_grid_rule.snapshot.txtnew file+25

This diff is too big to show here.

tests/snapshots/output/changes_header.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/changes_header_numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/changes_header_numbers_rule.snapshot.txtnew file+24

This diff is too big to show here.

tests/snapshots/output/changes_header_rule.snapshot.txtnew file+24

This diff is too big to show here.

tests/snapshots/output/changes_numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/changes_numbers_rule.snapshot.txtnew file+23

This diff is too big to show here.

tests/snapshots/output/changes_rule.snapshot.txtnew file+23

This diff is too big to show here.

tests/snapshots/output/full.snapshot.txt+24−22

This diff is too big to show here.

tests/snapshots/output/grid.snapshot.txt+2

This diff is too big to show here.

tests/snapshots/output/grid_header.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/grid_header_numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/grid_header_numbers_rule.snapshot.txtnew file+27

This diff is too big to show here.

tests/snapshots/output/grid_header_rule.snapshot.txtnew file+27

This diff is too big to show here.

tests/snapshots/output/grid_numbers.snapshot.txt+24−22

This diff is too big to show here.

tests/snapshots/output/grid_numbers_rule.snapshot.txtnew file+25

This diff is too big to show here.

tests/snapshots/output/grid_rule.snapshot.txtnew file+25

This diff is too big to show here.

tests/snapshots/output/header.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/header_numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/header_numbers_rule.snapshot.txtnew file+24

This diff is too big to show here.

tests/snapshots/output/header_rule.snapshot.txtnew file+24

This diff is too big to show here.

tests/snapshots/output/numbers.snapshot.txt+23−22

This diff is too big to show here.

tests/snapshots/output/numbers_rule.snapshot.txtnew file+23

This diff is too big to show here.

tests/snapshots/output/plain.snapshot.txt+1

This diff is too big to show here.

tests/snapshots/output/rule.snapshot.txtnew file+23

This diff is too big to show here.

tests/snapshots/sample.modified.rs+1

This diff is too big to show here.

tests/syntax-tests/BatTestCustomAssets.sublime-syntaxnew file+21

This diff is too big to show here.

tests/syntax-tests/compare_highlighted_versions.pynew file+65

This diff is too big to show here.

tests/syntax-tests/create_highlighted_versions.pynew file+133

This diff is too big to show here.

tests/syntax-tests/highlighted/ARM Assembly/test.Snew file+55

This diff is too big to show here.

tests/syntax-tests/highlighted/ASP/test.aspnew file+36

This diff is too big to show here.

tests/syntax-tests/highlighted/AWK/quicksort.awknew file+35

This diff is too big to show here.

tests/syntax-tests/highlighted/ActionScript/test.asnew file+75

This diff is too big to show here.

tests/syntax-tests/highlighted/Apache/httpd.confnew file+42

This diff is too big to show here.

tests/syntax-tests/highlighted/AppleScript/test.applescriptnew file+25

This diff is too big to show here.

tests/syntax-tests/highlighted/AsciiDoc/test.adocnew file+173

This diff is too big to show here.

tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasmnew file+86

This diff is too big to show here.

tests/syntax-tests/highlighted/Bash/batgrep.shnew file+511

This diff is too big to show here.

tests/syntax-tests/highlighted/Bash/simple.shnew file+72

This diff is too big to show here.

tests/syntax-tests/highlighted/BatTestCustomAssets/NoColorsUnlessCustomAssetsAreUsed.battestcustomassetsnew file+2

This diff is too big to show here.

tests/syntax-tests/highlighted/Batch/build.batnew file+59

This diff is too big to show here.

tests/syntax-tests/highlighted/BibTeX/test.bibnew file+18

This diff is too big to show here.

tests/syntax-tests/highlighted/C-Sharp/Stack.csnew file+64

This diff is too big to show here.

tests/syntax-tests/highlighted/C/test.cnew file+62

This diff is too big to show here.

tests/syntax-tests/highlighted/CMake/CMakeLists.txtnew file+16

This diff is too big to show here.

tests/syntax-tests/highlighted/CSS/style.cssnew file+115

This diff is too big to show here.

tests/syntax-tests/highlighted/CSV/comma_in_quotes.csvnew file+7

This diff is too big to show here.

tests/syntax-tests/highlighted/Cabal/semantic.cabalnew file+247

This diff is too big to show here.

tests/syntax-tests/highlighted/Clojure/test.cljnew file+58

This diff is too big to show here.

tests/syntax-tests/highlighted/CoffeeScript/coffeescript.coffeenew file+391

This diff is too big to show here.

tests/syntax-tests/highlighted/Cpp/test.cppnew file+79

This diff is too big to show here.

tests/syntax-tests/highlighted/CpuInfo/test.cpuinfonew file+45

This diff is too big to show here.

tests/syntax-tests/highlighted/Crystal/test.crnew file+117

This diff is too big to show here.

tests/syntax-tests/highlighted/D/test.dnew file+44

This diff is too big to show here.

tests/syntax-tests/highlighted/Dart/inner_comment.dartnew file+5

This diff is too big to show here.

tests/syntax-tests/highlighted/Dart/test.dartnew file+133

This diff is too big to show here.

tests/syntax-tests/highlighted/Diff/82e7786e747b1fcfac1f963ae6415a22ec9caae1.diffnew file+353

This diff is too big to show here.

tests/syntax-tests/highlighted/Dockerfile/Dockerfilenew file+19

This diff is too big to show here.

tests/syntax-tests/highlighted/DotENV/.envnew file+57

This diff is too big to show here.

tests/syntax-tests/highlighted/Elixir/command.exnew file+31

This diff is too big to show here.

tests/syntax-tests/highlighted/Elm/test.elmnew file+137

This diff is too big to show here.

tests/syntax-tests/highlighted/Email/test.emlnew file+16

This diff is too big to show here.

tests/syntax-tests/highlighted/Erlang/bat_erlang.erlnew file+72

This diff is too big to show here.

tests/syntax-tests/highlighted/EtcGroup/test.groupnew file+67

This diff is too big to show here.

tests/syntax-tests/highlighted/F#/string.fsnew file+182

This diff is too big to show here.

tests/syntax-tests/highlighted/Fish/test.fishnew file+77

This diff is too big to show here.

tests/syntax-tests/highlighted/Fortran (Fixed Form)/quicksort_real_F77.Fnew file+323

This diff is too big to show here.

tests/syntax-tests/highlighted/Fortran (Modern)/test_savetxt.f90new file+119

This diff is too big to show here.

tests/syntax-tests/highlighted/Fortran Namelist/test.namelistnew file+5

This diff is too big to show here.

tests/syntax-tests/highlighted/Fstab/fstabnew file+7

This diff is too big to show here.

tests/syntax-tests/highlighted/GLSL/test.glslnew file+42

This diff is too big to show here.

tests/syntax-tests/highlighted/Git Attributes/example.gitattributesnew file+16

This diff is too big to show here.

tests/syntax-tests/highlighted/Git Config/text.gitconfignew file+107

This diff is too big to show here.

tests/syntax-tests/highlighted/Git Ignore/test.gitignorenew file+43

This diff is too big to show here.

tests/syntax-tests/highlighted/Go/main.gonew file+81

This diff is too big to show here.

tests/syntax-tests/highlighted/GraphQL/test.graphqlnew file+145

This diff is too big to show here.

tests/syntax-tests/highlighted/Graphviz DOT/test_digraph.dotnew file+41

This diff is too big to show here.

tests/syntax-tests/highlighted/Graphviz DOT/test_graph.dotnew file+3

This diff is too big to show here.

tests/syntax-tests/highlighted/Groff/rustdoc.1new file+126

This diff is too big to show here.

tests/syntax-tests/highlighted/Groovy/test.groovynew file+77

This diff is too big to show here.

tests/syntax-tests/highlighted/HTML/test.htmlnew file+115

This diff is too big to show here.

tests/syntax-tests/highlighted/Haskell/test.hsnew file+86

This diff is too big to show here.

tests/syntax-tests/highlighted/Hosts/hostsnew file+8

This diff is too big to show here.

tests/syntax-tests/highlighted/INI/test.infnew file+5

This diff is too big to show here.

tests/syntax-tests/highlighted/INI/test.ininew file+18

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.baknew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.dpkg-distnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.dpkg-oldnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.innew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.in.innew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.oldnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.orignew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.orig~new file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.rpmnewnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.rpmorignew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.rpmsavenew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.ucf-distnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.ucf-newnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs.ucf-oldnew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.rs~new file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Ignored suffixes/test.unknown~new file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/JQ/sample.jqnew file+60

This diff is too big to show here.

tests/syntax-tests/highlighted/JSON/test.jsonnew file+29

This diff is too big to show here.

tests/syntax-tests/highlighted/Java Server Page (JSP)/sessionDetail.jspnew file+197

This diff is too big to show here.

tests/syntax-tests/highlighted/Java/test.javanew file+39

This diff is too big to show here.

tests/syntax-tests/highlighted/JavaScript/test.jsnew file+114

This diff is too big to show here.

tests/syntax-tests/highlighted/Jinja2/template.jinja2new file+30

This diff is too big to show here.

tests/syntax-tests/highlighted/Julia/test.jlnew file+71

This diff is too big to show here.

tests/syntax-tests/highlighted/Kotlin/test.ktnew file+85

This diff is too big to show here.

tests/syntax-tests/highlighted/LLVM/test.llnew file+29

This diff is too big to show here.

tests/syntax-tests/highlighted/Lean/test.leannew file+68

This diff is too big to show here.

tests/syntax-tests/highlighted/Less/example.lessnew file+43

This diff is too big to show here.

tests/syntax-tests/highlighted/Lisp/utils.lispnew file+80

This diff is too big to show here.

tests/syntax-tests/highlighted/Literate Haskell/Main.lhsnew file+47

This diff is too big to show here.

tests/syntax-tests/highlighted/LiveScript/livescript-demo.lsnew file+83

This diff is too big to show here.

tests/syntax-tests/highlighted/Log/example.lognew file+3

This diff is too big to show here.

tests/syntax-tests/highlighted/Lua/test.luanew file+34

This diff is too big to show here.

tests/syntax-tests/highlighted/MATLAB/test.matlabnew file+34

This diff is too big to show here.

tests/syntax-tests/highlighted/Makefile/Makefilenew file+385

This diff is too big to show here.

tests/syntax-tests/highlighted/Manpage/bat-0.16.mannew file+243

This diff is too big to show here.

tests/syntax-tests/highlighted/Manpage/select-2.mannew file+330

This diff is too big to show here.

tests/syntax-tests/highlighted/Markdown/example.mdnew file+39

This diff is too big to show here.

tests/syntax-tests/highlighted/MediaWiki/test.mediawikinew file+37

This diff is too big to show here.

tests/syntax-tests/highlighted/MemInfo/test.meminfonew file+53

This diff is too big to show here.

tests/syntax-tests/highlighted/NAnt Build File/Default.buildnew file+167

This diff is too big to show here.

tests/syntax-tests/highlighted/Ninja/test.ninjanew file+6

This diff is too big to show here.

tests/syntax-tests/highlighted/OCaml/syntax-test.mlnew file+83

This diff is too big to show here.

tests/syntax-tests/highlighted/Objective-C++/test.mmnew file+68

This diff is too big to show here.

tests/syntax-tests/highlighted/Objective-C/test.mnew file+32

This diff is too big to show here.

tests/syntax-tests/highlighted/PHP/test.phpnew file+111

This diff is too big to show here.

tests/syntax-tests/highlighted/Pascal/test.pasnew file+42

This diff is too big to show here.

tests/syntax-tests/highlighted/Passwd/passwdnew file+7

This diff is too big to show here.

tests/syntax-tests/highlighted/Perl/test.plnew file+157

This diff is too big to show here.

tests/syntax-tests/highlighted/Plaintext/plaintext.txtnew file+178

This diff is too big to show here.

tests/syntax-tests/highlighted/PowerShell/test.ps1new file+25

This diff is too big to show here.

tests/syntax-tests/highlighted/Protocol Buffer/vyconf.protonew file+158

This diff is too big to show here.

tests/syntax-tests/highlighted/Puppet/manifest_large_exported_classes_node.ppnew file+65

This diff is too big to show here.

tests/syntax-tests/highlighted/PureScript/test.pursnew file+89

This diff is too big to show here.

tests/syntax-tests/highlighted/Python/battest.pynew file+100

This diff is too big to show here.

tests/syntax-tests/highlighted/QML/BatSyntaxTest.qmlnew file+219

This diff is too big to show here.

tests/syntax-tests/highlighted/R/test.rnew file+170

This diff is too big to show here.

tests/syntax-tests/highlighted/Racket/test.rktnew file+56

This diff is too big to show here.

tests/syntax-tests/highlighted/Rego/src_test.regonew file+181

This diff is too big to show here.

tests/syntax-tests/highlighted/Regular Expression/test.renew file+1

This diff is too big to show here.

tests/syntax-tests/highlighted/Robot Framework/recipe141_aws_simple_storage_service.robotnew file+31

This diff is too big to show here.

tests/syntax-tests/highlighted/Ruby Haml/test.html.hamlnew file+15

This diff is too big to show here.

tests/syntax-tests/highlighted/Ruby On Rails/test.rbnew file+22

This diff is too big to show here.

tests/syntax-tests/highlighted/Ruby/output.rbnew file+56

This diff is too big to show here.

tests/syntax-tests/highlighted/Rust/output.rsnew file+161

This diff is too big to show here.

tests/syntax-tests/highlighted/SCSS/example.scssnew file+82

This diff is too big to show here.

tests/syntax-tests/highlighted/SLS/test.slsnew file+57

This diff is too big to show here.

tests/syntax-tests/highlighted/SML/sample.smlnew file+47

This diff is too big to show here.

tests/syntax-tests/highlighted/SQL/ims.sqlnew file+266

This diff is too big to show here.

tests/syntax-tests/highlighted/SSH Config/ssh_confignew file+9

This diff is too big to show here.

tests/syntax-tests/highlighted/SSHD Config/sshd_confignew file+36

This diff is too big to show here.

tests/syntax-tests/highlighted/Sass/example.sassnew file+76

This diff is too big to show here.

tests/syntax-tests/highlighted/Scala/ConcurrentEffectLaws.scalanew file+98

This diff is too big to show here.

tests/syntax-tests/highlighted/Slim/test.slimnew file+20

This diff is too big to show here.

tests/syntax-tests/highlighted/Solidity/ERC721.solnew file+376

This diff is too big to show here.

tests/syntax-tests/highlighted/Strace/ls.stracenew file+94

This diff is too big to show here.

tests/syntax-tests/highlighted/Stylus/gradients.stylnew file+90

This diff is too big to show here.

tests/syntax-tests/highlighted/Svelte/App.sveltenew file+65

This diff is too big to show here.

tests/syntax-tests/highlighted/Swift/test.swiftnew file+268

This diff is too big to show here.

tests/syntax-tests/highlighted/Syslog/example.syslognew file+16

This diff is too big to show here.

tests/syntax-tests/highlighted/SystemVerilog/output.svnew file+103

This diff is too big to show here.

tests/syntax-tests/highlighted/TOML/Cargo.tomlnew file+87

This diff is too big to show here.

tests/syntax-tests/highlighted/Tcl/test.tclnew file+22

This diff is too big to show here.

tests/syntax-tests/highlighted/TeX/main.texnew file+84

This diff is too big to show here.

tests/syntax-tests/highlighted/Terraform/main.tfnew file+48

This diff is too big to show here.

tests/syntax-tests/highlighted/Textile/test.textilenew file+40

This diff is too big to show here.

tests/syntax-tests/highlighted/TypeScript/example.tsnew file+110

This diff is too big to show here.

tests/syntax-tests/highlighted/TypeScriptReact/app.tsxnew file+35

This diff is too big to show here.

tests/syntax-tests/highlighted/Verilog/div_pipelined.vnew file+172

This diff is too big to show here.

tests/syntax-tests/highlighted/VimL/source.vimnew file+92

This diff is too big to show here.

tests/syntax-tests/highlighted/Vue/example.vuenew file+60

This diff is too big to show here.

tests/syntax-tests/highlighted/Vyper/crowdsale.vynew file+89

This diff is too big to show here.

tests/syntax-tests/highlighted/XAML/ItemPage.xamlnew file+264

This diff is too big to show here.

tests/syntax-tests/highlighted/XML/example.xmlnew file+22

This diff is too big to show here.

tests/syntax-tests/highlighted/YAML/example.yamlnew file+34

This diff is too big to show here.

tests/syntax-tests/highlighted/Zig/example.zignew file+107

This diff is too big to show here.

tests/syntax-tests/highlighted/cmd-help/test.cmd-helpnew file+54

This diff is too big to show here.

tests/syntax-tests/highlighted/dash/shfmnew file+425

This diff is too big to show here.

tests/syntax-tests/highlighted/gnuplot/test.gpnew file+19

This diff is too big to show here.

tests/syntax-tests/highlighted/http-request-response/example.httpnew file+44

This diff is too big to show here.

tests/syntax-tests/highlighted/jsonnet/stdlib.jsonnetnew file+88

This diff is too big to show here.

tests/syntax-tests/highlighted/nginx/nginx.confnew file+140

This diff is too big to show here.

tests/syntax-tests/highlighted/nim/main.nimnew file+41

This diff is too big to show here.

tests/syntax-tests/highlighted/nim/test.nimblenew file+23

This diff is too big to show here.

tests/syntax-tests/highlighted/nix/test.nixnew file+15

This diff is too big to show here.

tests/syntax-tests/highlighted/orgmode/test.orgnew file+38

This diff is too big to show here.

tests/syntax-tests/highlighted/reStructuredText/reference.rstnew file+320

This diff is too big to show here.

tests/syntax-tests/highlighted/resolv.conf/resolv.confnew file+4

This diff is too big to show here.

tests/syntax-tests/highlighted/varlink/org.varlink.certification.varlinknew file+86

This diff is too big to show here.

tests/syntax-tests/regression_test.shnew file+15

This diff is too big to show here.

tests/syntax-tests/source/ARM Assembly/test.Snew file+55

This diff is too big to show here.

tests/syntax-tests/source/ASP/test.aspnew file+36

This diff is too big to show here.

tests/syntax-tests/source/AWK/quicksort.awknew file+35

This diff is too big to show here.

tests/syntax-tests/source/ActionScript/test.asnew file+75

This diff is too big to show here.

tests/syntax-tests/source/Apache/httpd.confnew file+42

This diff is too big to show here.

tests/syntax-tests/source/AppleScript/test.applescriptnew file+25

This diff is too big to show here.

tests/syntax-tests/source/AsciiDoc/test.adocnew file+173

This diff is too big to show here.

tests/syntax-tests/source/Assembly (x86_64)/test.nasmnew file+86

This diff is too big to show here.

tests/syntax-tests/source/Bash/batgrep.shnew file+511

This diff is too big to show here.

tests/syntax-tests/source/Bash/simple.shnew file+72

This diff is too big to show here.

tests/syntax-tests/source/BatTestCustomAssets/NoColorsUnlessCustomAssetsAreUsed.battestcustomassetsnew file+2

This diff is too big to show here.

tests/syntax-tests/source/Batch/LICENSE.mdnew file+26

This diff is too big to show here.

tests/syntax-tests/source/Batch/build.batnew file+59

This diff is too big to show here.

tests/syntax-tests/source/BibTeX/test.bibnew file+18

This diff is too big to show here.

tests/syntax-tests/source/C-Sharp/Stack.csnew file+64

This diff is too big to show here.

tests/syntax-tests/source/C/test.cnew file+62

This diff is too big to show here.

tests/syntax-tests/source/CMake/CMakeLists.txtnew file+16

This diff is too big to show here.

tests/syntax-tests/source/CSS/style.cssnew file+115

This diff is too big to show here.

tests/syntax-tests/source/CSV/LICENSE.mdnew file+27

This diff is too big to show here.

tests/syntax-tests/source/CSV/comma_in_quotes.csvnew file+7

This diff is too big to show here.

tests/syntax-tests/source/Cabal/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Cabal/semantic.cabalnew file+247

This diff is too big to show here.

tests/syntax-tests/source/Clojure/test.cljnew file+58

This diff is too big to show here.

tests/syntax-tests/source/CoffeeScript/LICENSE.mdnew file+26

This diff is too big to show here.

tests/syntax-tests/source/CoffeeScript/coffeescript.coffeenew file+391

This diff is too big to show here.

tests/syntax-tests/source/Cpp/test.cppnew file+79

This diff is too big to show here.

tests/syntax-tests/source/CpuInfo/test.cpuinfonew file+45

This diff is too big to show here.

tests/syntax-tests/source/Crystal/test.crnew file+117

This diff is too big to show here.

tests/syntax-tests/source/D/test.dnew file+44

This diff is too big to show here.

tests/syntax-tests/source/Dart/inner_comment.dartnew file+5

This diff is too big to show here.

tests/syntax-tests/source/Dart/test.dartnew file+133

This diff is too big to show here.

tests/syntax-tests/source/Diff/82e7786e747b1fcfac1f963ae6415a22ec9caae1.diffnew file+353

This diff is too big to show here.

tests/syntax-tests/source/Dockerfile/Dockerfilenew file+19

This diff is too big to show here.

tests/syntax-tests/source/DotENV/.envnew file+57

This diff is too big to show here.

tests/syntax-tests/source/DotENV/LICENSE.mdnew file+23

This diff is too big to show here.

tests/syntax-tests/source/Elixir/LICENSE.mdnew file+21

This diff is too big to show here.

tests/syntax-tests/source/Elixir/command.exnew file+31

This diff is too big to show here.

tests/syntax-tests/source/Elm/LICENSE.mdnew file+32

This diff is too big to show here.

tests/syntax-tests/source/Elm/test.elmnew file+137

This diff is too big to show here.

tests/syntax-tests/source/Email/test.emlnew file+16

This diff is too big to show here.

tests/syntax-tests/source/Erlang/bat_erlang.erlnew file+72

This diff is too big to show here.

tests/syntax-tests/source/EtcGroup/test.groupnew file+67

This diff is too big to show here.

tests/syntax-tests/source/F#/LICENSE.mdnew file+27

This diff is too big to show here.

tests/syntax-tests/source/F#/string.fsnew file+182

This diff is too big to show here.

tests/syntax-tests/source/Fish/test.fishnew file+77

This diff is too big to show here.

tests/syntax-tests/source/Fortran (Fixed Form)/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Fortran (Fixed Form)/quicksort_real_F77.Fnew file+323

This diff is too big to show here.

tests/syntax-tests/source/Fortran (Modern)/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Fortran (Modern)/test_savetxt.f90new file+119

This diff is too big to show here.

tests/syntax-tests/source/Fortran Namelist/test.namelistnew file+5

This diff is too big to show here.

tests/syntax-tests/source/Fstab/fstabnew file+7

This diff is too big to show here.

tests/syntax-tests/source/GLSL/test.glslnew file+42

This diff is too big to show here.

tests/syntax-tests/source/Git Attributes/example.gitattributesnew file+16

This diff is too big to show here.

tests/syntax-tests/source/Git Config/LICENSE.mdnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Git Config/text.gitconfignew file+107

This diff is too big to show here.

tests/syntax-tests/source/Git Ignore/LICENSE.mdnew file+234

This diff is too big to show here.

tests/syntax-tests/source/Git Ignore/test.gitignorenew file+43

This diff is too big to show here.

tests/syntax-tests/source/Go/LICENSE.mdnew file+205

This diff is too big to show here.

tests/syntax-tests/source/Go/main.gonew file+81

This diff is too big to show here.

tests/syntax-tests/source/GraphQL/test.graphqlnew file+145

This diff is too big to show here.

tests/syntax-tests/source/Graphviz DOT/LICENSE.mdnew file+22

This diff is too big to show here.

tests/syntax-tests/source/Graphviz DOT/test_digraph.dotnew file+41

This diff is too big to show here.

tests/syntax-tests/source/Graphviz DOT/test_graph.dotnew file+3

This diff is too big to show here.

tests/syntax-tests/source/Groff/LICENSE.mdnew file+235

This diff is too big to show here.

tests/syntax-tests/source/Groff/rustdoc.1new file+126

This diff is too big to show here.

tests/syntax-tests/source/Groovy/test.groovynew file+77

This diff is too big to show here.

tests/syntax-tests/source/HTML/test.htmlnew file+115

This diff is too big to show here.

tests/syntax-tests/source/Haskell/test.hsnew file+86

This diff is too big to show here.

tests/syntax-tests/source/Hosts/hostsnew file+8

This diff is too big to show here.

tests/syntax-tests/source/INI/test.infnew file+5

This diff is too big to show here.

tests/syntax-tests/source/INI/test.ininew file+18

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.baknew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.dpkg-distnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.dpkg-oldnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.innew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.in.innew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.oldnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.orignew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.orig~new file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.rpmnewnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.rpmorignew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.rpmsavenew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.ucf-distnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.ucf-newnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs.ucf-oldnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.rs~new file+1

This diff is too big to show here.

tests/syntax-tests/source/Ignored suffixes/test.unknown~new file+1

This diff is too big to show here.

tests/syntax-tests/source/JQ/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/JQ/sample.jqnew file+60

This diff is too big to show here.

tests/syntax-tests/source/JSON/test.jsonnew file+29

This diff is too big to show here.

tests/syntax-tests/source/Java Server Page (JSP)/LICENSE.mdnew file+1141

This diff is too big to show here.

tests/syntax-tests/source/Java Server Page (JSP)/NOTICEnew file+68

This diff is too big to show here.

tests/syntax-tests/source/Java Server Page (JSP)/sessionDetail.jspnew file+197

This diff is too big to show here.

tests/syntax-tests/source/Java/test.javanew file+39

This diff is too big to show here.

tests/syntax-tests/source/JavaScript/test.jsnew file+114

This diff is too big to show here.

tests/syntax-tests/source/Jinja2/template.jinja2new file+30

This diff is too big to show here.

tests/syntax-tests/source/Julia/test.jlnew file+71

This diff is too big to show here.

tests/syntax-tests/source/Kotlin/test.ktnew file+85

This diff is too big to show here.

tests/syntax-tests/source/LLVM/test.llnew file+29

This diff is too big to show here.

tests/syntax-tests/source/Lean/test.leannew file+68

This diff is too big to show here.

tests/syntax-tests/source/Less/example.lessnew file+43

This diff is too big to show here.

tests/syntax-tests/source/Lisp/LICENSE.mdnew file+24

This diff is too big to show here.

tests/syntax-tests/source/Lisp/utils.lispnew file+80

This diff is too big to show here.

tests/syntax-tests/source/Literate Haskell/Main.lhsnew file+47

This diff is too big to show here.

tests/syntax-tests/source/LiveScript/LICENSE.mdnew file+23

This diff is too big to show here.

tests/syntax-tests/source/LiveScript/livescript-demo.lsnew file+83

This diff is too big to show here.

tests/syntax-tests/source/Log/example.lognew file+3

This diff is too big to show here.

tests/syntax-tests/source/Lua/test.luanew file+34

This diff is too big to show here.

tests/syntax-tests/source/MATLAB/LICENSE.mdnew file+27

This diff is too big to show here.

tests/syntax-tests/source/MATLAB/test.matlabnew file+34

This diff is too big to show here.

tests/syntax-tests/source/Makefile/LICENSE.mdnew file+12

This diff is too big to show here.

tests/syntax-tests/source/Makefile/Makefilenew file+385

This diff is too big to show here.

tests/syntax-tests/source/Manpage/bat-0.16.mannew file+243

This diff is too big to show here.

tests/syntax-tests/source/Manpage/select-2.mannew file+330

This diff is too big to show here.

tests/syntax-tests/source/Markdown/example.mdnew file+39

This diff is too big to show here.

tests/syntax-tests/source/MediaWiki/test.mediawikinew file+37

This diff is too big to show here.

tests/syntax-tests/source/MemInfo/test.meminfonew file+53

This diff is too big to show here.

tests/syntax-tests/source/NAnt Build File/Default.buildnew file+167

This diff is too big to show here.

tests/syntax-tests/source/NAnt Build File/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Ninja/LICENSE.mdnew file+204

This diff is too big to show here.

tests/syntax-tests/source/Ninja/test.ninjanew file+6

This diff is too big to show here.

tests/syntax-tests/source/OCaml/syntax-test.mlnew file+83

This diff is too big to show here.

tests/syntax-tests/source/Objective-C++/test.mmnew file+68

This diff is too big to show here.

tests/syntax-tests/source/Objective-C/test.mnew file+32

This diff is too big to show here.

tests/syntax-tests/source/PHP/test.phpnew file+111

This diff is too big to show here.

tests/syntax-tests/source/Pascal/test.pasnew file+42

This diff is too big to show here.

tests/syntax-tests/source/Passwd/passwdnew file+7

This diff is too big to show here.

tests/syntax-tests/source/Perl/test.plnew file+157

This diff is too big to show here.

tests/syntax-tests/source/Plaintext/README.mdnew file+12

This diff is too big to show here.

tests/syntax-tests/source/Plaintext/bat_optionsnew file+1

This diff is too big to show here.

tests/syntax-tests/source/Plaintext/plaintext.txtnew file

Binary file not shown.

tests/syntax-tests/source/PowerShell/test.ps1new file

Binary file not shown.

tests/syntax-tests/source/Protocol Buffer/vyconf.protonew file+158

This diff is too big to show here.

tests/syntax-tests/source/Puppet/LICENSE.mdnew file+206

This diff is too big to show here.

tests/syntax-tests/source/Puppet/manifest_large_exported_classes_node.ppnew file+65

This diff is too big to show here.

tests/syntax-tests/source/PureScript/test.pursnew file+89

This diff is too big to show here.

tests/syntax-tests/source/Python/battest.pynew file+100

This diff is too big to show here.

tests/syntax-tests/source/QML/BatSyntaxTest.qmlnew file+219

This diff is too big to show here.

tests/syntax-tests/source/R/test.rnew file+170

This diff is too big to show here.

tests/syntax-tests/source/Racket/test.rktnew file+56

This diff is too big to show here.

tests/syntax-tests/source/Rego/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Rego/src_test.regonew file+181

This diff is too big to show here.

tests/syntax-tests/source/Regular Expression/test.renew file+1

This diff is too big to show here.

tests/syntax-tests/source/Robot Framework/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/Robot Framework/recipe141_aws_simple_storage_service.robotnew file+31

This diff is too big to show here.

tests/syntax-tests/source/Ruby Haml/test.html.hamlnew file+15

This diff is too big to show here.

tests/syntax-tests/source/Ruby On Rails/test.rbnew file+22

This diff is too big to show here.

tests/syntax-tests/source/Ruby/output.rbnew file+56

This diff is too big to show here.

tests/syntax-tests/source/Rust/output.rsnew file+161

This diff is too big to show here.

tests/syntax-tests/source/SCSS/example.scssnew file+82

This diff is too big to show here.

tests/syntax-tests/source/SLS/test.slsnew file+57

This diff is too big to show here.

tests/syntax-tests/source/SML/sample.smlnew file+47

This diff is too big to show here.

tests/syntax-tests/source/SQL/ims.sqlnew file+266

This diff is too big to show here.

tests/syntax-tests/source/SSH Config/ssh_confignew file+9

This diff is too big to show here.

tests/syntax-tests/source/SSHD Config/sshd_confignew file+36

This diff is too big to show here.

tests/syntax-tests/source/Sass/example.sassnew file+76

This diff is too big to show here.

tests/syntax-tests/source/Scala/ConcurrentEffectLaws.scalanew file+98

This diff is too big to show here.

tests/syntax-tests/source/Scala/LICENSE.mdnew file+179

This diff is too big to show here.

tests/syntax-tests/source/Slim/test.slimnew file+20

This diff is too big to show here.

tests/syntax-tests/source/Solidity/ERC721.solnew file+376

This diff is too big to show here.

tests/syntax-tests/source/Solidity/LICENSE.mdnew file+27

This diff is too big to show here.

tests/syntax-tests/source/Strace/ls.stracenew file+94

This diff is too big to show here.

tests/syntax-tests/source/Stylus/LICENSE.mdnew file+24

This diff is too big to show here.

tests/syntax-tests/source/Stylus/gradients.stylnew file+90

This diff is too big to show here.

tests/syntax-tests/source/Svelte/App.sveltenew file+65

This diff is too big to show here.

tests/syntax-tests/source/Svelte/LICENSE.mdnew file+14

This diff is too big to show here.

tests/syntax-tests/source/Swift/test.swiftnew file+268

This diff is too big to show here.

tests/syntax-tests/source/Syslog/example.syslognew file+16

This diff is too big to show here.

tests/syntax-tests/source/SystemVerilog/output.svnew file+103

This diff is too big to show here.

tests/syntax-tests/source/TOML/Cargo.tomlnew file+87

This diff is too big to show here.

tests/syntax-tests/source/Tcl/test.tclnew file+22

This diff is too big to show here.

tests/syntax-tests/source/TeX/main.texnew file+84

This diff is too big to show here.

tests/syntax-tests/source/Terraform/main.tfnew file+48

This diff is too big to show here.

tests/syntax-tests/source/Textile/test.textilenew file+40

This diff is too big to show here.

tests/syntax-tests/source/TypeScript/LICENSE.mdnew file+19

This diff is too big to show here.

tests/syntax-tests/source/TypeScript/example.tsnew file+110

This diff is too big to show here.

tests/syntax-tests/source/TypeScriptReact/LICENSE.mdnew file+25

This diff is too big to show here.

tests/syntax-tests/source/TypeScriptReact/app.tsxnew file+35

This diff is too big to show here.

tests/syntax-tests/source/Verilog/LICENSE.mdnew file+205

This diff is too big to show here.

tests/syntax-tests/source/Verilog/div_pipelined.vnew file+172

This diff is too big to show here.

tests/syntax-tests/source/VimL/source.vimnew file+92

This diff is too big to show here.

tests/syntax-tests/source/Vue/example.vuenew file+60

This diff is too big to show here.

tests/syntax-tests/source/Vyper/LICENSE.mdnew file+205

This diff is too big to show here.

tests/syntax-tests/source/Vyper/crowdsale.vynew file+89

This diff is too big to show here.

tests/syntax-tests/source/XAML/ItemPage.xamlnew file+264

This diff is too big to show here.

tests/syntax-tests/source/XAML/LICENSE.mdnew file+23

This diff is too big to show here.

tests/syntax-tests/source/XML/example.xmlnew file+22

This diff is too big to show here.

tests/syntax-tests/source/YAML/example.yamlnew file+34

This diff is too big to show here.

tests/syntax-tests/source/Zig/example.zignew file+107

This diff is too big to show here.

tests/syntax-tests/source/cmd-help/test.cmd-helpnew file+54

This diff is too big to show here.

tests/syntax-tests/source/dash/LICENSE.mdnew file+23

This diff is too big to show here.

tests/syntax-tests/source/dash/shfmnew file+425

This diff is too big to show here.

tests/syntax-tests/source/gnuplot/test.gpnew file+19

This diff is too big to show here.

tests/syntax-tests/source/http-request-response/example.httpnew file+44

This diff is too big to show here.

tests/syntax-tests/source/jsonnet/LICENSE.mdnew file+206

This diff is too big to show here.

tests/syntax-tests/source/jsonnet/stdlib.jsonnetnew file+88

This diff is too big to show here.

tests/syntax-tests/source/nginx/nginx.confnew file+140

This diff is too big to show here.

tests/syntax-tests/source/nim/main.nimnew file+41

This diff is too big to show here.

tests/syntax-tests/source/nim/test.nimblenew file+23

This diff is too big to show here.

tests/syntax-tests/source/nix/test.nixnew file+15

This diff is too big to show here.

tests/syntax-tests/source/orgmode/test.orgnew file+38

This diff is too big to show here.

tests/syntax-tests/source/reStructuredText/reference.rstnew file+320

This diff is too big to show here.

tests/syntax-tests/source/resolv.conf/resolv.confnew file+4

This diff is too big to show here.

tests/syntax-tests/source/varlink/LICENSE.mdnew file+229

This diff is too big to show here.

tests/syntax-tests/source/varlink/org.varlink.certification.varlinknew file+86

This diff is too big to show here.

tests/syntax-tests/test_custom_assets.shnew file+74

This diff is too big to show here.

tests/syntax-tests/update.shnew file+7

This diff is too big to show here.

tests/tester.rs+24−24

This diff is too big to show here.

tests/utils/mocked_pagers.rsnew file+69

This diff is too big to show here.

tests/utils/mod.rsnew file+1

This diff is too big to show here.