1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-07-13 10:33:24 +01:00

Compare commits

..

772 Commits

Author SHA1 Message Date
5edd8260e8 Fix path to assets 2020-03-22 13:16:47 +01:00
02f2b55d5f Write completions and manfile to cargo outdir (cargo publish restriction) 2020-03-22 11:33:50 +01:00
6386a4b812 Update dependencies, see 2020-03-22 11:23:19 +01:00
c13935f3c0 Bump version to 0.13, see 2020-03-22 11:23:16 +01:00
eb2f3ddb7c Rename test methods 2020-03-22 11:02:51 +01:00
dfd3ef022e Add more default mappings, reverse traversal 2020-03-22 11:02:51 +01:00
978def2d40 Update documentation 2020-03-22 11:02:51 +01:00
57aed07814 Use absolute path for lookup in database 2020-03-22 11:02:51 +01:00
bd8a13dbc9 Initial implementation of glob-based syntax mapping 2020-03-22 11:02:51 +01:00
ba29e07636 Remove superfluous files 2020-03-22 00:04:33 +01:00
32346612b7 Move syntaxes, fixes 2020-03-21 23:53:53 +01:00
0550a286bd Cargo fmt 2020-03-21 23:53:53 +01:00
dfe5eb3e98 Add an even simple example 2020-03-21 22:21:23 +01:00
2c2861db6a Further simplify module structure 2020-03-21 22:21:23 +01:00
bb0a3d586e Simplify public API module structure 2020-03-21 22:21:23 +01:00
90397a8aac Hide SyntaxMapping::replace 2020-03-21 22:21:23 +01:00
84ba323b1c Rename output component to 'style compinent', move wrap to separate module 2020-03-21 22:21:23 +01:00
a8851e1307 Hide methods from line_range 2020-03-21 22:21:23 +01:00
d4a39f99d2 Hide API of InputFileReader 2020-03-21 22:21:23 +01:00
8c500a7e40 Hide get_syntax, move tests to module 2020-03-21 22:21:23 +01:00
acf51bd7b3 Rename methods and parameters 2020-03-21 22:21:23 +01:00
83dc13a86d Add fallback theme, remove BAT_THEME_DEFAULT 2020-03-21 22:21:23 +01:00
094c526a0e Hide some methods from HighlightingAssets 2020-03-21 22:21:23 +01:00
62f2d0c100 Do not export syntax_set and theme_set 2020-03-21 22:21:23 +01:00
fc1ca0875a Move error handling to a callback 2020-03-21 22:21:23 +01:00
a7338e2ea2 Run cargo fmt 2020-03-21 22:21:23 +01:00
9b8ddb24d1 move Config struct to separate file 2020-03-21 22:21:23 +01:00
7e0115641d Move error module to separate file 2020-03-21 22:21:23 +01:00
fedd32173e Restructure and fix bug in line range module 2020-03-21 19:19:15 +01:00
4855a47105 Rename enum field 2020-03-21 19:19:15 +01:00
06b7be7ee9 Major restructuring of theme/syntax handling 2020-03-21 19:19:15 +01:00
b1b8addf7e remove unnecessary Some() 2020-03-18 17:03:03 +01:00
4be5adc6f5 remove absolute path restraint from BAT_CACHE_PATH 2020-03-18 17:03:03 +01:00
a9a31dca7f Specify cache dir with BAT_CACHE_DIR
- if set, BAT_CACHE_DIR is used. otherwise use OS default.
2020-03-18 17:03:03 +01:00
9a9902bf9b Remove custom .github settings 2020-03-16 07:54:55 +01:00
4e40d4c720 Major update for the man page, closes 2020-03-15 23:15:30 +01:00
916c1e4359 Update assets 2020-03-15 22:33:26 +01:00
439be03634 Remove duplicate F# syntax 2020-03-15 22:33:26 +01:00
b611d2aef4 Add no-duplicate-extensions unit test 2020-03-15 22:33:26 +01:00
a2075b0f24 Update git dependency 2020-03-15 21:00:23 +01:00
3c1dd8558d Update links 2020-03-15 12:03:25 +01:00
17382d36b7 Update dependencies 2020-03-15 11:46:24 +01:00
2e07aabb74 fix links 2020-03-15 10:38:45 +01:00
f525fb974e fix typo and broken links 2020-03-15 10:38:45 +01:00
edf62953c4 add README-ko.md 2020-03-15 10:38:45 +01:00
260c5dcb75 fix: doc/README-ja.md
- Synchronized the contents of `README.md`.
- Fixed `README.md` to match the line number of text.
- Translated to Japanese.
- Fixed menu link anchor.
2020-03-11 22:36:09 +01:00
1bc62cd7b5 Add syntax detection unit tests 2020-03-11 10:08:11 +01:00
b1183f72a5 Update to new assert_cmd 2020-03-09 21:30:46 +01:00
a5e98146fb Bump assert_cmd from 0.11.1 to 0.12.0
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 0.11.1 to 0.12.0.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.11.1...v0.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 21:30:46 +01:00
6d32d3dbec Bump assert_cmd from 0.11.1 to 0.12.0
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 0.11.1 to 0.12.0.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.11.1...v0.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 21:30:46 +01:00
c6bbca62ef Bump console from 0.9.2 to 0.10.0
Bumps [console](https://github.com/mitsuhiko/console) from 0.9.2 to 0.10.0.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 06:35:56 +01:00
dd9755f223 Update dependencies 2020-03-06 23:54:58 +01:00
61e39158de Install fish completions into 'vendor_completions.d', fixes 2020-03-06 23:47:26 +01:00
65023a987e Bump assets/syntaxes/Packages from 71fd0ec to 759d6ee
Bumps [assets/syntaxes/Packages](https://github.com/sublimehq/Packages) from `71fd0ec` to `759d6ee`.
- [Release notes](https://github.com/sublimehq/Packages/releases)
- [Commits](71fd0ec9e4...759d6eed9b)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 23:43:34 +01:00
91843f6f65 Update 'JavaScript (Babel).sublime-syntax' 2020-03-06 23:43:16 +01:00
696547b646 Bump assets/syntaxes/JavaScript (Babel) from a9a908f to f4579f9
Bumps [assets/syntaxes/JavaScript (Babel)](https://github.com/babel/babel-sublime) from `a9a908f` to `f4579f9`.
- [Release notes](https://github.com/babel/babel-sublime/releases)
- [Commits](a9a908fe1d...f4579f9107)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 23:43:16 +01:00
4d2682325b Update TypeScript.sublime-syntax 2020-03-06 23:40:53 +01:00
65811d9034 Bump assets/syntaxes/TypeScript from ab51614 to 9cd994a
Bumps [assets/syntaxes/TypeScript](https://github.com/Microsoft/TypeScript-Sublime-Plugin) from `ab51614` to `9cd994a`.
- [Release notes](https://github.com/Microsoft/TypeScript-Sublime-Plugin/releases)
- [Commits](ab51614c07...9cd994af73)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 23:40:53 +01:00
f2b7c060a3 Add link to Choco package 2020-03-06 23:39:17 +01:00
08dd251b9c Update Windows install instructions 2020-03-06 23:38:07 +01:00
d081473261 Update README.md 2020-03-06 23:38:07 +01:00
3901480c59 Move VC++ to Windows section 2020-03-06 23:38:07 +01:00
1cad3f56ec Explain how to fix no output issue
I just ran into this so I figured it might be helpful for others.
2020-03-06 23:38:07 +01:00
147503bd56 Add CoffeeScript syntax, closes 2020-03-06 23:29:08 +01:00
d1b0e955ea Update dependencies 2020-03-06 23:29:08 +01:00
4021cf8128 Support combination of multiple styles at the same time
Old version of the code did not allowed for `bold italic` or `bold underline` styles
2020-03-04 23:28:53 +01:00
7155f76963 Merge pull request from eth-p/master
Fix broken link in issue template.
2020-03-03 13:41:18 -08:00
b63f31e15d Fix broken link in issue template. 2020-03-03 13:09:31 -08:00
9c3d8c4028 Bump assets/syntaxes/ssh-config from e84b78f to 16e19d5
Bumps [assets/syntaxes/ssh-config](https://github.com/robballou/sublimetext-sshconfig) from `e84b78f` to `16e19d5`.
- [Release notes](https://github.com/robballou/sublimetext-sshconfig/releases)
- [Commits](e84b78f9f9...16e19d5da4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-01 11:00:18 +01:00
d33b7071e3 Bump assets/syntaxes/GraphQL from 66ce871 to c9d8458
Bumps [assets/syntaxes/GraphQL](https://github.com/dncrews/GraphQL-SublimeText3) from `66ce871` to `c9d8458`.
- [Release notes](https://github.com/dncrews/GraphQL-SublimeText3/releases)
- [Commits](66ce8713d8...c9d84587eb)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-01 10:59:58 +01:00
ca066bf7cd Run 'cargo fmt' 2020-02-28 10:27:06 +01:00
4ac3161c19 Rename label syntax-request 2020-02-28 09:47:27 +01:00
d479e07bcb Rename label 2020-02-28 09:46:33 +01:00
369ba7bb0a Remove title prefix (we already have labels for that) 2020-02-28 09:39:38 +01:00
9df85edc4c Add 'question' template 2020-02-28 09:36:46 +01:00
d007caf39c Add simple "Feature request" template 2020-02-28 09:32:47 +01:00
7d453dfdc5 Simplify issue templates 2020-02-28 09:30:28 +01:00
60f48a0c91 Update test data
Avoid using existing text
2020-02-28 09:06:51 +01:00
25640a8a81 Fix bug where max_width is not initialized after line break 2020-02-28 09:06:51 +01:00
944866affd Fix wrapping method to support unicode text
Related issues:
- 
- 
2020-02-28 09:06:51 +01:00
22ded00824 Add test for unicode wrapping 2020-02-28 09:06:51 +01:00
85e84ab3eb Add unicode-width dependency 2020-02-28 09:06:51 +01:00
993b76654d Change bug_report template to accomodate info.sh output 2020-02-28 08:03:13 +01:00
2b2743b120 Change output format of info.sh to markdown 2020-02-28 08:03:13 +01:00
f01263bcff Fix typo causing missing command warning in info.sh 2020-02-28 08:03:13 +01:00
8648b86a73 Add detection of a wrapper function to info.sh 2020-02-28 08:03:13 +01:00
39d9343a7d Change a word in bug_report.md 2020-02-28 08:03:13 +01:00
5faf7ca158 Change ISSUE_TEMPLATE files based on feedback in 2020-02-28 08:03:13 +01:00
ebe475247c Change consent banner (and fix tput) in info.sh 2020-02-28 08:03:13 +01:00
63f6343cf1 Add issue templates 2020-02-28 08:03:13 +01:00
ad42b275a9 Add script to use for diagnosing issues 2020-02-28 08:03:13 +01:00
2dac1c8785 Add @sharkdp's regression test for 2020-02-28 07:56:24 +01:00
1225e65299 Fix 2020-02-28 07:56:24 +01:00
d1bb47d741 Bump min. required Rust version to 1.36 2020-02-27 23:09:03 +01:00
f079c14068 Bump git2 from 0.11.0 to 0.12.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.11.0...git2-curl-0.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-27 23:09:03 +01:00
388f4c71fd Add ja-transration of Paging on Using bat on Windows 2020-02-27 21:51:50 +01:00
b675e1bb61 Add Vue syntax 2020-02-25 20:12:33 +01:00
f96220f33d Bump error-chain from 0.12.1 to 0.12.2
Bumps [error-chain](https://github.com/rust-lang-nursery/error-chain) from 0.12.1 to 0.12.2.
- [Release notes](https://github.com/rust-lang-nursery/error-chain/releases)
- [Changelog](https://github.com/rust-lang-nursery/error-chain/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang-nursery/error-chain/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-22 12:10:39 +01:00
6739230039 Bump assets/syntaxes/ssh-config from fcd4378 to e84b78f
Bumps [assets/syntaxes/ssh-config](https://github.com/robballou/sublimetext-sshconfig) from `fcd4378` to `e84b78f`.
- [Release notes](https://github.com/robballou/sublimetext-sshconfig/releases)
- [Commits](fcd4378567...e84b78f9f9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 18:56:35 +01:00
710018b845 Bump assets/syntaxes/Fish from ad6a6ca to 2c254cc
Bumps [assets/syntaxes/Fish](https://github.com/Phidica/sublime-fish) from `ad6a6ca` to `2c254cc`.
- [Release notes](https://github.com/Phidica/sublime-fish/releases)
- [Commits](ad6a6ca83c...2c254cc851)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 18:44:27 +01:00
7779d9f622 Allow for non-unicode filenames, closes 2020-02-13 08:25:04 +01:00
e98f34b1e8 Bump assets/syntaxes/LESS from 8cd08e3 to 3020993
Bumps [assets/syntaxes/LESS](https://github.com/danro/LESS-sublime) from `8cd08e3` to `3020993`.
- [Release notes](https://github.com/danro/LESS-sublime/releases)
- [Commits](8cd08e30e6...3020993658)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 20:23:01 +01:00
9ace915d71 Bump assets/themes/dracula-sublime from c31934f to 811a634
Bumps [assets/themes/dracula-sublime](https://github.com/dracula/sublime) from `c31934f` to `811a634`.
- [Release notes](https://github.com/dracula/sublime/releases)
- [Commits](c31934f43f...811a634420)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 19:54:04 +01:00
e5c415555d Bump console from 0.9.1 to 0.9.2
Bumps [console](https://github.com/mitsuhiko/console) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.9.1...0.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 06:56:43 +01:00
5ef1c6cce2 Grammar touch-ups, more descriptive error message for invalid line
ranges
2020-01-27 06:54:00 +01:00
93881d9a64 Adds range syntax for line highlights 2020-01-27 06:54:00 +01:00
87776ae07e Bump assets/syntaxes/TypeScript from 1d5160e to ab51614
Bumps [assets/syntaxes/TypeScript](https://github.com/Microsoft/TypeScript-Sublime-Plugin) from `1d5160e` to `ab51614`.
- [Release notes](https://github.com/Microsoft/TypeScript-Sublime-Plugin/releases)
- [Commits](1d5160e8a1...ab51614c07)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-26 13:52:14 +01:00
6c71a4324b Bump assets/syntaxes/Terraform from c683495 to 64208ea
Bumps [assets/syntaxes/Terraform](https://github.com/alexlouden/Terraform.tmLanguage) from `c683495` to `64208ea`.
- [Release notes](https://github.com/alexlouden/Terraform.tmLanguage/releases)
- [Commits](c683495c64...64208ea816)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-26 13:51:59 +01:00
90ee939671 Add information about the license to README files 2020-01-18 20:45:56 +01:00
cae06bf649 Fix invalid link 2020-01-18 20:45:56 +01:00
89220da47b Update copyright year of the MIT License file 2020-01-18 20:45:56 +01:00
903af3ee09 Show master state 2020-01-12 10:59:24 +01:00
0418e6294b Bump atty from 0.2.13 to 0.2.14
Bumps [atty](https://github.com/softprops/atty) from 0.2.13 to 0.2.14.
- [Release notes](https://github.com/softprops/atty/releases)
- [Changelog](https://github.com/softprops/atty/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/atty/compare/0.2.13...0.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 08:14:51 +01:00
eabd100dad Simplify Travis caching 2020-01-04 16:02:57 +01:00
f66a5bfa42 Bump assets/themes/dracula-sublime from 1d068cb to c31934f
Bumps [assets/themes/dracula-sublime](https://github.com/dracula/sublime) from `1d068cb` to `c31934f`.
- [Release notes](https://github.com/dracula/sublime/releases)
- [Commits](1d068cb1ba...c31934f43f)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-27 18:34:13 +01:00
8d0b8a227b Add test for less 529 2019-12-23 13:01:14 +01:00
e400ebd1bd Also pass '--no-init' if version could not be retrieved 2019-12-23 12:45:23 +01:00
6684c0b07a Remove example line from config file 2019-12-23 12:45:23 +01:00
6568d03924 Update README 2019-12-23 12:45:23 +01:00
67fe804256 Do not pass '--no-init' on newer less versions
With this change, we do not pass the `--no-init` option in newer
versions of less (530 or higher).

This fixes 
2019-12-23 12:45:23 +01:00
126729f87a Enable LTO
closes 
2019-12-22 16:46:55 +01:00
0aca27511a Add simple /proc/meminfo syntax, see 2019-12-22 16:25:39 +01:00
77ff853739 Add simple /proc/cpuinfo syntax, see 2019-12-22 16:22:32 +01:00
20ba984c6d Update help text, closes 2019-12-22 16:05:00 +01:00
6311ca22f9 Add check for terminal-width in output_wrap config value in not interactive case
Co-authored-by: allevo <tomallevi@gmail.com>
Co-authored-by: gildo <gildo.fiorito@gmail.com>
2019-12-22 15:20:34 +01:00
41d547532f Fix '日本文' to '日本語' 2019-12-21 10:03:53 +01:00
e9156f8090 Bump assets/syntaxes/SCSS_Sass from 0e8e0f9 to b98a3f3
Bumps [assets/syntaxes/SCSS_Sass](https://github.com/braver/SublimeSass) from `0e8e0f9` to `b98a3f3`.
- [Release notes](https://github.com/braver/SublimeSass/releases)
- [Commits](0e8e0f9d2f...b98a3f3ccf)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-20 17:57:16 +01:00
1eaa681c7e Bump assets/themes/dracula-sublime from b7e8961 to 1d068cb
Bumps [assets/themes/dracula-sublime](https://github.com/dracula/sublime) from `b7e8961` to `1d068cb`.
- [Release notes](https://github.com/dracula/sublime/releases)
- [Commits](b7e8961afa...1d068cb1ba)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-20 17:57:02 +01:00
d96ae099ef Bump assets/syntaxes/Elixir from 044d9af to 89b3bad
Bumps [assets/syntaxes/Elixir](https://github.com/princemaple/elixir-sublime-syntax) from `044d9af` to `89b3bad`.
- [Release notes](https://github.com/princemaple/elixir-sublime-syntax/releases)
- [Commits](044d9af8a1...89b3bada32)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-20 17:56:33 +01:00
40e5befdc7 Minor change 2019-12-15 20:55:48 +01:00
f94ff93953 Accept "default" as a theme 2019-12-15 20:55:48 +01:00
3523f60299 Leave blank lines blank terminal output.
Would add some ANSI colour codes previously.
2019-12-15 20:32:02 +01:00
83dc8468b0 feat(theme): Solarized light and dark themes 2019-12-15 20:10:32 +01:00
826624c9fa Bump git2 from 0.10.2 to 0.11.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.10.2 to 0.11.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/0.10.2...git2-curl-0.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:30:34 +01:00
0fed098c53 Bump assets/syntaxes/LESS from 4eada94 to 8cd08e3
Bumps [assets/syntaxes/LESS](https://github.com/danro/LESS-sublime) from `4eada94` to `8cd08e3`.
- [Release notes](https://github.com/danro/LESS-sublime/releases)
- [Commits](4eada94009...8cd08e30e6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:05:10 +01:00
cc7eafb7fb Bump assets/syntaxes/TypeScript from 8bfce29 to 1d5160e
Bumps [assets/syntaxes/TypeScript](https://github.com/Microsoft/TypeScript-Sublime-Plugin) from `8bfce29` to `1d5160e`.
- [Release notes](https://github.com/Microsoft/TypeScript-Sublime-Plugin/releases)
- [Commits](8bfce299be...1d5160e8a1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:04:46 +01:00
f35c41ba13 Bump assets/syntaxes/Fish from 0f7d31b to ad6a6ca
Bumps [assets/syntaxes/Fish](https://github.com/Phidica/sublime-fish) from `0f7d31b` to `ad6a6ca`.
- [Release notes](https://github.com/Phidica/sublime-fish/releases)
- [Commits](0f7d31b43e...ad6a6ca83c)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:03:49 +01:00
1f4246eb3c Bump assets/syntaxes/ssh-config from 17e23d7 to fcd4378
Bumps [assets/syntaxes/ssh-config](https://github.com/robballou/sublimetext-sshconfig) from `17e23d7` to `fcd4378`.
- [Release notes](https://github.com/robballou/sublimetext-sshconfig/releases)
- [Commits](17e23d7d38...fcd4378567)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:03:34 +01:00
9300392c43 Bump assets/themes/zenburn from b7f27e2 to cb746f6
Bumps [assets/themes/zenburn](https://github.com/colinta/zenburn) from `b7f27e2` to `cb746f6`.
- [Release notes](https://github.com/colinta/zenburn/releases)
- [Commits](b7f27e2f65...cb746f6962)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:03:06 +01:00
8d3ce5f88a Manually convert PowerShell.sublime-syntax 2019-12-09 23:40:31 +01:00
a1d18d8c8c Bump assets/syntaxes/PowerShell from 12b7d72 to 4a0a076
Bumps [assets/syntaxes/PowerShell](https://github.com/PowerShell/EditorSyntax) from `12b7d72` to `4a0a076`.
- [Release notes](https://github.com/PowerShell/EditorSyntax/releases)
- [Commits](12b7d7257e...4a0a076661)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 23:40:31 +01:00
d43431d8f1 Manually convert Crystal.sublime-syntax 2019-12-09 23:39:07 +01:00
8baa76aa8f Bump assets/syntaxes/Crystal from 2f96cec to 2ee9d66
Bumps [assets/syntaxes/Crystal](https://github.com/crystal-lang-tools/sublime-crystal) from `2f96cec` to `2ee9d66`.
- [Release notes](https://github.com/crystal-lang-tools/sublime-crystal/releases)
- [Commits](2f96cec2ca...2ee9d667ae)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 23:39:07 +01:00
01846fad30 Manually convert Nix.sublime-syntax 2019-12-09 23:37:41 +01:00
18255f9835 Bump assets/syntaxes/Nix from ebf0657 to 9032bd6
Bumps [assets/syntaxes/Nix](https://github.com/wmertens/sublime-nix) from `ebf0657` to `9032bd6`.
- [Release notes](https://github.com/wmertens/sublime-nix/releases)
- [Commits](ebf06571f3...9032bd6137)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 23:37:41 +01:00
7b94f2c1d7 Manually convert Cabal.sublime-syntax 2019-12-09 23:36:28 +01:00
7ca73c2e79 Bump assets/syntaxes/Cabal from 1c054d9 to 2d98cb7
Bumps [assets/syntaxes/Cabal](https://github.com/SublimeHaskell/SublimeHaskell) from `1c054d9` to `2d98cb7`.
- [Release notes](https://github.com/SublimeHaskell/SublimeHaskell/releases)
- [Commits](1c054d9b36...2d98cb79eb)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 23:36:28 +01:00
75cb1ce196 Manually convert Robot.sublime-syntax 2019-12-09 23:34:50 +01:00
35026a033a Bump assets/syntaxes/Robot from 8e5a349 to fcd3323
Bumps [assets/syntaxes/Robot](https://github.com/andriyko/sublime-robot-framework-assistant) from `8e5a349` to `fcd3323`.
- [Release notes](https://github.com/andriyko/sublime-robot-framework-assistant/releases)
- [Commits](8e5a349a3e...fcd3323b56)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 23:34:50 +01:00
48031f282c Update Japanese README file
The beginning part of untranslated was translated into Japanese text.
2019-12-06 20:09:34 +01:00
7b2e98d5b7 added Nord color theme 2019-12-04 22:05:26 +01:00
fb71b67a8d Remove the already translated line
This line was already translated at 159f234.
2019-11-24 23:27:33 +01:00
d48f51e39d Bump git2 from 0.10.1 to 0.10.2
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.10.1 to 0.10.2.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.10.1...0.10.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-24 23:09:35 +01:00
9b1930b2b3 Bump assets/syntaxes/Packages from d1494f4 to 71fd0ec
Bumps [assets/syntaxes/Packages](https://github.com/sublimehq/Packages) from `d1494f4` to `71fd0ec`.
- [Release notes](https://github.com/sublimehq/Packages/releases)
- [Commits](d1494f4a5a...71fd0ec9e4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 10:44:29 +01:00
96d8013581 Bump assets/syntaxes/Docker from 6e521ea to 9e9a518
Bumps [assets/syntaxes/Docker](https://github.com/asbjornenge/Docker.tmbundle) from `6e521ea` to `9e9a518`.
- [Release notes](https://github.com/asbjornenge/Docker.tmbundle/releases)
- [Commits](6e521ead6c...9e9a518aed)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 10:38:32 +01:00
46b345f2c2 Bump assets/syntaxes/Jsonnet from 80775c6 to e2c917e
Bumps [assets/syntaxes/Jsonnet](https://github.com/gburiola/sublime-jsonnet-syntax) from `80775c6` to `e2c917e`.
- [Release notes](https://github.com/gburiola/sublime-jsonnet-syntax/releases)
- [Commits](80775c616e...e2c917ed7d)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 10:37:48 +01:00
4e5b40e274 Bump assets/syntaxes/SCSS_Sass from 1195db9 to 0e8e0f9
Bumps [assets/syntaxes/SCSS_Sass](https://github.com/braver/SublimeSass) from `1195db9` to `0e8e0f9`.
- [Release notes](https://github.com/braver/SublimeSass/releases)
- [Commits](1195db9f16...0e8e0f9d2f)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 10:36:43 +01:00
d0e7ca159a Bump assets/syntaxes/Julia from 581805e to 0ca4cc2
Bumps [assets/syntaxes/Julia](https://github.com/JuliaEditorSupport/Julia-sublime) from `581805e` to `0ca4cc2`.
- [Release notes](https://github.com/JuliaEditorSupport/Julia-sublime/releases)
- [Commits](581805e47c...0ca4cc2990)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 10:35:57 +01:00
e981e97407 Manually convert DotENV.sublime-syntax 2019-11-06 20:23:07 +01:00
a8ec3b826c Bump assets/syntaxes/DotENV from f6cad11 to a1c9176
Bumps [assets/syntaxes/DotENV](https://github.com/zaynali53/DotENV) from `f6cad11` to `a1c9176`.
- [Release notes](https://github.com/zaynali53/DotENV/releases)
- [Commits](f6cad1140c...a1c917633d)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 20:23:07 +01:00
f4a59d74f1 Manually convert TypeScript.sublime-syntax 2019-11-06 20:21:53 +01:00
b9b6d9e31e Bump assets/syntaxes/TypeScript from 19a599a to 8bfce29
Bumps [assets/syntaxes/TypeScript](https://github.com/Microsoft/TypeScript-Sublime-Plugin) from `19a599a` to `8bfce29`.
- [Release notes](https://github.com/Microsoft/TypeScript-Sublime-Plugin/releases)
- [Commits](19a599ad0e...8bfce299be)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 20:21:53 +01:00
d65ae517dd Rename Fish syntax folder 2019-11-06 20:19:01 +01:00
bb675e57c7 Remove manually converted fish syntax 2019-11-06 20:16:25 +01:00
9fe38e200e Bump assets/syntaxes/sublime-fish from 0795764 to 0f7d31b
Bumps [assets/syntaxes/sublime-fish](https://github.com/Phidica/sublime-fish) from `0795764` to `0f7d31b`.
- [Release notes](https://github.com/Phidica/sublime-fish/releases)
- [Commits](079576415a...0f7d31b43e)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 20:16:25 +01:00
a2fcb09d7a Bump assets/syntaxes/Protobuf from 5115c1c to 726e21d
Bumps [assets/syntaxes/Protobuf](https://github.com/VcamX/protobuf-syntax-highlighting) from `5115c1c` to `726e21d`.
- [Release notes](https://github.com/VcamX/protobuf-syntax-highlighting/releases)
- [Commits](5115c1c59a...726e21d74d)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 20:03:57 +01:00
8c7916e128 Bump assets/themes/sublime-monokai-extended from 1658f51 to 0ca4e75
Bumps [assets/themes/sublime-monokai-extended](https://github.com/jonschlinkert/sublime-monokai-extended) from `1658f51` to `0ca4e75`.
- [Release notes](https://github.com/jonschlinkert/sublime-monokai-extended/releases)
- [Commits](1658f51c15...0ca4e75291)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 20:03:21 +01:00
3d23daa7b4 Bump assets/syntaxes/LESS from d3ddfe7 to 4eada94
Bumps [assets/syntaxes/LESS](https://github.com/danro/LESS-sublime) from `d3ddfe7` to `4eada94`.
- [Release notes](https://github.com/danro/LESS-sublime/releases)
- [Commits](d3ddfe7b51...4eada94009)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-05 20:42:09 +01:00
572cbb00e2 Bump assets/syntaxes/PureScript from 42a61e3 to 5acebc1
Bumps [assets/syntaxes/PureScript](https://github.com/tellnobody1/sublime-purescript-syntax) from `42a61e3` to `5acebc1`.
- [Release notes](https://github.com/tellnobody1/sublime-purescript-syntax/releases)
- [Commits](42a61e39ad...5acebc1850)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-05 20:41:54 +01:00
dedaebdf15 Bump assets/syntaxes/Terraform from 3227a2d to c683495
Bumps [assets/syntaxes/Terraform](https://github.com/alexlouden/Terraform.tmLanguage) from `3227a2d` to `c683495`.
- [Release notes](https://github.com/alexlouden/Terraform.tmLanguage/releases)
- [Commits](3227a2d2a2...c683495c64)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-05 20:41:47 +01:00
3d90c6adee Bump assets/syntaxes/ssh-config from 86bfd1b to 17e23d7
Bumps [assets/syntaxes/ssh-config](https://github.com/robballou/sublimetext-sshconfig) from `86bfd1b` to `17e23d7`.
- [Release notes](https://github.com/robballou/sublimetext-sshconfig/releases)
- [Commits](86bfd1b090...17e23d7d38)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-05 20:41:37 +01:00
06a521ec34 Bump assets/themes/onehalf from 2516b37 to fdcbffe
Bumps [assets/themes/onehalf](https://github.com/sonph/onehalf) from `2516b37` to `fdcbffe`.
- [Release notes](https://github.com/sonph/onehalf/releases)
- [Commits](2516b37c3f...fdcbffe317)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-05 20:41:26 +01:00
37f7c94ba4 Properly add Twig submodule, closes 2019-11-05 20:33:16 +01:00
396e1ac6b6 Add simple pattern for command-line options 2019-11-05 07:13:33 +01:00
49e2073910 Highlight capitalized function calls / man page references 2019-11-05 07:13:33 +01:00
7d18649284 Bump console from 0.9.0 to 0.9.1
Bumps [console](https://github.com/mitsuhiko/console) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.9.0...0.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 20:38:01 +01:00
850677f121 Remove 'advanced' example 2019-10-30 19:47:51 +01:00
c132e19e74 Make a few modules private 2019-10-30 19:47:51 +01:00
3334f74b72 Remove custom 'transpose' function 2019-10-30 19:47:51 +01:00
b9ce3c248c Simplify 'using_controller' example 2019-10-30 19:47:51 +01:00
310654d49f Format "delta" like the other programs. 2019-10-30 19:47:37 +01:00
3f37d292ec Point to delta in usage-with-git section of README 2019-10-30 19:47:37 +01:00
0a42d2b897 Add Nim syntax, closes 2019-10-30 19:47:24 +01:00
3b5fcf4619 Update options sort order in --help and manpage file
This commit updates the sort order of --help options in order to improve
usability/importance putting most useful/used commands on top. In
addition to that, similar options were grouped together.
2019-10-29 19:54:25 +01:00
ab2a6ad1d5 Add more colors to fstab syntax 2019-10-29 09:20:14 +01:00
7db30f9123 Merge pull request from MarcoFalke/patch-1
doc: Add Ubuntu/Debian bat package to Readme
2019-10-28 15:44:06 -07:00
59f2b30768 Merge pull request from flopp/fstab-syntax
Add fstab syntax definitions
2019-10-28 15:41:56 -07:00
9fb14d78e1 Add syntax highlighting for /etc/resolv.conf 2019-10-28 21:29:29 +01:00
921a65f0a1 Update README.md 2019-10-28 16:26:28 -04:00
b9c07e52e8 doc: Add Ubuntu/Debian bat package to Readme
Documentation update to fix 
2019-10-26 10:33:17 -04:00
edbb4b2fc9 Add syntax highlighting for /etc/passwd file 2019-10-24 08:20:46 +02:00
15b1676b72 Add syntax highlighting for /etc/group file 2019-10-24 08:20:46 +02:00
753a124ef2 Add some comments 2019-10-21 22:00:39 +02:00
58a4d009fa Add fstab file syntax 2019-10-21 21:56:24 +02:00
4664fb6f91 Remove comment in both examples
```diff
-// add_file()
```
2019-10-20 21:43:51 +02:00
e287594654 Fix compile-error on Rust v1.35.0 2019-10-20 21:43:51 +02:00
1e19404736 Add 2 examples 2019-10-20 21:43:51 +02:00
2253d07341 Derive fmt::Debug whenever possible 2019-10-20 21:43:51 +02:00
7208a63a49 Implement trait Default for struct Config 2019-10-20 21:43:51 +02:00
0273848f54 Run cargo fmt 2019-10-20 21:43:51 +02:00
e542621125 Move back printer.rs and others into lib
others:
bin/bat/{controller,decorations,output,printer}.rs
2019-10-20 21:43:51 +02:00
26439b41d2 Move Config,PagingMode from app.rs into lib.rs 2019-10-20 21:43:51 +02:00
a2ee753b25 Move config.rs into src/bin/bat/ 2019-10-20 21:43:51 +02:00
d3243903c0 Add --bins flag in CI before_deploy 2019-10-20 21:43:51 +02:00
cf68b13322 Fix CI 'src/main.rs': No such file or directory 2019-10-20 21:43:51 +02:00
837d0998da Remove unused macros in bin/bat 2019-10-20 21:43:51 +02:00
23d80f9e84 Fix all compile errors in bin/bat
* Change `mod errors` in lib.rs to public

* Add `fn handle_error` in lib.rs errors module
2019-10-20 21:43:51 +02:00
e981bd88c1 Move src/bin/* into src/bin/bat/
This will limit [[bin]] to *bat* only which will make:
- `cargo run` works without specifying --bin
- prevent `cargo build --bins` to produce multiple binaries (app,clap_app,...)
2019-10-20 21:43:51 +02:00
710a1df4ff Fix all compile warnings in lib.rs 2019-10-20 21:43:51 +02:00
cfd33168af Fix all compile errors in lib.rs 🚚
* Move {controller,output,printer,decorations}.rs into src/bin/

* Add `mod errors` from main.rs
2019-10-20 21:43:51 +02:00
eefdb186b8 Add lib.rs 2019-10-20 21:43:51 +02:00
fc0ad4db2e Move {main,app,clap_app}.rs into src/bin/ 2019-10-20 21:43:51 +02:00
f03b45f3e5 Update TOML syntax 2019-10-20 20:48:14 +02:00
9a74bf1a88 Disable nightly build 2019-10-19 18:20:15 +02:00
ff0b331dd6 Add llvm/libclang install instructions. 2019-10-15 21:40:38 +02:00
00bfbbf884 Add section concerning file encodings, see 2019-10-11 21:47:40 +02:00
e44045a71a Add Dracula theme 2019-10-11 20:18:22 +02:00
962abcef80 Update create.sh to quickly check for and update missing submodules 2019-10-10 23:49:39 +02:00
95f2e5bbb7 Ensure submodules are updated before creating asset cache 2019-10-10 23:49:39 +02:00
f46123e149 Add sponsor links as an experiment :-) 2019-10-07 19:43:36 +02:00
f0f77b1673 Add SaltStack SLS syntax 2019-10-06 21:26:46 +02:00
39112e80c3 cmake and libz are not needed to install bat
Closes sharkdp#649
2019-10-06 20:34:14 +02:00
a84c598e2c cmake and libz are not needed to install bat
Closes 
2019-10-06 20:34:14 +02:00
6b2f78ec51 Add MacPorts instructions 2019-09-30 21:21:43 +02:00
938005864f Merge pull request from sharkdp/dependabot/cargo/liquid-0.19.0
Bump liquid from 0.18.2 to 0.19.0
2019-09-30 10:37:13 -07:00
3a5f8ece49 Bump liquid from 0.18.2 to 0.19.0
Bumps [liquid](https://github.com/cobalt-org/liquid-rust) from 0.18.2 to 0.19.0.
- [Release notes](https://github.com/cobalt-org/liquid-rust/releases)
- [Changelog](https://github.com/cobalt-org/liquid-rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cobalt-org/liquid-rust/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 02:17:48 +00:00
047a6f3b85 Merge pull request from eth-p/fix-659
Parameterized documentation.
2019-09-28 18:58:35 -07:00
f09b75dafa Revert changing generated file names based on parameters
It should be handled by a packaging script, not a build script.
2019-09-27 12:34:08 -07:00
54ec2e7bd0 Fix CI before_deploy to use parameterized names 2019-09-27 12:29:22 -07:00
e57b2e9528 Add generated files to gitignore 2019-09-27 12:14:43 -07:00
ea2179b352 Update fish completions to use parameterized names 2019-09-27 12:13:55 -07:00
c8478cedc5 Update manual page to use parameterized names 2019-09-27 12:06:54 -07:00
1692e5fef7 Merge pull request from sharkdp/fix-666
Fix 'bat cache other-arg'
2019-09-27 10:57:01 -07:00
7ba5bc78b7 Update sublimehq/Packages to master 2019-09-23 08:58:56 +02:00
25c2e1725e Bump syntect from 3.2.1 to 3.3.0
Bumps [syntect](https://github.com/trishume/syntect) from 3.2.1 to 3.3.0.
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v3.2.1...v3.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-23 08:14:41 +02:00
853e48e3f3 Allow underscores and dashes in page names to fix highlighting issues with pages such as signal-safety or posix_openpt. 2019-09-22 22:26:58 +02:00
f5d359927a Fix 'bat cache other-arg', closes 2019-09-21 09:10:12 +02:00
4df5973fde Replace 'Printer' by 'needle' 2019-09-21 09:01:54 +02:00
45f3c73331 Extend 'man' integration section 2019-09-21 08:51:26 +02:00
4102175d98 Add '-x' flag for 'col', see , see 2019-09-21 08:44:26 +02:00
30ee2a464f Add eth-p/bat-extras integrations to README 2019-09-21 08:42:56 +02:00
7a5d1f27e7 Fix missing and inconsistent code fences in REAMDE 2019-09-21 08:42:56 +02:00
ac5ff9d454 Bump console from 0.8.0 to 0.9.0
Bumps [console](https://github.com/mitsuhiko/console) from 0.8.0 to 0.9.0.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.8.0...0.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-15 22:10:29 +02:00
c9c3341a38 Use bash syntax highlighting 2019-09-15 15:54:44 +02:00
a736889ef1 add dark mode script 2019-09-15 15:54:44 +02:00
ea5e096705 Bump git2 from 0.10.0 to 0.10.1
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.10.0...git2-curl-0.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-14 09:31:34 +02:00
12330fd154 Add Jinja2 syntax 2019-09-09 20:13:21 +02:00
337ee568b1 Add list of maintainers to README 2019-09-07 08:57:07 +02:00
608cefb05c Bump version 2019-09-03 08:07:42 +02:00
8d0aa39181 Bump ansi_term from 0.12.0 to 0.12.1
Bumps [ansi_term](https://github.com/ogham/rust-ansi-term) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/ogham/rust-ansi-term/releases)
- [Commits](https://github.com/ogham/rust-ansi-term/compare/v0.12.0...v0.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-03 07:21:05 +02:00
5815364206 Add packaging status from repology.org 2019-09-01 11:03:35 +02:00
79f016e15c Update syntaxes 2019-08-31 20:58:16 +02:00
26f9125ebb Re-formulate help text 2019-08-31 20:56:53 +02:00
9814eab13f Suppress warning in -A mode 2019-08-31 20:56:53 +02:00
82ca8804a2 Handle non-unicode characters in the preprocessor 2019-08-31 20:56:53 +02:00
b48b9fcf3b Display binary file content for bat -A 2019-08-31 20:56:53 +02:00
c64ab29739 Update min. required rust version 2019-08-31 14:48:42 +02:00
83dd3fb551 Update man page 2019-08-31 14:47:04 +02:00
ed345f2889 Fix headline 2019-08-31 14:44:11 +02:00
d2492980c0 Update syntaxes and themes 2019-08-31 14:43:20 +02:00
47d5130764 Bump version 2019-08-31 14:43:04 +02:00
4ba45e2ba2 Add first version of 'man page' syntax, closes 2019-08-31 14:32:37 +02:00
7076ae5cd9 Update dependencies 2019-08-31 14:14:08 +02:00
2e71146801 Fix another instance of the 'bat cache' bug, closes 2019-08-31 14:13:36 +02:00
f3824bad17 Add explicit terminal width for test 2019-08-31 13:46:48 +02:00
ec908d5937 Run 'cargo fmt' 2019-08-31 13:46:48 +02:00
3a75d85b80 Add test for 'snip' feature 2019-08-31 13:46:48 +02:00
63d652dab5 Add 'dyn' keyword for trait references 2019-08-31 13:46:48 +02:00
7f2e61d579 Add new style component to separate multiple '--line-range's 2019-08-31 13:46:48 +02:00
e289a2c698 Add short '-L' option as an alias for --list-languages 2019-08-31 13:22:16 +02:00
83a213bae7 Add 'strace' syntax, closes 2019-08-31 13:13:42 +02:00
3967e28ded Add SCSS and Sass syntax, closes 2019-08-31 13:09:38 +02:00
2dc2a3712a Add Verilog syntax, closes 2019-08-31 12:59:02 +02:00
10e0f9efb0 Install fish completions in DEB package, closes 2019-08-28 21:06:52 +02:00
f8ea075e78 Bump console from 0.7.7 to 0.8.0
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.7 to 0.8.0.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.7...0.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 21:44:57 +02:00
c187dce2c2 Bump lazy_static from 1.3.0 to 1.4.0
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.3.0...1.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 07:13:01 +02:00
108c907d69 Bump git2 from 0.9.2 to 0.10.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.9.2 to 0.10.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.9.2...git2-curl-0.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-24 08:47:50 +02:00
187a3b9341 Use consistent syntax for command-line options
closes 
2019-08-15 21:57:32 +02:00
9c2d4f6a51 Add libc6-dev dependency for aarch64 2019-08-10 15:58:13 +02:00
c1126157d4 Re-enable aarch64 builds 2019-08-10 15:58:13 +02:00
dcfa810112 Bump syntect from 3.2.0 to 3.2.1
Bumps [syntect](https://github.com/trishume/syntect) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v3.2.0...v3.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-10 14:06:13 +02:00
f963104006 Add GraphQL sublime syntax submodule 2019-08-10 13:17:02 +02:00
45e1c0ea6f Temporarily disable aarch64 2019-08-02 21:14:44 +02:00
590a1e9a4b Bump minimum supported version to 1.33 2019-08-02 21:00:33 +02:00
8e2c6abb13 Update dependencies 2019-08-02 20:57:16 +02:00
28266ee441 use explicit dyn with Write to appease compiler 2019-08-02 18:50:55 +02:00
21821f1d4c Updated snapshot tests 2019-07-26 06:51:33 +02:00
772ce2e4fe Print a horizontal header line when 'grid' style without 'header' style 2019-07-26 06:51:33 +02:00
35ca1c5191 Bump atty from 0.2.12 to 0.2.13
Bumps [atty](https://github.com/softprops/atty) from 0.2.12 to 0.2.13.
- [Release notes](https://github.com/softprops/atty/releases)
- [Changelog](https://github.com/softprops/atty/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/atty/compare/0.2.12...0.2.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-25 21:34:19 +02:00
0cc60a1519 Bump wild from 2.0.1 to 2.0.2
Bumps [wild](https://gitlab.com/kornelski/wild) from 2.0.1 to 2.0.2.
- [Release notes](https://gitlab.com/kornelski/wild/tags)
- [Commits](https://gitlab.com/kornelski/wild/commits/master)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-24 21:50:05 +02:00
ee6659dacf Bump ansi_term from 0.11.0 to 0.12.0
Bumps [ansi_term](https://github.com/ogham/rust-ansi-term) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/ogham/rust-ansi-term/releases)
- [Commits](https://github.com/ogham/rust-ansi-term/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-24 21:45:44 +02:00
76c615a304 Allow leading minus in '--terminal-width <value>'
closes 
2019-07-24 21:44:25 +02:00
e8c04672f0 Small improvements for Fedora instructions
Anything older than F29 is EOL now, so no need to mention it. Also in F29+ you can use standard `dnf install`.
2019-07-24 21:38:11 +02:00
7f5a5612e4 Bump atty from 0.2.11 to 0.2.12
Bumps [atty](https://github.com/softprops/atty) from 0.2.11 to 0.2.12.
- [Release notes](https://github.com/softprops/atty/releases)
- [Changelog](https://github.com/softprops/atty/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/atty/compare/0.2.11...0.2.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-12 07:15:42 +02:00
eee5d424bb [Security] Bump smallvec from 0.6.9 to 0.6.10
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 0.6.9 to 0.6.10. **This update includes security fixes.**
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-07 15:34:01 +02:00
e5311e4b30 Bump console from 0.7.6 to 0.7.7
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.6 to 0.7.7.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.6...0.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-05 14:34:15 +02:00
a1b9334a44 Bump console from 0.7.5 to 0.7.6
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.5 to 0.7.6.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.5...0.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-20 10:04:08 +02:00
d86b7cf7e0 Add Alpine Linux installation instructions
Resolves 
2019-06-11 07:40:23 +02:00
67834da681 Bump git2 from 0.9.0 to 0.9.1
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/0.9.0...0.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-10 11:15:51 +02:00
dcdf8dfaa7 Add install instructions(ja) for Gentoo Users. 2019-06-09 17:50:18 +02:00
9a44fa11c0 Add install instructions for Gentoo Users. 2019-06-09 17:50:18 +02:00
4ee0b2e16d Merge branch 'issmirnov-ssh-config' 2019-06-07 08:17:17 +02:00
518997135e Merge branch 'ssh-config' of https://github.com/issmirnov/bat into issmirnov-ssh-config 2019-06-07 08:17:04 +02:00
69fc1caead Add support for "etc/hosts" files.
- Syntax author: https://github.com/brandonwamboldt/sublime-hosts

Since the upstream version only has a tmLanguage, added a sublime-syntax
file manually.
2019-06-07 08:02:38 +02:00
175dd4c290 Add SSH config syntax
Tested:
```
bash assets/create.sh
cargo build
target/debug/bat --language ssh_config ~/.ssh/config
```
2019-06-06 20:01:23 -07:00
e9210c0f6c Bump git2 from 0.8.0 to 0.9.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.8.0 to 0.9.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.8.0...0.9.0)
2019-06-05 07:17:09 +02:00
3795acbd17 Add '.env' (DotENV) syntax 2019-05-31 21:05:34 +02:00
c7d08cfcfd Add 'requirements.txt' syntax 2019-05-31 20:58:08 +02:00
8ec96da9f0 Bump dirs from 2.0.0 to 2.0.1
Bumps [dirs](https://github.com/soc/dirs-rs) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/soc/dirs-rs/releases)
- [Commits](https://github.com/soc/dirs-rs/commits)
2019-05-31 08:57:04 +02:00
c9d7e3652b Enforce the creation of the full cache dir path
Fixes 
2019-05-30 22:28:52 +02:00
dfa024f9e6 Add Org mode syntax, closes sharkdp#36 2019-05-29 19:52:06 +02:00
b2757cb461 Bump dirs from 1.0.5 to 2.0.0
Bumps [dirs](https://github.com/soc/dirs-rs) from 1.0.5 to 2.0.0.
- [Release notes](https://github.com/soc/dirs-rs/releases)
- [Commits](https://github.com/soc/dirs-rs/commits)
2019-05-28 21:32:57 +02:00
416a0fd439 Fix autocompletion-path 2019-05-15 23:24:37 +02:00
9b1b3dda14 Only print the header for empty files
Instead of printing
```
───────┬─────────────────────────────────────────────────────────
       │ File: some-file
───────┼─────────────────────────────────────────────────────────
───────┴─────────────────────────────────────────────────────────
```
for empty files, bat will now print
```
───────┬─────────────────────────────────────────────────────────
       │ File: some-file   <EMPTY>
───────┴─────────────────────────────────────────────────────────
```
2019-05-15 22:37:03 +02:00
ae7db313a6 Update man page 2019-05-15 22:14:40 +02:00
3c4384990d Update syntaxes and themes 2019-05-15 22:12:02 +02:00
260814c377 Bump version to 0.11 2019-05-15 22:07:35 +02:00
3675a82a1b Update dependencies 2019-05-15 22:06:28 +02:00
5b2b594919 Revert "Run 'cargo fmt'" (outdated rustfmt)
This reverts commit dd40f7545d.
2019-05-15 08:07:08 +02:00
9d53ce6be6 Fix warning 2019-05-14 23:42:23 +02:00
51e05499a9 Update dependencies 2019-05-14 23:40:21 +02:00
dd40f7545d Run 'cargo fmt' 2019-05-14 23:40:07 +02:00
c709bf2103 Print a warning message instead of just '<BINARY>' 2019-05-14 23:35:22 +02:00
f37dbb80a8 Added printing of "<BINARY>" for binary files in the interactive mode if header decorations are turned off 2019-05-14 23:35:22 +02:00
0a1e08da96 Extend help text for --terminal-width and --wrap, closes 2019-05-14 23:24:13 +02:00
06b8dcb7eb Update fish completions for new --list-languages format 2019-05-14 22:50:42 +02:00
493a4e719e Added non-interactive mode for --list-languages
This makes scripting it a lot easier and less hacky.
2019-05-14 22:50:42 +02:00
27e0ca98d9 Remove language completions for config files 2019-05-14 22:50:42 +02:00
1b2066c5f2 Add fish shell argument completions for --language option 2019-05-14 22:50:42 +02:00
4ec3cdb5b8 Bump error-chain from 0.12.0 to 0.12.1
Bumps [error-chain](https://github.com/rust-lang-nursery/error-chain) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/rust-lang-nursery/error-chain/releases)
- [Changelog](https://github.com/rust-lang-nursery/error-chain/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang-nursery/error-chain/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-13 18:32:28 +02:00
72152296c7 Fix accidental printing of files named 'cache'
This also adds two regression tests, so this will hopefully not pop up
again.

closes 
2019-05-10 17:55:46 -05:00
2b9d25df05 Replace iterator with string starts_with and ends_with 2019-05-10 17:52:35 -05:00
cc8186103b Reformatted with cargo fmt. 2019-05-10 17:52:35 -05:00
0ad09df7ab Improved logic when encountering ANSI in character wrap mode
Fixes 
2019-05-10 17:52:35 -05:00
7ef0fe091d Cleaned up terminal-width validation even more 2019-05-10 17:50:58 -05:00
89fcbb2b15 Cleaned up terminal-width validation slightly 2019-05-10 17:50:58 -05:00
a7e2bb86cb Add validation for --terminal-width option 2019-05-10 17:50:58 -05:00
1ce0bc8e0d Slightly modified help text 2019-05-10 11:04:46 -05:00
fde00eec98 Add -pp for plain styling and no pager 2019-05-10 11:01:02 -05:00
bb6594e691 Add 3 new themes: ansi-light, ansi-dark, base16
Also, interpret transparent colors (#RRGGBB00) as specifying a terminal
color palette number with RR. The three new themes use this.
2019-05-08 07:35:43 -05:00
e7c5561df7 Update Chocolatey package name to bat 2019-04-25 17:58:15 +02:00
0aabbc03d7 Add Chocolatey package instructions 2019-04-25 17:58:15 +02:00
8a5b59febc Updated manual to include -H, --highlight-line <N> 2019-04-25 17:57:01 +02:00
7afdd44c43 cache/misc: be more cautious with bash 2019-04-25 17:52:21 +02:00
d72549a873 add fish shell syntax definition 2019-04-25 17:52:21 +02:00
1ba8540e5f Updated packaging script to include manual fish shell completions 2019-04-13 10:59:22 +02:00
a6cee4da67 Removed completions file accidentaly left in root dir 2019-04-13 10:59:22 +02:00
cd6850947e Updated fish completions to include parameter completion for available themes, added cache subcommand completions 2019-04-13 10:59:22 +02:00
14bfedeb20 Updated fish completions to include parameter completion for flags: color, italic-text, decorations, paging, wrap 2019-04-13 10:59:22 +02:00
8fe65252f7 WIP: added manual minimal fish shell completions for current flags. Does not include flag sub-options like language lists or subcommands 2019-04-13 10:59:22 +02:00
5e9351445f WIP: added manual minimal fish shell completions for current flags. Does not include flag sub-options like language lists or subcommands 2019-04-13 10:59:22 +02:00
2fdfb8de40 Bump escargot from 0.4.0 to 0.5.0
Bumps [escargot](https://github.com/crate-ci/escargot) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/crate-ci/escargot/releases)
- [Changelog](https://github.com/crate-ci/escargot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crate-ci/escargot/compare/v0.4.0...v0.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-09 21:48:33 +02:00
f8c759edff Bump clap from 2.32.0 to 2.33.0
Bumps [clap](https://github.com/clap-rs/clap) from 2.32.0 to 2.33.0.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-08 13:00:03 +02:00
e34431f922 Bump assert_cmd from 0.11.0 to 0.11.1
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 0.11.0 to 0.11.1.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.11.0...v0.11.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-04 21:11:46 +02:00
c96927b550 Update F# syntax 2019-04-04 21:11:19 +02:00
921cc0d1cb Add copyright file on Debian package 2019-03-17 18:59:28 +01:00
dbc49e534a Bump syntect from 3.1.0 to 3.2.0
Bumps [syntect](https://github.com/trishume/syntect) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v3.1.0...v3.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-03-11 06:37:16 +01:00
7755ed79e0 Delete .DS_Store 2019-03-11 06:35:21 +01:00
50aabf331d Updated minimum version of Rust 2019-03-09 07:43:41 +01:00
f259ff2920 Formatted code 2019-03-09 07:43:41 +01:00
82f14121bd Applied linter fixes 2019-03-09 07:43:41 +01:00
a21ae614e6 Migrated to Rust 2018 2019-03-09 07:43:41 +01:00
b94c94e845 Bump lazy_static from 1.2.0 to 1.3.0
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.2.0...1.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-03-08 21:45:42 +01:00
161d107ec3 Bump dirs from 1.0.4 to 1.0.5
Bumps [dirs](https://github.com/soc/dirs-rs) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/soc/dirs-rs/releases)
- [Commits](https://github.com/soc/dirs-rs/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-03-05 22:31:16 +01:00
ecf147fd96 Bump syntect from 3.0.2 to 3.1.0
Bumps [syntect](https://github.com/trishume/syntect) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v3.0.2...v3.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-25 07:03:17 +01:00
f0771d6532 Do not replace arguments to pager when --pager is used, closes 2019-02-18 20:28:44 +01:00
d8f28c177a Make fd link actually link to fd 2019-02-17 09:19:42 +01:00
fbee9df719 Add "git show" section 2019-02-11 22:04:22 +01:00
6e9ca7d6dc Add "xclip" section 2019-02-11 22:01:03 +01:00
a9ec5c063a Add documentation about "tail -f" 2019-02-11 21:54:16 +01:00
8470fd7173 Add "Integration with other tools" section 2019-02-11 21:38:18 +01:00
76b7418e35 Only print contents if file wasn't empty, or EOF wasn't first thing received from stdin. 2019-02-11 20:33:16 +01:00
10c5f79640 Revert "Check result of read_until, and return Error if 0, which indicates EOF was found before delimeter."
This reverts commit 61e888de7f.
2019-02-11 20:33:16 +01:00
9e11d66979 Handle UTF-16 encoding errors with replacement characters 2019-02-10 10:18:07 +01:00
fa3244f7c1 Add test for UTF-16LE encoding 2019-02-10 10:18:07 +01:00
906774e6d3 Integration tests for single-line files 2019-02-10 10:18:07 +01:00
cec9cc073c Add integration tests running bat with empty input files. 2019-02-08 23:30:33 +01:00
a16789a060 Update alternatives.md 2019-02-07 23:52:31 +01:00
e09499b3df Move config-dir and cache-dir from 'bat cache' to 'bat' 2019-02-07 23:27:53 +01:00
cff01d81fa Rename 'bat cache --init' to 'bat cache --build' 2019-02-07 23:27:53 +01:00
31608c9a03 Update syntaxes 2019-02-07 23:01:06 +01:00
357ce84c56 Bump version to 0.10 2019-02-07 23:00:40 +01:00
3a5c52641b Update assets/syntaxes/Packages 2019-02-07 22:53:18 +01:00
6e8fca5bb2 Replace less command line arguments only for PAGER 2019-02-07 22:37:33 +01:00
63c77383ce Ignore flags from PAGER env var if the program is 'less' 2019-02-07 22:37:33 +01:00
4df22e617f Update documentation 2019-02-07 22:19:32 +01:00
6473e8c1be Remove import 2019-02-07 22:19:32 +01:00
972a764a74 Simplify Optional handling 2019-02-07 22:19:32 +01:00
54143d1403 Add --cache-dir option 2019-02-07 22:19:32 +01:00
6523bbf62f Replace 'is_absolute_path' with map and filter 2019-02-07 22:19:32 +01:00
05e2c2c66b removed compile errors and warnings on non-macs 2019-02-07 22:19:32 +01:00
69227222b5 config and cache now check XDG env vars first
`XDG_CACHE_HOME` and `XDG_CONFIG_HOME` are checked first and fall-back
to `~/.cache/` and `~/.config/`.
2019-02-07 22:19:32 +01:00
49af3e854b Set cache_dir on MacOS to ~/.cache/bat/ 2019-02-07 22:19:32 +01:00
6a8e4757b7 Updated bat config dir for MacOs
Removed directories crate and using dirs_rs
Changed bat config file and cache dir on MacOs:
config: ~/.config/bat/config
cache: ~/.config/bat/cache/
2019-02-07 22:19:32 +01:00
91deef8b13 add varlink syntax
Varlink is an interface description format and protocol that aims
to make services accessible to both humans and machines in the
simplest feasible way.

See: https://varlink.org/ and https://github.com/varlink/ for
more information
2019-02-07 07:40:22 +01:00
61e888de7f Check result of read_until, and return Error if 0, which indicates EOF was found before delimeter. 2019-02-07 07:32:28 +01:00
f3f9f10f05 Add Jsonnet (*.jsonnet) syntax
Jsonnet: https://jsonnet.org/
sublime-syntax: https://github.com/gburiola/sublime-jsonnet-syntax
2019-02-04 23:28:39 +01:00
29ffa2a832 add Fedora instructions 2019-02-03 12:58:04 +01:00
42a873fdb8 update README-ja.md 2019-02-03 12:58:04 +01:00
82f048aedb Bump assert_cmd from 0.10.2 to 0.11.0
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 0.10.2 to 0.11.0.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.10.2...v0.11.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-29 08:13:31 +01:00
ae08785ec8 Add Terraform syntax 2019-01-28 20:09:56 +01:00
a500629359 Completely disable generation of shell completion files 2019-01-26 19:11:54 +01:00
724a5fac99 Fix Fedora instructions in README
Correct instructions regarding Fedora Modular repos.
2019-01-26 19:11:37 +01:00
c483e49b92 Consistent naming for submodules 2019-01-20 10:22:35 +01:00
94c9b40694 Protobuf-syntax and ProtobufText syntax () 2019-01-20 10:20:53 +01:00
0c9dc3b257 Bump console from 0.7.3 to 0.7.5
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.3 to 0.7.5.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.3...0.7.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-18 07:25:29 +01:00
3b5174bb1d Add syslog-syntax 2019-01-18 07:24:46 +01:00
3324505383 Update README.md 2019-01-16 20:04:46 +01:00
de7872f8a8 Bump console from 0.7.2 to 0.7.3
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.2 to 0.7.3.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.2...0.7.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-14 09:12:12 +01:00
abf0229741 Bump escargot from 0.3.1 to 0.4.0
Bumps [escargot](https://github.com/crate-ci/escargot) from 0.3.1 to 0.4.0.
- [Release notes](https://github.com/crate-ci/escargot/releases)
- [Changelog](https://github.com/crate-ci/escargot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crate-ci/escargot/compare/v0.3.1...v0.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-01 12:32:25 +01:00
e04bccd12d Bump console from 0.7.1 to 0.7.2
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-24 08:41:06 +01:00
668c8a6703 Merge pull request from sharkdp/line-highlight
Line highlight
2018-12-18 09:06:28 +01:00
bd68684537 Fix the number of values to one 2018-12-16 22:35:22 +01:00
c2847f6a9f Short options for line-range and highlight-line 2018-12-16 22:17:39 +01:00
cf7ed042c1 Colorize the whole line 2018-12-16 21:53:15 +01:00
6b92814ea0 Allow for multiple highlighted lines 2018-12-16 21:00:18 +01:00
a236a9b195 Merge branch 'master' of https://github.com/tskinn/bat into tskinn-master 2018-12-16 20:43:36 +01:00
b68c5d8576 Bump minimum required Rust version to 1.30 2018-12-14 23:34:13 +01:00
fee57d71d9 Print ANSI-reset code before newline
fixes 
2018-12-14 23:34:13 +01:00
5d3205acc0 Add x86_64 Assembly manually 2018-12-14 23:07:11 +01:00
4e6816abd6 Remove problematic 'Assembly (x86_64)' submodule 2018-12-14 23:07:11 +01:00
72e8036edc Bump git2 from 0.7.5 to 0.8.0
Bumps [git2](https://github.com/alexcrichton/git2-rs) from 0.7.5 to 0.8.0.
- [Release notes](https://github.com/alexcrichton/git2-rs/releases)
- [Commits](https://github.com/alexcrichton/git2-rs/compare/libgit2-sys-0.7.5...git2-curl-0.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-14 22:55:25 +01:00
397def1320 Omit launching of pager if NO file exists
closes 
2018-12-14 22:53:31 +01:00
d2d29180a7 Add ARM assembly 2018-12-14 22:52:57 +01:00
2f263c9fbf Add x86_64 assembly 2018-12-14 22:46:50 +01:00
4ff360669f add quotes around filename
and make it more concise by using map_err
2018-12-11 22:24:52 +01:00
549e5d7355 Report filename if File::open return Err
From issue 
2018-12-11 22:24:52 +01:00
dd48d29c28 Add AsciiDoc syntax. 2018-12-11 21:12:29 +01:00
98ee5f7400 Add vimpager to alternatives, closes 2018-12-07 20:28:47 +01:00
638c04c13e Bump console from 0.7.0 to 0.7.1
Bumps [console](https://github.com/mitsuhiko/console) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.7.0...0.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-03 07:04:34 +01:00
b1c865acaa Update README.md 2018-12-02 22:02:39 +01:00
d3d795ffb2 Removed confusing variable from examples in README.md
Removed confusing the variable `BAT_CONFIG_DIR` from examples because it
 is not a real configuration option for bat.
2018-12-02 20:19:12 +01:00
0571c51487 Add copyright notice in MIT license 2018-12-02 18:35:29 +01:00
348c9f3562 Enhance SyntaxMapping with impl Trait 2018-11-27 20:36:23 +01:00
6b6a8f8e16 Fix doc comment typo 2018-11-27 20:34:32 +01:00
6aa002850c Correct typo in readme 2018-11-26 20:11:25 +01:00
49c22c8d39 Bump console from 0.6.2 to 0.7.0
Bumps [console](https://github.com/mitsuhiko/console) from 0.6.2 to 0.7.0.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/compare/0.6.2...0.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-23 08:04:46 +01:00
673caf6b59 Bump assert_cmd from 0.10.1 to 0.10.2
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 0.10.1 to 0.10.2.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.10.1...v0.10.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-21 19:11:22 +01:00
e6ffab3cb4 Update assets/README.md 2018-11-19 18:48:36 +01:00
4e43f8fa74 Highlight XDG desktop entry as .ini file
Reference: https://standards.freedesktop.org/desktop-entry-spec/latest/
2018-11-19 18:48:36 +01:00
bac1b16885 Consistent spelling of "color" 2018-11-18 12:11:07 +01:00
778a4929a8 Add twig support 2018-11-18 11:58:05 +01:00
5c22dd4248 add close tag 2018-11-15 08:53:03 +01:00
214cd0f8ea add link to original README 2018-11-15 08:53:03 +01:00
9fd61fcb6d add table of contents 2018-11-15 08:53:03 +01:00
edf1d3b256 modify url 2018-11-15 08:53:03 +01:00
eca47b2a28 translate Project goals, alternatives 2018-11-15 08:53:03 +01:00
62424e70d7 translate Customization 2018-11-15 08:53:03 +01:00
4791f15222 translate Installation 2018-11-15 08:53:03 +01:00
159f234b78 translate Key Features & How to Use 2018-11-15 08:53:03 +01:00
3ec96127f2 translate table of contents 2018-11-15 08:53:03 +01:00
a9acb2711b copy README.md (NOT translate yet) 2018-11-15 08:53:03 +01:00
a3182e68e4 Update .gitattributes 2018-11-12 21:49:19 +01:00
0691b18231 Add assets/.gitattributes 2018-11-11 14:50:59 +01:00
c711cd1b2e Update .gitattributes 2018-11-11 14:50:05 +01:00
14e6b41a5f Add .gitattributes 2018-11-11 14:49:24 +01:00
532af6556d Use Rust inclusive range (stable in 1.26) 2018-11-11 14:42:22 +01:00
26717b0cd2 Update README.md 2018-11-11 14:39:04 +01:00
1f177f0a1c Update README.md 2018-11-11 14:35:08 +01:00
54c81fa543 Update README.md 2018-11-11 14:32:59 +01:00
34dee9e3aa Updates for README 2018-11-11 14:28:18 +01:00
c073d4a118 Add new image 2018-11-11 13:19:34 +01:00
e79c5516bf Bump version, update assets 2018-11-11 12:55:38 +01:00
4776c2a575 Update man page 2018-11-11 12:31:28 +01:00
f98a96c1ed Update help text 2018-11-11 12:26:39 +01:00
8a3446d219 Update dependencies 2018-11-11 12:17:58 +01:00
5d5bf616ca Update README.md 2018-11-11 12:17:15 +01:00
b68c038db8 Update link to new issue 2018-11-11 11:08:08 +01:00
1117d2f9cb Bump syntect from 3.0.1 to 3.0.2
Bumps [syntect](https://github.com/trishume/syntect) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-11 11:08:08 +01:00
d0ba5bcb32 Wording 2018-11-11 11:07:55 +01:00
f8d39d5624 Resolving requested changes 2018-11-11 11:07:55 +01:00
9998e2eac6 Initial commit of updated README for config file formatting 2018-11-11 11:07:55 +01:00
7cac07d845 issue : Handle cases like PAGER=/usr/bin/bat 2018-11-06 19:53:32 +01:00
148caa1381 Fix code style 2018-11-06 19:35:41 +01:00
ab27cac0cc Remove args when change from bat to less 2018-11-06 19:35:41 +01:00
01fcbf2183 Better placement of bat detection 2018-11-06 19:35:41 +01:00
8a0c30b385 Avoid endless bat executions with PAGER="bat"
From issue 
2018-11-06 19:35:41 +01:00
bc21c4d0e0 Add openSUSE installation instructions 2018-11-06 19:21:33 +01:00
0800562ba2 Bump content_inspector from 0.2.3 to 0.2.4
Bumps [content_inspector](https://github.com/sharkdp/content_inspector) from 0.2.3 to 0.2.4.
- [Release notes](https://github.com/sharkdp/content_inspector/releases)
- [Commits](https://github.com/sharkdp/content_inspector/compare/v0.2.3...v0.2.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-05 19:37:58 +01:00
1f9befbcd1 Update SHA1 in TOML submodule 2018-11-05 19:37:23 +01:00
a5c779c518 Update path to TOML syntax remote 2018-11-05 19:23:44 +01:00
f37f100352 Bump lazy_static from 1.1.0 to 1.2.0
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.1.0...1.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-05 07:22:39 +01:00
18d1a3b973 Changed italics to use-italic-text in config
Better placing of italics in help and also added long_help for it
2018-11-04 19:40:05 +01:00
dc10246bd2 Linting 2018-11-04 19:40:05 +01:00
44bdae0212 Linting 2018-11-04 19:40:05 +01:00
1ece38a4c4 Changed flag name 2018-11-04 19:40:05 +01:00
e90308e1f8 italics enable|disable working 2018-11-04 19:40:05 +01:00
d702d6740c Added args 2018-11-04 19:40:05 +01:00
c6a526f99c Run 'cargo run' only once 2018-11-04 12:24:56 +01:00
278d841408 Move '--paging' arg to config file. 2018-11-04 11:19:49 +01:00
5f576f1ecf Remove all relevant environment variables during testing 2018-11-04 11:19:49 +01:00
48c6ea6b25 Simplify integration test setup 2018-11-04 11:19:49 +01:00
558134f6c8 Changed to unwrap methods, added integration tests 2018-11-04 11:19:49 +01:00
1dd57e6d7e Ran rust fmt 2018-11-04 11:19:49 +01:00
20ba84d1fa Added in environment variable and the result is a file check in config.rs 2018-11-04 11:19:49 +01:00
e81f9b23e6 Fix --show-all for UTF-16 encoding 2018-11-01 22:00:47 +01:00
50dc4a79b0 Display line-feed as instead of 2018-11-01 22:00:47 +01:00
8fa8f44706 Use character if tab-width == 1. 2018-11-01 22:00:47 +01:00
ecd862d9ff Feature: Highlight non-printable characters
Adds a new `-A`/`--show-all` option (in analogy to GNU Linux `cat`s option) that
highlights non-printable characters like space, tab or newline.

This works in two steps:
- **Preprocessing**: replace space by `•`, replace tab by `├──┤`, replace
newline by `␤`, etc.
- **Highlighting**: Use a newly written Sublime syntax to highlight
these special symbols.

Note: This feature is not technically a drop-in replacement for GNU `cat`s
`--show-all` but it has the same purpose.
2018-11-01 22:00:47 +01:00
cbed338c3a Remove generation code for tabs_ tests 2018-11-01 15:30:58 +01:00
4492d99556 Change default tab width to 4 2018-11-01 15:30:58 +01:00
d96ee2261f Remove tab-related text 2018-11-01 15:30:58 +01:00
dda27b253b Allow offset values in --terminal-width
Allows the `width` argument to `--terminal-width` to be an offset
instead of an absolute number. Examples:

    --terminal-width=80   # Set output width to 80 characters
    --terminal-width=-2   # Set output width to actual_width - 2

closes 
2018-10-31 22:21:22 +01:00
78f26d0caf Temporarily disable shipping of shell completions
closes 
2018-10-31 22:03:05 +01:00
abcd09f869 Remove commented-out code 2018-10-21 22:52:26 +02:00
41a5ff039b Only use the last argument of {style,plain,number} 2018-10-21 22:52:26 +02:00
155bad3862 Rustfmt 2018-10-21 22:52:26 +02:00
7c98a1c901 When specifying style multiple times the last occurence wins
Closes: 
2018-10-21 22:52:26 +02:00
c1246fcd53 Update help text 2018-10-21 22:42:11 +02:00
9f401ea122 Update docstring 2018-10-21 22:42:11 +02:00
9c782fb692 Fix format error 2018-10-21 22:42:11 +02:00
154186a58d Add --pager option 2018-10-21 22:42:11 +02:00
b22a9f8fe3 Update README.md 2018-10-20 14:56:25 +02:00
5219c40ed8 PAGER: Wrapper script is not needed anymore 2018-10-20 14:54:44 +02:00
a25ee0e6fd Add sublime-snazzy theme 2018-10-20 11:32:25 +02:00
496e0bc046 Allow for multiple line ranges
See 
2018-10-20 10:44:13 +02:00
7082fd09f0 Modify TravisCI caching policy 2018-10-19 23:06:25 +02:00
857cc215b4 Move link to header line 2018-10-19 22:00:05 +02:00
481268f018 Doc: add Chinese readme link
2018-10-19 22:00:05 +02:00
f7d9f49503 Remove leftovers from tab-tests 2018-10-19 21:57:35 +02:00
88fcfd76aa cargo fmt 2018-10-19 21:04:46 +02:00
76e34b29ec Avoid empty line in snapshot 2018-10-19 21:04:46 +02:00
01984e1d02 Test 'tabs' with 'numbers' 2018-10-19 21:04:46 +02:00
536390509f remove --wrap for now 2018-10-19 21:04:46 +02:00
58198d0700 rewrite 6 snapshot tests as integration test 2018-10-19 21:04:46 +02:00
afc5aacb28 Move tabs_* snapshot tests to integration_tests 2018-10-19 21:04:46 +02:00
30b742e984 --map-syntax takes just one value 2018-10-17 23:27:44 +02:00
671deeef8c Update help text 2018-10-17 23:17:28 +02:00
a892caeb33 Bump bat version to 0.8 2018-10-17 23:15:59 +02:00
a770cbf25e Update assets 2018-10-17 23:14:07 +02:00
931c6e9414 Update man page 2018-10-17 23:13:50 +02:00
8dc7e2efa3 Add --config-file option 2018-10-17 23:08:37 +02:00
10965a6122 Implement syntax mapping
This adds a `-m`/`--map-syntax` option that allows users to (re)map
certain file extensions or file names to an existing syntax.

For example:
```
bat --map-syntax .config:json
```

The option can be use multiple times. Note that you can easily make
these mappings permanent by using `bat`s new configuration file.

closes 
2018-10-17 23:08:19 +02:00
e43d97dc15 Small cleanup 2018-10-17 21:12:23 +02:00
2c7087b8de Add integration tests for pager handling 2018-10-17 21:08:32 +02:00
bb1f5aa841 Add proper handling of empty PAGER variables 2018-10-17 21:08:32 +02:00
2109a7830b Add error handling for parsing errors 2018-10-17 21:08:32 +02:00
ec27c78a8a Remove duplicate 'extern crate' 2018-10-17 21:08:32 +02:00
67fe833bc8 Add arguments from PAGER/BAT_PAGER
Solves 

Signed-off-by: Morten Linderud <morten@linderud.pw>
2018-10-17 21:08:32 +02:00
e956225b4d Update syntect to 3.0.1
closes 
2018-10-16 23:06:46 +02:00
314ec881ef Bump Rust version 2018-10-16 22:09:15 +02:00
25a6a55437 Revert "Fix for older version of Rust"
This reverts commit c530fadc44.
2018-10-16 22:09:15 +02:00
5bff4548be Add BAT_OPTS environment variable 2018-10-16 22:09:15 +02:00
866b9e16a8 Add error handling 2018-10-16 22:09:15 +02:00
5af176c94f Move transpose to util module 2018-10-16 22:09:15 +02:00
9e7da05459 Fix for older version of Rust 2018-10-16 22:09:15 +02:00
1ae02c65fb Fix include 2018-10-16 22:09:15 +02:00
495e7fd3b1 Add --no-config option 2018-10-16 22:09:15 +02:00
b48f0fe389 Fix tests 2018-10-16 22:09:15 +02:00
c19c704a43 Add more tests 2018-10-16 22:09:15 +02:00
693bd5929d Add possibility for spaces on a single line 2018-10-16 22:09:15 +02:00
8275b0436d Add simple configuration file
This allows users to create simple configuration file
(`~/.config/bat/config` on Linux) that has the following format:

    ```bash
    --flag1
    --flag2
    --option1=value1
    # lines beginning with '#' are ignored
    --option2=value2
    # empty lines and trailing whitespace are also ignored

    --option3=value3
    ```
2018-10-16 22:09:15 +02:00
278bde5cee Continue with output after "is directory"-error 2018-10-11 21:54:19 +02:00
eee7e5a575 Removes duplicate explanation. 2018-10-11 20:58:44 +02:00
ad7b634ee6 Fixes - adds info for light backgrounds. 2018-10-11 20:58:44 +02:00
1310f83c8d Update Docker alias for bat 2018-10-11 20:57:46 +02:00
897b9e7030 Add Docker instructions, closes 2018-10-11 20:05:17 +02:00
1891e194b5 Add simple integration tests 2018-10-11 07:06:13 +02:00
cea05e9f22 be consistent 2018-10-10 22:19:40 -06:00
d2d01b9fe8 Always remove the local cache when creating new assets 2018-10-10 21:49:03 +02:00
2a7851530d Fix formatting 2018-10-10 20:45:10 +02:00
1a6709c2cb add line highlight 2018-10-09 22:25:33 -06:00
5842d58c01 Updates for syntect 3.0 2018-10-09 22:04:51 +02:00
e3c71adba7 syntax: Add robot framework support 2018-10-09 20:27:01 +02:00
504f28b3a1 Documented nix availability 2018-10-09 20:07:27 +02:00
d977ba9194 Update dependencies 2018-10-08 22:33:09 +02:00
9c09799e1f misc: add exec bit for create.sh 2018-10-08 20:20:05 +02:00
d83c93c805 Update README.md 2018-10-07 18:39:52 +02:00
fc8fd1e63f cargo fmt 2018-10-07 17:49:38 +02:00
404d6a4a81 Update content_inspector version 2018-10-07 17:49:38 +02:00
25d96da4a2 Add support for UTF-16LE and UTF-16BE 2018-10-07 17:49:38 +02:00
e97095b724 Use first-line detection for STDIN 2018-10-07 15:34:37 +02:00
ce96df00b6 Do not display binary files in interactive mode
closes 
2018-10-07 15:34:37 +02:00
f98fc5f06a Simplify access to first line 2018-10-07 15:34:37 +02:00
1dbb4ef683 Update minimum Rust version to 1.27 2018-10-07 15:34:37 +02:00
0502a3bd4a Add first-line detection for all input types
closes 
2018-10-07 15:34:37 +02:00
869cf6368c Add possibility to get first line 2018-10-07 15:34:37 +02:00
078228deac Add unit test for InputFileReader 2018-10-07 15:34:37 +02:00
e09d7dabb8 Move snapshot tests into separate module 2018-10-07 15:34:37 +02:00
6d1cc8c2c8 Move read_line functionality to inputfile module 2018-10-07 15:34:37 +02:00
87f021078e Use dyn Trait for trait objects 2018-10-07 15:34:37 +02:00
d5b0502419 Move get_reader into inputfile module 2018-10-07 15:34:37 +02:00
860f3e9006 Move InputFile to separate module 2018-10-07 15:34:37 +02:00
1be346a038 Add 'plain' version of bat to the benchmarks 2018-10-07 10:57:08 +02:00
f9fd5e4851 Simplify -h help text 2018-10-07 10:43:39 +02:00
da09f3877b Remove unnecessary scope 2018-10-07 10:09:10 +02:00
e30e1bab2e Move theme-preview section into own paragraph 2018-10-06 21:12:12 +02:00
f140f6da46 Fixes - describes 'musl' builds. 2018-10-06 21:07:01 +02:00
3446fdf5f2 Document how to rapidly preview theme on a file 2018-10-06 21:06:31 +02:00
e1345cdc2a Update VimL syntax 2018-10-05 18:44:51 +02:00
a2676ccc55 Workaround for 2018-10-04 11:09:41 +02:00
b39e28d2c8 Add support for wildcards in Windows CMD ()
Windows does not support wildcard expansion in cmd, this adds 'wild' crate (as discussed in ) that handles everything transparently, so wildcards work everywhere.

Fixes 
2018-10-03 22:59:11 +02:00
0d71968615 Generate shell completions with clap during build ()
* Generate shell completions with clap during build

* Updated ci release script, added SHELL_COMPLETIONS_DIR override to build.rs and fixed dependency version
2018-10-03 09:39:30 +02:00
80da0dc619 run cargo fmt 2018-09-26 19:16:03 +02:00
64903bb858 Typo 2018-09-26 19:13:32 +02:00
3456ce1187 Add a small tutorial 2018-09-26 18:08:24 +02:00
886a5b3d24 Document the situation with less and scrolling
closes 
closes 
2018-09-26 18:03:46 +02:00
238482e5f3 Update syntax-set, fixes 2018-09-23 10:30:19 +02:00
79b960e17e Use ansi_colours package for better true-colour approximation 2018-09-23 10:19:19 +02:00
6aa626f1c4 Document INI syntax modifications 2018-09-22 11:23:29 +02:00
1b30539493 Added Mercurial's hgrc-files to the list of INI-extensions 2018-09-22 11:23:29 +02:00
96b24d8a7e Fix typos 2018-09-20 19:16:51 +02:00
20b02e72b3 Disable wrapping when --style is plain
closes 
2018-09-18 21:31:56 +02:00
254efac9c2 Added section to README on using Cygwin. 2018-09-14 18:30:43 +02:00
dcec322117 Update README (libz-dev may be required)
On Ubuntu 18.04 I had to install `cmake` as well as `libz-dev` to get
bat to compile.
2018-09-14 14:12:44 +02:00
d781156327 Adds ansible install instructions for ansible to readme 2018-09-12 23:06:33 +02:00
732750c274 Bump version 2018-09-12 22:03:48 +02:00
6b6baa3118 Update dependencies 2018-09-12 22:01:27 +02:00
54c434934e Bump version, update assets 2018-09-12 22:01:01 +02:00
ad6e0a2581 Update man page 2018-09-12 22:00:28 +02:00
bd619db3ca Mention BAT_STYLE in README.md 2018-09-12 21:57:54 +02:00
e098eb43a2 Do not show file header for directories
This also adds a better error message.

closes 
2018-09-12 21:53:41 +02:00
ea369ee17f Merge pull request from ms2300/bat_style
 Added BAT_STYLE env variable functionality
2018-09-12 21:48:34 +02:00
63d32bc818 Merge remote-tracking branch 'upstream/master' into bat_style 2018-09-12 21:40:41 +02:00
dccf8d8221 Use a more streamlined version of style-component collection 2018-09-12 21:35:23 +02:00
97129ab9d8 Add PowerShell syntax, closes 2018-09-12 20:53:49 +02:00
52d0d6ca30 Merge pull request from eth-p/feature-tabs
Tab expansion support.

closes  
closes 
2018-09-12 20:50:05 +02:00
a05494e9d9 Make tests more robust 2018-09-12 20:32:49 +02:00
84ac92efbb Fix test for --style=plain 2018-09-12 20:32:33 +02:00
b4c6e412dc Make generate_snapshots script more robust 2018-09-12 20:28:42 +02:00
3e21d69a92 Re-generate files again 2018-09-12 20:28:30 +02:00
b7690d4bb1 Undo change in sample.modified.rs 2018-09-12 20:28:21 +02:00
d404139ff7 Added validation for --tabs.
Also added a comment to explain what 0 represents.
2018-09-12 10:08:58 -07:00
9ef1e9f792 Update snapshots. 2018-09-11 15:04:44 -07:00
503fe0b641 Fix sample.modified.rs 2018-09-11 15:03:13 -07:00
1807f9653c Merge remote-tracking branch 'upstream/master' into feature-tabs
# Conflicts:
#	src/printer.rs
2018-09-11 14:03:47 -07:00
1e74f0e2a9 Ran cargo fmt. 2018-09-11 13:47:35 -07:00
c1e1f753cf Added three new snapshot tests for --tabs and --wrap. 2018-09-11 13:47:01 -07:00
d90797f8e9 Fixed tab expansion not working in --wrap=never mode. 2018-09-11 13:45:49 -07:00
b4096e5627 Moved tab expansion to happen after syntax highlighting. 2018-09-11 13:02:22 -07:00
4e3ab4d399 Query git diff only when needed
In large git repo like chromium, it takes too long time to query git
diff.
2018-09-11 21:09:38 +02:00
f0d936763c provide armhf deb packages ()
* Enabled deb packaging for armhf architecture

closes .
2018-09-11 21:03:53 +02:00
7897260bf0 BAT_STYLE accounts for multiple styles (ie numbers,header) 2018-09-10 21:58:19 -06:00
eb6e43b9a9 Disabled tab expansion when decorations and pager are not used. 2018-09-10 20:12:13 -07:00
7cdcdbb31d Updated snapshots. 2018-09-10 19:20:09 -07:00
9159341714 Modified snapshot tests to support tab expansion.
This changes how the files are named (to allow for snapshots that aren't
directly related to the --style argument) and fixes the
generate_snapshots.py script to work with the latest version of bat.

Three new tests are also introduced:
- tabs_4 - Tab expansion with a width of 4.
- tabs_8 - Tab expansion with a width of 8.
- tabs_passthrough - No tab expansion.
2018-09-10 19:19:43 -07:00
b23ff24ebc Added tab expansion preprocessing step. 2018-09-10 18:11:59 -07:00
e1ecc17f69 print additional newline if last line in input file was not terminated with a newline (fixes ) 2018-09-10 22:18:16 +02:00
0fe3badf19 adding deb packaging for arm64 () 2018-09-10 21:24:15 +02:00
89d4cb951a Updated before_deploy.bash to call version of strip specific to aarch64 target 2018-09-10 21:24:15 +02:00
e9681bf22d Testing build by removing dependency 'libz-sys = "1.0.20"' 2018-09-10 21:24:15 +02:00
1b6df8a480 Enabled build target aarch64-unknown-linux-gnu for arm64 architecture 2018-09-10 21:24:15 +02:00
cf24986edb Run formatting for bat_style changes 2018-09-10 00:07:46 -06:00
b9c556a0b6 Updated long help to reflect BAT_STYLE changes 2018-09-09 18:35:40 -06:00
9d6bde48fa Added BAT_STYLE env variable functionality 2018-09-09 18:28:04 -06:00
d6c8fee044 README.md: Add Using bat on Windows 2018-09-09 12:22:05 +02:00
8b4abb03db Run 'cargo fmt' 2018-09-08 09:52:21 +02:00
375cf76e15 Formatted for newest rustfmt. 2018-09-08 09:52:21 +02:00
1a4acc435e Typo 2018-09-08 09:52:21 +02:00
d8030626f8 Automatically disable wrapping when style is plain. 2018-09-08 09:52:21 +02:00
fb61aa4f60 Wrapping disabled when --plain is used. () 2018-09-08 09:52:21 +02:00
76df41fa97 src/output.rs: Handle less in a portable way. 2018-09-07 21:47:31 +02:00
97efd75cee Add Crystal syntax 2018-09-05 23:45:09 +02:00
53d0c1deca Can read files named "cache" now, cache subcommand working too ()
Now if a cache file exists in the current directory, and the user passes
no arguments to the cache command, the cache file would be displayed.
If however the user uses cache command with arguments, the cache command
would be executed as normal regardless of whether the file cache exists
in the current directory or not.

Though now there won't be an error message displayed if the user uses the cache sub command without arguments in any directory that contains a file named cache.
2018-09-05 23:22:12 +02:00
155179a07a Update alternatives.md 2018-09-05 22:01:42 +02:00
ba00caf9c3 Add Swift syntax 2018-09-05 21:56:49 +02:00
ac418ba21c Add PureScript syntax 2018-09-05 21:50:16 +02:00
acde83af31 Add note about 'lesspipe', closes 2018-09-05 21:44:53 +02:00
021a68eb21 Add F# syntax, closes 2018-09-05 21:38:35 +02:00
566aab3b05 Merge pull request from tobenna/add-jsx-syntax
Add support for JSX in javascript and typescript
2018-09-05 21:33:50 +02:00
f88eba6476 Add section concerning missing zlib-devel
closes 
2018-09-05 21:13:43 +02:00
1d9e7ac4c2 Support "(/usr)/bin/less" as PAGER too
closes 
2018-09-05 21:10:11 +02:00
80ae2ecbf8 Merge branch 'master' into add-jsx-syntax 2018-09-05 20:51:03 +02:00
96d4492d27 Merge pull request from tobenna/support-cabal-syntax
Syntax highlighting for .cabal
2018-09-05 20:44:25 +02:00
c90f0b8e21 Merge branch 'master' into support-cabal-syntax 2018-09-05 20:43:50 +02:00
4b866ab6af Merge branch 'master' into add-jsx-syntax 2018-09-05 20:36:31 +02:00
2dbd91e543 Add Dart syntax 2018-09-05 20:33:16 +02:00
785da3d9df Add support for cabal syntax 2018-09-05 14:42:27 +01:00
d455cb7c32 Add support for JSX in javascript and typescript 2018-09-05 08:49:33 +01:00
d2b4766f92 Small README update 2018-09-04 08:25:24 +02:00
5cf92b4f94 Windows download with scoop 2018-09-04 08:23:38 +02:00
7b803a50af Ignore enable_ansi_support errors
- Call `enable_ansi_support` only once.
- Ignore errors that appear when trying to enable ANSI support. This
  will hopefully fix  and 
2018-09-03 22:15:38 +02:00
67ec5fe2b7 Add OneHalf themes, closes 2018-09-03 22:12:41 +02:00
3447ed4def Add CSV syntax, closes 2018-09-03 21:49:26 +02:00
532fb921a6 Update README.md 2018-09-01 00:59:30 +02:00
ba4d5a2e7d Bump version number 2018-09-01 00:30:43 +02:00
026273a05c Enable ANSI support on Windows 2018-09-01 00:23:15 +02:00
8903b64830 Fix for Rust 1.26 2018-08-31 23:57:27 +02:00
194155f062 Fix relative-path computation for Windows 2018-08-31 23:57:27 +02:00
a6ff3b900d Fix terminal width to 80 characters in tests 2018-08-31 23:57:27 +02:00
8a52bcf92d Add hidden --terminal-width option 2018-08-31 23:57:27 +02:00
0b1535f63b Split snapshot tests into individual tests 2018-08-31 23:57:27 +02:00
0a5b3eaf3e Re-enable tests on windows 2018-08-31 23:57:27 +02:00
11294249f8 Add new key for AppVeyor 2018-08-31 23:57:27 +02:00
35a1236ad0 Update tests.rs 2018-08-31 23:57:27 +02:00
af8da50c2c Update appveyor.yml 2018-08-31 23:57:27 +02:00
649d1e3df2 Update appveyor.yml 2018-08-31 23:57:27 +02:00
199cfd4519 Update appveyor.yml 2018-08-31 23:57:27 +02:00
c7cce0752b Add AppVeyor badge 2018-08-31 23:57:27 +02:00
3a89486189 Create before_deploy.ps1 2018-08-31 23:57:27 +02:00
720a2fb7a5 Create appveyor.yml 2018-08-31 23:57:27 +02:00
e3c990f11e Respect color settings for list-themes and list-languages 2018-08-31 21:57:18 +02:00
90c7d0c365 Use stdout locks 2018-08-31 21:48:26 +02:00
56002267d2 Fix panic when running bat --list-languages | head
Fixes: https://github.com/sharkdp/bat/issues/232
2018-08-31 21:43:49 +02:00
84734eac9d Update alternatives.md 2018-08-31 00:39:26 +02:00
acdea97e71 Add --plain 2018-08-28 23:37:49 +02:00
839e4ee611 Bump version 2018-08-28 23:21:35 +02:00
c7afcdebf8 Move theme_preview file to constant 2018-08-28 22:16:42 +02:00
08e6db1581 Add Troubleshooting section
see 
2018-08-28 22:08:34 +02:00
4d08ecd828 Fix headline levels 2018-08-28 21:04:41 +02:00
28e1d0e613 Add development section to README 2018-08-28 21:03:03 +02:00
d11839ad03 Update install instructions 2018-08-28 20:55:15 +02:00
8cacd9b432 Include theme_preview file in binary 2018-08-28 20:24:13 +02:00
6f67444c99 Run cargo fmt 2018-08-28 20:24:13 +02:00
fd2b376ea0 Small style changes to --list-themes 2018-08-28 20:24:13 +02:00
cda54e4f61 Fix build for Rust 1.26 2018-08-28 20:24:13 +02:00
3b90ada735 Mutation done correctly 2018-08-28 20:24:13 +02:00
1837d364fe Added bold to theme titles 2018-08-28 20:24:13 +02:00
4ea3e6bbb7 Changed preview code 2018-08-28 20:24:13 +02:00
38544ed735 Changed to plain style 2018-08-28 20:24:13 +02:00
5444b0dfed Fixes mut issue 2018-08-28 20:24:13 +02:00
f3dde0185d Modifying changing config for efficiency 2018-08-28 20:24:13 +02:00
2e3784aa30 : output hello world for each theme when --list-theme is flagged 2018-08-28 20:24:13 +02:00
1088455702 Add syntaxes for Elm, Kotlin, Puppet, TypeScript
closes 
closes 
closes 
closes 
2018-08-28 19:36:31 +02:00
4f812c32ab Adds zenburn theme submodule
Work towards  but @sharkdp is going to rebuild themes.bin
2018-08-28 07:37:27 +02:00
b6c59a5bd4 Add man page to releases 2018-08-27 23:10:14 +02:00
b682679776 Add initial version of man page, see 2018-08-27 22:57:47 +02:00
81771432fb : added -p as an alias for --style=plain 2018-08-27 17:56:50 +02:00
627181bcb6 Always call the syntax highlighter 2018-08-23 23:35:57 +02:00
226d9a573a Add simple loop-through mode
Use a loop-through mode that simply copies input to output if a
non-interactive terminal is detected.

see 
2018-08-23 23:13:24 +02:00
246cf79dbd Split into Controller and Printer 2018-08-23 22:37:27 +02:00
ea955c734d Refactoring, introduce Printer trait 2018-08-23 19:44:14 +02:00
6223ad6d52 Document Config struct 2018-08-22 22:36:59 +02:00
31a9335bd5 Document Config struct 2018-08-22 22:36:37 +02:00
9316f2a758 Major refactoring and cleanup 2018-08-22 22:29:12 +02:00
c884c3cc12 Re-order options in help texts 2018-08-22 19:34:30 +02:00
08850f0474 Update the --help text 2018-08-22 19:27:11 +02:00
8e6c5bc562 doc: mention BAT_THEME in help output 2018-08-22 18:14:01 +02:00
052425b12f Load customized themes in addition to defaults
- New themes in `$BAT_CONFIG_DIR/themes` are now loaded *in addition* to
  the default themes (they may also override).
- The `Default.tmTheme` symlink is not necessary anymore.

This relates to 
2018-08-20 21:39:21 +02:00
2df3305b94 Add new '--blank' option for 'bat cache --init'
closes 
2018-08-20 21:34:08 +02:00
6882fc1512 Clean up help messages 2018-08-20 21:34:08 +02:00
2508323264 Extract grid and line-number color from theme
This changes the output color of the grid and the line numbers to use
the "gutter" foreground color defined in the Sublime `.tmTheme` files.

Sublime Text does the same.

Note: we could go one step further and also extract the "GitGutter"
colors from the themes. These could be used instead of red/green/yellow
to signify Git modifications. The problem is that they are quite a bit
harder to extract from the syntect `Theme` object.

closes 
2018-08-19 12:32:35 +02:00
297afad337 Bump version 2018-08-19 12:31:35 +02:00
1dddce3aa1 Separate syntax set and theme set
This commit separates the handling of syntax sets and theme sets. It
also changes the way how new syntax definitions are loaded from `bat`'s
configuration folder. New syntax definitions are now loaded *in
addition* to the ones that are stored in the `bat` binary by default.

This fixes 
2018-08-19 11:08:23 +02:00
76be0d3933 Add arm as a compile target 2018-08-19 09:50:24 +02:00
e5b8c4471a Bump minimum required rust version 2018-08-18 21:30:12 +02:00
b191691767 Revert "replace trait object BufRead by generic"
This reverts commit 037861e588.
2018-08-18 21:25:58 +02:00
5c95b8803b Avoid floating point arithmetic in RGB→8-bit ANSI approximation 2018-08-18 20:58:03 +02:00
5b421b455d Update dependencies 2018-08-18 20:44:25 +02:00
a6d6c28723 Add documentation on new pager-customization 2018-08-18 20:22:11 +02:00
2966939e38 Update submodules 2018-08-18 19:30:35 +02:00
d179693d1d Use BAT_PAGER and PAGER environment variables, closes 2018-08-18 18:48:22 +02:00
268577c6f9 Run 'cargo fmt' 2018-08-18 17:54:26 +02:00
037861e588 replace trait object BufRead by generic 2018-08-18 17:54:26 +02:00
94ccc646e8 Update README 2018-07-23 21:58:06 +02:00
0cc5d1dab6 Update error-chain to fix compiler warnings 2018-07-23 21:54:30 +02:00
28397b8f78 Always show a warning when theme is unknown 2018-07-23 21:51:49 +02:00
c899849101 Use map instead of and_then(..Some(..)) 2018-07-23 21:51:49 +02:00
bf53b64125 Small style fix 2018-07-23 21:51:49 +02:00
c68aa0f424 Allow specifying the theme via the BAT_THEME environment variable
The `--theme` command line option stills takes precedence and this
change preserves how errors are handled when it's used: If a theme name
that doesn't exist is specified using the argument, this error is fatal.
However, if a theme that doesn't exist is specified using the environment
variable, the error is logged to `stderr` and the "Default" theme is
loaded as a fallback.
2018-07-23 21:51:49 +02:00
6b57f4eebc Style changes 2018-07-18 00:06:24 +02:00
0ddd388a29 Improve logic for SGR sequence passthrough 2018-07-18 00:06:24 +02:00
34811b8161 Fix 2018-07-18 00:06:24 +02:00
8b92aae23f Fix Travis link 2018-07-17 23:37:03 +02:00
3a0941cabe Update syntaxes.bin 2018-07-17 23:28:44 +02:00
52877c6d67 Add Nix syntax, closes 2018-07-17 23:28:31 +02:00
455de98a89 Update sublimehq/Packages, closes 2018-07-17 23:27:19 +02:00
8c6a74a6c5 typo 2018-07-06 19:09:53 +02:00
3f8b340ed8 Add AWK syntax. 2018-06-15 16:41:51 +02:00
65e6970907 Change help text for --line-range 2018-06-12 08:18:44 +02:00
90cc019482 Run 'cargo fmt' 2018-06-12 08:18:44 +02:00
eaf0b99d25 update 2018-06-12 08:18:44 +02:00
3b1dcca5d0 use map() 2018-06-12 08:18:44 +02:00
26dbdf4fa0 update line-ranges 2018-06-12 08:18:44 +02:00
6691786d82 add line-range 2018-06-12 08:18:44 +02:00
50209bfe21 updates archlinux install instructions 2018-06-08 16:15:27 +02:00
c91511cca1 Always run snapshot test 2018-06-02 19:03:38 +02:00
c9f7a0c126 Use separate Git repository for snapshot testing
closes 
2018-06-02 19:00:05 +02:00
69c798eafd Fix command typo 2018-06-01 17:01:28 +02:00
195d5e0e16 Update Cargo.lock 2018-06-01 00:35:20 +02:00
86c1777205 Skip snapshot test if Git is not available
closes 
2018-06-01 00:33:39 +02:00
16874ab016 Exclude assets from upload 2018-05-31 23:49:02 +02:00
192 changed files with 24629 additions and 1649 deletions
.github/ISSUE_TEMPLATE
.gitignore.gitmodules.travis.ymlCargo.lockCargo.tomlLICENSE-MITREADME.mdappveyor.yml
assets
build.rs
ci
diagnostics
doc
examples
src
tests

39
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file

@ -0,0 +1,39 @@
---
name: Bug Report
about: Report a bug.
title: ""
labels: bug
assignees: ''
---
<!--
Hey there, thanks for creating an issue!
In order to reproduce your issue, we might need to know a little bit more about the environment
which you're running `bat` on.
If you're on Linux or MacOS:
Please run the script at https://github.com/sharkdp/bat/blob/master/diagnostics/info.sh and
paste the output at the bottom of the bug report.
If you're on Windows:
Please tell us about your Windows Version (e.g. "Windows 10 1908") at the
bottom of the bug report.
-->
**What version of `bat` are you using?**
[paste the output of `bat --version` here]
**Describe the bug you encountered:**
...
**Describe what you expected to happen?**
...
**How did you install `bat`?**
apt-get, homebrew, GitHub release, etc.
---
[paste the output of `info.sh` here]

2
.github/ISSUE_TEMPLATE/config.yml vendored Normal file

@ -0,0 +1,2 @@
blank_issues_enabled: true

@ -0,0 +1,10 @@
---
name: Feature Request
about: Suggest an idea for this project.
title: ''
labels: feature-request
assignees: ''
---

10
.github/ISSUE_TEMPLATE/question.md vendored Normal file

@ -0,0 +1,10 @@
---
name: Question
about: Ask a question about 'bat'.
title: ''
labels: question
assignees: ''
---

@ -0,0 +1,29 @@
---
name: Syntax Request
about: Request adding a new syntax to bat.
title: ""
labels: syntax-request
assignees: ''
---
<!--
BEFORE YOU MAKE A REQUEST:
Are you looking to add a new syntax to use on one of your devices?
Bat supports locally-installed language definitions. See the link below:
https://github.com/sharkdp/bat#adding-new-syntaxes--language-definitions
If you think adding this syntax would help others as well, please make sure that it meets our
guidelines for adding new syntaxes:
- 10,000 downloads on packagecontrol.io
-->
**Syntax:**
[Name or description of the syntax/language here]
**Guideline Criteria:**
[packagecontro.io link here]

5
.gitignore vendored

@ -1,3 +1,6 @@
/target/
**/*.rs.bk
# Generated files
/assets/completions/bat.fish
/assets/manual/bat.1

158
.gitmodules vendored

@ -1,32 +1,32 @@
[submodule "assets/syntaxes/Elixir"]
path = assets/syntaxes/Elixir
path = assets/syntaxes/02_Extra/Elixir
url = https://github.com/princemaple/elixir-sublime-syntax/
[submodule "assets/syntaxes/Packages"]
path = assets/syntaxes/Packages
path = assets/syntaxes/01_Packages
url = https://github.com/sublimehq/Packages/
[submodule "assets/syntaxes/TOML"]
path = assets/syntaxes/TOML
url = https://github.com/sharkdp/sublime_toml_highlighting
path = assets/syntaxes/02_Extra/TOML
url = https://github.com/jasonwilliams/sublime_toml_highlighting
[submodule "assets/syntaxes/Julia"]
path = assets/syntaxes/Julia
path = assets/syntaxes/02_Extra/Julia
url = https://github.com/JuliaEditorSupport/Julia-sublime
[submodule "assets/themes/sublime-monokai-extended"]
path = assets/themes/sublime-monokai-extended
url = https://github.com/jonschlinkert/sublime-monokai-extended
[submodule "assets/syntaxes/Docker"]
path = assets/syntaxes/Docker
path = assets/syntaxes/02_Extra/Docker
url = https://github.com/asbjornenge/Docker.tmbundle
[submodule "assets/syntaxes/VimL"]
path = assets/syntaxes/VimL
path = assets/syntaxes/02_Extra/VimL
url = https://github.com/SalGnt/Sublime-VimL
[submodule "assets/syntaxes/INI"]
path = assets/syntaxes/INI
path = assets/syntaxes/02_Extra/INI
url = https://github.com/clintberry/sublime-text-2-ini
[submodule "assets/syntaxes/CMake"]
path = assets/syntaxes/CMake
url = https://github.com/sharkdp/Sublime-CMakeLists
path = assets/syntaxes/02_Extra/CMake
url = https://github.com/zyxar/Sublime-CMakeLists
[submodule "assets/syntaxes/LESS"]
path = assets/syntaxes/LESS
path = assets/syntaxes/02_Extra/LESS
url = https://github.com/danro/LESS-sublime
[submodule "assets/themes/DarkNeon"]
path = assets/themes/DarkNeon
@ -40,3 +40,139 @@
[submodule "assets/themes/TwoDark"]
path = assets/themes/TwoDark
url = https://github.com/erremauro/TwoDark
[submodule "assets/syntaxes/AWK"]
path = assets/syntaxes/02_Extra/AWK
url = https://github.com/JohnNilsson/awk-sublime
[submodule "assets/syntaxes/Nix"]
path = assets/syntaxes/02_Extra/Nix
url = https://github.com/wmertens/sublime-nix
[submodule "assets/themes/zenburn"]
path = assets/themes/zenburn
url = https://github.com/colinta/zenburn.git
[submodule "assets/syntaxes/Kotlin"]
path = assets/syntaxes/02_Extra/Kotlin
url = https://github.com/vkostyukov/kotlin-sublime-package
[submodule "assets/syntaxes/Elm"]
path = assets/syntaxes/02_Extra/Elm
url = https://github.com/elm-community/SublimeElmLanguageSupport
[submodule "assets/syntaxes/TypeScript"]
path = assets/syntaxes/02_Extra/TypeScript
url = https://github.com/Microsoft/TypeScript-Sublime-Plugin
[submodule "assets/syntaxes/Puppet"]
path = assets/syntaxes/02_Extra/Puppet
url = https://github.com/russCloak/SublimePuppet
[submodule "assets/syntaxes/CSV"]
path = assets/syntaxes/02_Extra/CSV
url = https://github.com/wadetb/Sublime-Text-Advanced-CSV
[submodule "assets/themes/onehalf"]
path = assets/themes/onehalf
url = https://github.com/sonph/onehalf
[submodule "assets/syntaxes/JavaScript (Babel)"]
path = assets/syntaxes/02_Extra/JavaScript (Babel)
url = https://github.com/babel/babel-sublime
[submodule "assets/syntaxes/Cabal"]
path = assets/syntaxes/02_Extra/Cabal
url = https://github.com/SublimeHaskell/SublimeHaskell
[submodule "assets/syntaxes/Dart"]
path = assets/syntaxes/02_Extra/Dart
url = https://github.com/guillermooo/dart-sublime-bundle
[submodule "assets/syntaxes/FSharp"]
path = assets/syntaxes/02_Extra/FSharp
url = https://github.com/hoest/sublimetext-fsharp
[submodule "assets/syntaxes/PureScript"]
path = assets/syntaxes/02_Extra/PureScript
url = https://github.com/tellnobody1/sublime-purescript-syntax
[submodule "assets/syntaxes/Swift"]
path = assets/syntaxes/02_Extra/Swift
url = https://github.com/quiqueg/Swift-Sublime-Package
[submodule "assets/syntaxes/Crystal"]
path = assets/syntaxes/02_Extra/Crystal
url = https://github.com/crystal-lang-tools/sublime-crystal.git
[submodule "assets/syntaxes/PowerShell"]
path = assets/syntaxes/02_Extra/PowerShell
url = https://github.com/PowerShell/EditorSyntax
[submodule "assets/syntaxes/Robot"]
path = assets/syntaxes/02_Extra/Robot
url = https://github.com/andriyko/sublime-robot-framework-assistant.git
[submodule "assets/themes/sublime-snazzy"]
path = assets/themes/sublime-snazzy
url = https://github.com/greggb/sublime-snazzy
[submodule "assets/syntaxes/AsciiDoc"]
path = assets/syntaxes/02_Extra/AsciiDoc
url = https://github.com/SublimeText/AsciiDoc.git
[submodule "assets/syntaxes/Assembly (ARM)"]
path = assets/syntaxes/02_Extra/Assembly (ARM)
url = https://github.com/tvi/Sublime-ARM-Assembly
[submodule "assets/syntaxes/syslog-syntax"]
path = assets/syntaxes/02_Extra/Syslog
url = https://github.com/caos21/syslog-syntax.git
branch = master
[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
path = assets/syntaxes/02_Extra/Protobuf
url = https://github.com/VcamX/protobuf-syntax-highlighting.git
branch = master
[submodule "assets/syntaxes/Terraform"]
path = assets/syntaxes/02_Extra/Terraform
url = https://github.com/alexlouden/Terraform.tmLanguage.git
[submodule "assets/syntaxes/Jsonnet"]
path = assets/syntaxes/02_Extra/Jsonnet
url = https://github.com/gburiola/sublime-jsonnet-syntax.git
[submodule "assets/syntaxes/varlink"]
path = assets/syntaxes/02_Extra/varlink
url = https://github.com/varlink/syntax-highlight-varlink.git
[submodule "assets/syntaxes/sublime-fish"]
path = assets/syntaxes/02_Extra/Fish
url = https://github.com/Phidica/sublime-fish.git
[submodule "assets/syntaxes/Org mode"]
path = assets/syntaxes/02_Extra/Org mode
url = https://github.com/jezcope/Org.tmbundle.git
[submodule "assets/syntaxes/requirementstxt"]
path = assets/syntaxes/02_Extra/requirementstxt
url = https://github.com/wuub/requirementstxt
[submodule "assets/syntaxes/DotENV"]
path = assets/syntaxes/02_Extra/DotENV
url = https://github.com/zaynali53/DotENV
[submodule "assets/syntaxes/hosts"]
path = assets/syntaxes/02_Extra/hosts
url = https://github.com/brandonwamboldt/sublime-hosts
[submodule "assets/syntaxes/ssh-config"]
path = assets/syntaxes/02_Extra/ssh-config
url = https://github.com/robballou/sublimetext-sshconfig.git
[submodule "assets/syntaxes/GraphQL"]
path = assets/syntaxes/02_Extra/GraphQL
url = https://github.com/dncrews/GraphQL-SublimeText3.git
[submodule "assets/syntaxes/Verilog"]
path = assets/syntaxes/02_Extra/Verilog
url = https://github.com/pro711/sublime-verilog
[submodule "assets/syntaxes/SCSS_Sass"]
path = assets/syntaxes/02_Extra/SCSS_Sass
url = https://github.com/braver/SublimeSass
[submodule "assets/syntaxes/Strace"]
path = assets/syntaxes/02_Extra/Strace
url = https://github.com/djuretic/SublimeStrace
[submodule "assets/syntaxes/Jinja2"]
path = assets/syntaxes/02_Extra/Jinja2
url = https://github.com/Martin819/sublime-jinja2
[submodule "assets/syntaxes/SLS"]
path = assets/syntaxes/02_Extra/SLS
url = https://github.com/saltstack/sublime-text
branch = master
[submodule "assets/themes/dracula-sublime"]
path = assets/themes/dracula-sublime
url = https://github.com/dracula/sublime.git
[submodule "assets/syntaxes/HTML (Twig)"]
path = assets/syntaxes/02_Extra/HTML (Twig)
url = https://github.com/Anomareh/PHP-Twig.tmbundle.git
[submodule "assets/themes/Nord-sublime"]
path = assets/themes/Nord-sublime
url = https://github.com/crabique/Nord-plist.git
[submodule "assets/themes/solarized-sublime"]
path = assets/themes/solarized-sublime
url = https://github.com/paulcpederson/solarized-sublime.git
[submodule "assets/syntaxes/Vue"]
path = assets/syntaxes/02_Extra/Vue
url = https://github.com/vuejs/vue-syntax-highlight.git
branch = new
[submodule "assets/syntaxes/CoffeeScript"]
path = assets/syntaxes/02_Extra/CoffeeScript
url = https://github.com/sustained/CoffeeScript-Sublime-Plugin

@ -1,5 +1,6 @@
language: rust
cache: cargo
matrix:
include:
# Stable channel.
@ -17,37 +18,45 @@ matrix:
- os: osx
rust: stable
env: TARGET=x86_64-apple-darwin
- os: linux
rust: stable
env:
- TARGET=arm-unknown-linux-gnueabihf
- CC_arm_unknown_linux_gnueabihf=/usr/bin/arm-linux-gnueabihf-gcc-4.8
- CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc-4.8
- os: linux
rust: stable
env:
- TARGET=aarch64-unknown-linux-gnu
- CC_aarch64-unknown-linux-gnu=/usr/bin/aarch64-linux-gnu-gcc-4.8
- CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc-4.8
# Minimum Rust supported channel.
- os: linux
rust: 1.24.0
rust: 1.36.0
env: TARGET=x86_64-unknown-linux-gnu
- os: linux
rust: 1.24.0
rust: 1.36.0
env:
- TARGET=x86_64-unknown-linux-musl
- CC_x86_64_unknown_linux_musl=/usr/bin/musl-gcc
- os: osx
rust: 1.24.0
rust: 1.36.0
env: TARGET=x86_64-apple-darwin
# Code formatting check
- os: linux
rust: nightly
# skip the global install step
install:
- cargo install --debug --force rustfmt-nightly
script: cargo fmt -- --check
# Disable nightly for now
# # Code formatting check
# - os: linux
# rust: nightly
# # skip the global install step
# install:
# - cargo install --debug --force rustfmt-nightly
# script: cargo fmt -- --check
addons:
apt:
packages:
# needed for i686-unknown-linux-gnu target
- gcc-multilib
# needed for musl targets
- musl-tools
# needed to build deb packages
- fakeroot
sudo: required
before_install:
- ci/before_install.bash
env:
global:
@ -62,11 +71,7 @@ install:
- if [[ $TRAVIS_OS_NAME = linux && $HOST != $TARGET ]]; then rustup target add $TARGET; fi
script:
# Incorporate TARGET env var to the build and test process
- cargo build --target $TARGET --verbose
- cargo test --target $TARGET --verbose
# Run 'bat' on its own source code and the README
- cargo run --target $TARGET -- src/main.rs README.md --paging=never
- ci/script.bash
before_deploy:
- bash ci/before_deploy.bash

1817
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -7,31 +7,56 @@ license = "MIT/Apache-2.0"
name = "bat"
readme = "README.md"
repository = "https://github.com/sharkdp/bat"
version = "0.4.0"
version = "0.13.0"
exclude = [
"assets/syntaxes/*",
"assets/themes/*",
]
build = "build.rs"
edition = '2018'
[dependencies]
atty = "0.2.2"
ansi_term = "0.10"
console = "0.6"
directories = "0.10"
lazy_static = "1.0"
atty = "0.2.14"
ansi_term = "^0.12.1"
ansi_colours = "^1.0"
console = "0.10"
dirs = "2.0"
lazy_static = "1.4"
wild = "2.0"
content_inspector = "0.2.4"
encoding = "0.2"
shell-words = "0.1.0"
unicode-width = "0.1.7"
globset = "0.4"
[dependencies.git2]
version = "0.7"
version = "0.13"
default-features = false
features = []
[dependencies.syntect]
version = "2.1"
version = "3.3.0"
default-features = false
features = ["parsing", "yaml-load", "dump-load", "dump-create"]
[dependencies.clap]
version = "2"
version = "2.33"
default-features = false
features = ["suggestions", "color", "wrap_help"]
[dependencies.error-chain]
version = "0.11"
version = "0.12"
default-features = false
features = []
[dev-dependencies]
tempdir = "0.3"
assert_cmd = "0.12.0"
[build-dependencies]
clap = "2.33"
liquid = "0.19"
lazy_static = "1.4"
[profile.release]
lto = true

@ -1,3 +1,5 @@
Copyright (c) 2018-2020 bat-developers (https://github.com/sharkdp/bat).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights

534
README.md

@ -1,6 +1,7 @@
<p align="center">
<img src="doc/logo-header.svg" alt="bat - a cat clone with wings"><br>
<a href="Version info"><img src="https://travis-ci.org/sharkdp/bat.svg?branch=master" alt="Build Status"></a>
<a href="https://travis-ci.org/sharkdp/bat"><img src="https://travis-ci.org/sharkdp/bat.svg?branch=master" alt="Build Status"></a>
<a href="https://ci.appveyor.com/project/sharkdp/bat"><img src="https://ci.appveyor.com/api/projects/status/cptsmtbiwbnr2vhf/branch/master?svg=true"></a>
<img src="https://img.shields.io/crates/l/bat.svg" alt="license">
<a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
A <i>cat(1)</i> clone with syntax highlighting and Git integration.
@ -11,7 +12,8 @@
<a href="#how-to-use">How To Use</a>
<a href="#installation">Installation</a>
<a href="#customization">Customization</a>
<a href="#project-goals-and-alternatives">Project goals, alternatives</a>
<a href="#project-goals-and-alternatives">Project goals, alternatives</a>
Translation [<a href="https://github.com/chinanf-boy/bat-zh">中文</a>][<a href="doc/README-ja.md">日本語</a>][<a href="doc/README-ko.md">한국어</a>]
</p>
### Syntax highlighting
@ -28,6 +30,13 @@ languages:
![Git integration example](https://i.imgur.com/2lSW4RE.png)
### Show non-printable characters
You can use the `-A`/`--show-all` option to show and highlight non-printable
characters:
![Non-printable character example](https://i.imgur.com/WndGp9H.png)
### Automatic paging
`bat` can pipe its own output to `less` if the output is too large for one screen.
@ -35,8 +44,9 @@ languages:
### File concatenation
Oh.. you can also use it to concatenate files :wink:. Whenever
`bat` detects a non-interactive terminal, it will fall back to printing
the plain file contents.
`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.
## How to use
@ -52,17 +62,24 @@ Display multiple files at once
> bat src/*.rs
```
Read from stdin, explicitly specify the language
Read from stdin, determine the syntax automatically
```bash
> curl -s https://sh.rustup.rs | bat
```
Read from stdin, specify the language explicitly
```bash
> yaml2json .travis.yml | json_pp | bat -l json
```
Show and highlight non-printable characters:
```bash
> curl -s https://raw.githubusercontent.com/sharkdp/bat/master/src/main.rs | bat -l rs
> bat -A /etc/hosts
```
As a replacement for `cat`:
Use it as a `cat` replacement:
```bash
bat > note.md # quickly create a new file
@ -71,28 +88,144 @@ bat header.md content.md footer.md > document.md
bat -n main.rs # show line numbers (only)
cat f - g # output 'f', then stdin, then 'g'.
bat f - g # output 'f', then stdin, then 'g'.
```
### Integration with other tools
#### `find` or `fd`
You can use the `-exec` option of `find` to preview all search results with `bat`:
```bash
find … -exec bat {} +
```
If you happen to use [`fd`](https://github.com/sharkdp/fd), you can use the `-X`/`--exec-batch` option to do the same:
```bash
fd … -X bat
```
#### `ripgrep`
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.
```bash
batgrep needle src/
```
#### `tail -f`
`bat` can be combined with `tail -f` to continuously monitor a given file with syntax highlighting.
```bash
tail -f /var/log/pacman.log | bat --paging=never -l log
```
Note that we have to switch off paging in order for this to work. We have also specified the syntax
explicitly (`-l log`), as it can not be auto-detected in this case.
#### `git`
You can combine `bat` with `git show` to view an older version of a given file with proper syntax
highlighting:
```bash
git show v0.6.0:src/main.rs | bat -l rs
```
Note that syntax highlighting within diffs is currently not supported. If you are looking for this, check out [`delta`](https://github.com/dandavison/delta).
#### `xclip`
The line numbers and Git modification markers in the output of `bat` can make it hard to copy
the contents of a file. To prevent this, you can call `bat` with the `-p`/`--plain` option or
simply pipe the output into `xclip`:
```bash
bat main.cpp | xclip
```
`bat` will detect that the output is being redirected and print the plain file contents.
#### `man`
`bat` can be used as a colorizing pager for `man`, by setting the
`MANPAGER` environment variable:
```bash
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man 2 select
```
It might also be necessary to set `MANROFFOPT="-c"` if you experience
formatting problems.
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).
Note that the [Manpage syntax](assets/syntaxes/Manpage.sublime-syntax) is developed in this repository and still needs some work.
#### `prettier` / `shfmt` / `rustfmt`
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`.
## Installation
### From binaries
[![Packaging status](https://repology.org/badge/vertical-allrepos/bat.svg)](https://repology.org/project/bat/versions)
Check out the [Release page](https://github.com/sharkdp/bat/releases) for
binary builds and Debian packages.
### On Ubuntu
*... and other Debian-based Linux distributions.*
#### On Arch Linux
You can install [the AUR package](https://aur.archlinux.org/packages/bat/)
via yaourt, or manually:
You can install [the Ubuntu `bat` package](https://packages.ubuntu.com/eoan/bat) or [the Debian `bat` package](https://packages.debian.org/sid/bat) since Ubuntu Eoan 19.10 or Debian unstable sid.
```bash
git clone https://aur.archlinux.org/bat.git
cd bat
makepkg -si
apt install bat
```
#### On FreeBSD
If you want to run the latest release of bat or if you are on older versions of Ubuntu/Debian, download the latest `.deb` package from the [release page](https://github.com/sharkdp/bat/releases)
and install it via:
```bash
sudo dpkg -i bat_0.13.0_amd64.deb # adapt version number and architecture
```
### On Alpine Linux
You can install [the `bat` package](https://pkgs.alpinelinux.org/packages?name=bat)
from the official sources, provided you have the appropriate repository enabled:
```bash
apk add bat
```
### On Arch Linux
You can install [the `bat` package](https://www.archlinux.org/packages/community/x86_64/bat/)
from the official sources:
```bash
pacman -S bat
```
### On Fedora
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.
```bash
dnf install bat
```
### On Gentoo Linux
You can install [the `bat` package](https://packages.gentoo.org/packages/sys-apps/bat)
from the official sources:
```bash
emerge sys-apps/bat
```
### On Void Linux
You can install `bat` via xbps-install:
```bash
xbps-install -S bat
```
### On FreeBSD
You can install a precompiled [`bat` package](https://www.freshports.org/textproc/bat) with pkg:
@ -107,7 +240,23 @@ cd /usr/ports/textproc/bat
make install
```
#### On macOS
### Via nix
You can install `bat` using the [nix package manager](https://nixos.org/nix):
```bash
nix-env -i bat
```
### On openSUSE
You can install `bat` with zypper:
```bash
zypper install bat
```
### On macOS
You can install `bat` with [Homebrew](http://braumeister.org/formula/bat):
@ -115,77 +264,147 @@ You can install `bat` with [Homebrew](http://braumeister.org/formula/bat):
brew install bat
```
Or install `bat` with [MacPorts](https://ports.macports.org/port/bat/summary):
```bash
port install bat
```
### On Windows
There are a few options to install `bat` on Windows. Once you have installed `bat`,
take a look at the ["Using `bat` on Windows"](#using-bat-on-windows) section.
#### With Chocolatey
You can install `bat` via [Chocolatey](https://chocolatey.org/packages/Bat):
```bash
choco install bat
```
#### With Scoop
You can install `bat` via [scoop](https://scoop.sh/):
```bash
scoop install bat
```
You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
#### From prebuilt binaries:
You can download prebuilt binaries from the [Release page](https://github.com/sharkdp/bat/releases),
You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
### Via Docker
There is a [Docker image](https://hub.docker.com/r/danlynn/bat/) that you can use to run `bat` in a container:
```bash
docker pull danlynn/bat
alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
```
### Via Ansible
You can install `bat` with [Ansible](https://www.ansible.com/):
```bash
# Install role on local machine
ansible-galaxy install aeimer.install_bat
```
```yaml
---
# Playbook to install bat
- host: all
roles:
- aeimer.install_bat
```
- [Ansible Galaxy](https://galaxy.ansible.com/aeimer/install_bat)
- [GitHub](https://github.com/aeimer/ansible-install-bat)
This should work with the following distributions:
- Debian/Ubuntu
- ARM (eg. Raspberry PI)
- Arch Linux
- Void Linux
- FreeBSD
- MacOS
### From binaries
Check out the [Release page](https://github.com/sharkdp/bat/releases) for
prebuilt versions of `bat` for many different architectures. Statically-linked
binaries are also available: look for archives with `musl` in the file name.
### From source
If you want to build to compile `bat` from source, you need Rust 1.24 or
If you want to build `bat` from source, you need Rust 1.36 or
higher. You can then use `cargo` to build everything:
```bash
cargo install bat
```
On macOS, you might have to install `cmake` (`brew install cmake`) in order for
some dependencies to be built.
On some platforms, you might need to install `llvm` and/or `libclang-dev`.
## Customization
### Highlighting theme
Use `bat --list-themes` to get a list of all available themes for syntax
highlighting. To select the `TwoDark` theme, for example, call `bat` with
the `--theme=TwoDark` option. Use `alias bat="bat --theme=TwoDark"` in your
shells startup file to make the change permanent.
highlighting. To select the `TwoDark` theme, call `bat` with the
`--theme=TwoDark` option or set the `BAT_THEME` environment variable to
`TwoDark`. Use `export BAT_THEME="TwoDark"` in your shell's startup file to
make the change permanent. Alternatively, use `bat`s
[configuration file](https://github.com/sharkdp/bat#configuration-file).
If you want to preview the different themes on a custom file, you can use
the following command (you need [`fzf`](https://github.com/junegunn/fzf) for this):
```bash
bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
```
`bat` looks good on a dark background by default. However, if your terminal uses a
light background, some themes like `GitHub` or `OneHalfLight` will work better for you.
You can also use a custom theme by following the
['Adding new themes' section below](https://github.com/sharkdp/bat#adding-new-themes).
### Output style
You can use the `--style` option to control the appearance of `bat`s output.
You can use `--style=numbers,changes`, for example, to show only Git changes
and line numbers but no grid and no file header.
and line numbers but no grid and no file header. Set the `BAT_STYLE` environment
variable to make these changes permanent or use `bat`s
[configuration file](https://github.com/sharkdp/bat#configuration-file).
### Add new syntaxes and highlighting themes
### Adding new syntaxes / language definitions
`bat` uses the excellent [`syntect`](https://github.com/trishume/syntect/)
library for syntax highlighting. `syntect` can read any
[Sublime Text `.sublime-syntax` file](https://www.sublimetext.com/docs/3/syntax.html)
and theme.
and theme. To add new syntax definitions, do the following.
To build your own language-set and theme, follow these steps:
Create a folder with a syntax highlighting theme:
Create a folder with syntax definition files:
```bash
BAT_CONFIG_DIR="$(bat cache --config-dir)"
mkdir -p "$(bat --config-dir)/syntaxes"
cd "$(bat --config-dir)/syntaxes"
mkdir -p "$BAT_CONFIG_DIR/themes"
cd "$BAT_CONFIG_DIR/themes"
# Download a theme, for example:
git clone https://github.com/greggb/sublime-snazzy
# Create a link for the default theme
ln -sf "sublime-snazzy/Sublime Snazzy.tmTheme" Default.tmTheme
# Put new '.sublime-syntax' language definition files
# in this folder (or its subdirectories), for example:
git clone https://github.com/tellnobody1/sublime-purescript-syntax
```
Create a folder with language definition files:
Now use the following command to parse these files into a binary cache:
```bash
mkdir -p "$BAT_CONFIG_DIR/syntaxes"
cd "$BAT_CONFIG_DIR/syntaxes"
# Download some language definition files, for example:
git clone https://github.com/sublimehq/Packages
git clone https://github.com/danro/LESS-sublime
bat cache --build
```
Finally, use the following command to parse all these files into a binary
cache:
```bash
bat cache --init
```
Use `bat --list-languages` and `bat --list-themes` to check if all languages and themes are
available.
Finally, use `bat --list-languages` to check if the new languages are available.
If you ever want to go back to the default settings, call:
@ -193,6 +412,200 @@ If you ever want to go back to the default settings, call:
bat cache --clear
```
### Adding new themes
This works very similar to how we add new syntax definitions.
First, create a folder with the new syntax highlighting themes:
```bash
mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"
# Download a theme in '.tmTheme' format, for example:
git clone https://github.com/greggb/sublime-snazzy
# Update the binary cache
bat cache --build
```
Finally, use `bat --list-themes` to check if the new themes are available.
### Using a different pager
`bat` uses the pager that is specified in the `PAGER` environment variable. If this variable is not
set, `less` is used by default. If you want to use a different pager, you can either modify the
`PAGER` variable or set the `BAT_PAGER` environment variable to override what is specified in
`PAGER`.
If you want to pass command-line arguments to the pager, you can also set them via the
`PAGER`/`BAT_PAGER` variables:
```bash
export BAT_PAGER="less -RF"
```
Instead 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).
**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.
### Dark mode
If you make use of the dark mode feature in macOS, you might want to configure `bat` to use a different
theme based on the OS theme. The following snippet uses the `default` theme when in the light mode
and the `GitHub` theme when in the dark mode.
```bash
alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"
```
## Configuration file
`bat` can also be customized with a configuration file. The location of the file is dependent
on your operating system. To get the default path for your system, call
```
bat --config-file
```
Alternatively, you can use the `BAT_CONFIG_PATH` environment variable to point `bat` to a
non-default location of the configuration file:
```bash
export BAT_CONFIG_PATH="/path/to/bat.conf"
```
### Format
The 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.
Example configuration file:
```bash
# Set the theme to "TwoDark"
--theme="TwoDark"
# Show line numbers, Git modifications and file header (but no grid)
--style="numbers,changes,header"
# Use italic text on the terminal (not supported on all terminals)
--italic-text=always
# Use C++ syntax for .ino files
--map-syntax "*.ino:C++"
# Use ".gitignore"-style highlighting for ".ignore" files
--map-syntax ".ignore:Git Ignore"
```
## Using `bat` on Windows
`bat` mostly works out-of-the-box on Windows, but a few features may need extra configuration.
### Paging
Windows only includes a very limited pager in the form of `more`. You can download a Windows binary
for `less` [from its homepage](http://www.greenwoodsoftware.com/less/download.html) or [through
Chocolatey](https://chocolatey.org/packages/Less). To use it, place the binary in a directory in
your `PATH` or [define an environment variable](#using-a-different-pager). The [Chocolatey package](#on-windows) installs `less` automatically.
### Colors
Windows 10 natively supports colors in both `conhost.exe` (Command Prompt) and PowerShell since
[v1511](https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1511_(November_Update)), as
well as in newer versions of bash. On earlier versions of Windows, you can use
[Cmder](http://cmder.net/), which includes [ConEmu](https://conemu.github.io/).
**Note:** The Git and MSYS versions of `less` do not correctly interpret colors on Windows. If you
dont have any other pagers installed, you can disable paging entirely by passing `--paging=never`
or by setting `BAT_PAGER` to an empty string.
### Cygwin
`bat` on Windows does not natively support Cygwin's unix-style paths (`/cygdrive/*`). When passed an absolute cygwin path as an argument, `bat` will encounter the following error: `The system cannot find the path specified. (os error 3)`
This can be solved by creating a wrapper or adding the following function to your `.bash_profile` file:
```bash
bat() {
local index
local args=("$@")
for index in $(seq 0 ${#args[@]}) ; do
case "${args[index]}" in
-*) continue;;
*) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[index]}")";;
esac
done
command bat "${args[@]}"
}
```
## Troubleshooting
### Terminals & colors
`bat` handles terminals *with* and *without* truecolor support. However, the colors in the syntax
highlighting themes are not optimized for 8-bit colors and it is therefore strongly recommended
that you use a terminal with 24-bit truecolor support (`terminator`, `konsole`, `iTerm2`, ...).
See [this article](https://gist.github.com/XVilka/8346728) for more details and a full list of
terminals with truecolor support.
Make sure that your truecolor terminal sets the `COLORTERM` variable to either `truecolor` or
`24bit`. Otherwise, `bat` will not be able to determine whether or not 24-bit escape sequences
are supported (and fall back to 8-bit colors).
### Line numbers and grid are hardly visible
Please try a different theme (see `bat --list-themes` for a list). The `OneHalfDark` and
`OneHalfLight` themes provide grid and line colors that are brighter.
### File encodings
`bat` natively supports UTF-8 as well as UTF-16. For every other file encoding, you may need to
convert to UTF-8 first because the encodings can typically not be auto-detected. You can `iconv`
to do so.
Example: if you have a PHP file in Latin-1 (ISO-8859-1) encoding, you can call:
``` bash
iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
```
Note: you might have to use the `-l`/`--language` option if the syntax can not be auto-detected
by `bat`.
## Development
```bash
# Recursive clone to retrieve all submodules
git clone --recursive https://github.com/sharkdp/bat
# Build (debug version)
cd bat
cargo build --bins
# Run unit tests and integration tests
cargo test
# Install (release version)
cargo install
# Build a bat binary with modified syntaxes and themes
bash assets/create.sh
cargo install -f
```
## Maintainers
- [sharkdp](https://github.com/sharkdp)
- [eth-p](https://github.com/eth-p)
## Project goals and alternatives
`bat` tries to achieve the following goals:
@ -204,3 +617,10 @@ bat cache --clear
There are a lot of alternatives, if you are looking for similar programs. See
[this document](doc/alternatives.md) for a comparison.
## License
Copyright (c) 2018-2020 [bat-developers](https://github.com/sharkdp/bat).
`bat` is distributed under the terms of both the MIT License and the Apache License 2.0.
See the [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files for license details.

49
appveyor.yml Normal file

@ -0,0 +1,49 @@
environment:
global:
TARGET: x86_64-pc-windows-msvc
RUST_VERSION: stable
CRATE_NAME: bat
CARGO_HOME: "c:\\cargo"
RUSTUP_HOME: "c:\\rustup"
install:
- appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
- rustup-init.exe -y --default-host %TARGET%
- set PATH=%PATH%;C:\cargo\bin
- rustc -Vv
- cargo -V
build: false
test_script:
- cargo test --target %TARGET% --verbose
- cargo run --target %TARGET% -- src/bin/bat/main.rs README.md --paging=never
before_deploy:
# Generate artifacts for release
- cargo build --bins --release --verbose
- ps: ci\before_deploy.ps1
deploy:
description: 'Automatically deployed release'
artifact: /.*\.zip/
# Here's how:
# - Go to 'https://github.com/settings/tokens/new' and generate a Token with only the
# `public_repo` scope enabled
# - Then go to 'https://ci.appveyor.com/tools/encrypt' and enter the newly generated token.
# - Enter the "encrypted value" below
auth_token:
secure: oO4/J+hcFXgXcEqEc8gzlQNqLG0IxU78s4EyH+uczGdsyWajb3yipxPR6nXUvmoj
provider: GitHub
on:
RUST_VERSION: stable
appveyor_repo_tag: true
cache:
- C:\Users\appveyor\.cargo\registry
- target
notifications:
- provider: Email
on_build_success: false
on_build_failure: false
on_build_status_changed: false

1
assets/.gitattributes vendored Normal file

@ -0,0 +1 @@
* linguist-vendored

13
assets/JavaDoc.sublime-syntax.patch vendored Normal file

@ -0,0 +1,13 @@
diff --git syntaxes/01_Packages/Java/JavaDoc.sublime-syntax syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
index 422a6a9..40a741e 100644
--- syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
+++ syntaxes/01_Packages/Java/JavaDoc.sublime-syntax
@@ -13,7 +13,7 @@ variables:
contexts:
prototype:
# https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#leadingasterisks
- - match: ^\s*(\*)\s*(?!\s*@)
+ - match: ^\s*(\*)(?!/)\s*(?!\s*@)
captures:
1: punctuation.definition.comment.javadoc

14
assets/README.md vendored

@ -13,12 +13,15 @@ In order to add new syntaxes to `bat`, follow these steps:
Sublime Text and convert it to a `.sublime-syntax` file via *Tools* -> *Developer* ->
*New Syntax from XXX.tmLanguage...*. Save the new file in the `assets/syntaxes` folder.
3. Run the `create.sh` script. It calls `bat cache --init` to parse all available
3. Run the `create.sh` script. It calls `bat cache --build` to parse all available
`.sublime-syntax` files and serialize them to a `syntaxes.bin` file (in this folder).
4. Re-compile `bat`. At compilation time, the `syntaxes.bin` file will be stored inside the
`bat` binary.
5. If you send a pull request with your changes, please do *not* include the changed `syntaxes.bin`
file. A new binary cache file will be created once before every new release of `bat`.
### Troubleshooting
Make sure that the local cache does not interfere with the internally stored syntaxes and
@ -28,4 +31,11 @@ themes (`bat cache --clear`).
The following files have been manually modified after converting from a `.tmLanguage` file:
* `VimL.sublime-syntax` => added `.vimrc` file type.
* `Dart.sublime-syntax` => removed `#regex.dart` include.
* `INI.sublime-syntax` => added `.hgrc`, `hgrc`, and `desktop` file types.
* `Org mode.sublime-syntax` => removed `task` file type.
### Non-submodule additions
* `Assembly (x86_64)` has been manually added from https://github.com/13xforever/x86-assembly-textmate-bundle due to `git clone` recursion problems
* `Nim.sublime-syntax` has been added manually from https://github.com/getzola/zola/blob/master/sublime_syntaxes/Nim.sublime-syntax as there was no suitable Git repository for it. The original syntax seems to originate from https://github.com/Varriount/NimLime

76
assets/completions/bat.fish.in vendored Normal file

@ -0,0 +1,76 @@
# Fish Shell Completions
# Place or symlink to $XDG_CONFIG_HOME/fish/completions/{{PROJECT_EXECUTABLE}}.fish ($XDG_CONFIG_HOME is usually set to ~/.config)
# Helper function:
function __{{PROJECT_EXECUTABLE}}_autocomplete_languages --description "A helper function used by "(status filename)
{{PROJECT_EXECUTABLE}} --list-languages | awk -F':' '
{
lang=$1
split($2, exts, ",")
for (i in exts) {
ext=exts[i]
if (ext !~ /[A-Z].*/ && ext !~ /^\..*rc$/) {
print ext"\t"lang
}
}
}
' | sort
end
# Completions:
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"
complete -c {{PROJECT_EXECUTABLE}} -l config-dir -d "Display location of '{{PROJECT_EXECUTABLE}}' configuration directory" -n "not __fish_seen_subcommand_from cache"
complete -c {{PROJECT_EXECUTABLE}} -l config-file -d "Display location of '{{PROJECT_EXECUTABLE}}' configuration file" -n "not __fish_seen_subcommand_from cache"
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"
complete -c {{PROJECT_EXECUTABLE}} -s h -l help -d "Print help message" -n "not __fish_seen_subcommand_from cache"
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"
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"
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)"
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"
complete -c {{PROJECT_EXECUTABLE}} -l list-languages -d "Display list of supported languages for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
complete -c {{PROJECT_EXECUTABLE}} -l list-themes -d "Display a list of supported themes for syntax highlighting" -n "not __fish_seen_subcommand_from cache"
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"
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"
complete -c {{PROJECT_EXECUTABLE}} -l pager -x -d "<command> Specify which pager program to use (default: less)" -n "not __fish_seen_subcommand_from cache"
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"
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"
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"
complete -c {{PROJECT_EXECUTABLE}} -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"
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"
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"
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"
complete -c {{PROJECT_EXECUTABLE}} -s u -l unbuffered -d "POSIX-compliant unbuffered output. Option is ignored" -n "not __fish_seen_subcommand_from cache"
complete -c {{PROJECT_EXECUTABLE}} -s V -l version -d "Show version information" -n "not __fish_seen_subcommand_from cache"
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"
# Sub-command 'cache' completions
complete -c {{PROJECT_EXECUTABLE}} -a "cache" -d "Modify the syntax/language definition cache" -n "not __fish_seen_subcommand_from cache"
complete -c {{PROJECT_EXECUTABLE}} -l build -f -d "Parse syntaxes/language definitions into cache" -n "__fish_seen_subcommand_from cache"
complete -c {{PROJECT_EXECUTABLE}} -l clear -f -d "Reset syntaxes/language definitions to default settings" -n "__fish_seen_subcommand_from cache"

50
assets/create.sh vendored Normal file → Executable file

@ -1,5 +1,53 @@
#!/bin/bash
set -euo pipefail
ASSET_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
REPO_DIR="$ASSET_DIR/.."
bat cache --init --source="$ASSET_DIR" --target="$ASSET_DIR"
# Ensure submodules are initialized.
function update_submodules() {
local submodule
local submodule_prompt=unspecified
local submodule_path
{
while { read -r submodule && read -r submodule_path; } <&3; do
if ! [[ -d "${REPO_DIR}/.git/modules/${submodule}" ]] && [[ -d "${REPO_DIR}/${submodule_path}" ]]; then
if [[ "$submodule_prompt" = "unspecified" ]]; then
echo "One or more submodules were found to be uninitialized."
printf "Initialize and update them? [Y/n] "
read -r submodule_prompt
fi
case "$submodule_prompt" in
y|yes|'') {
git -C "$REPO_DIR" submodule update --init "$submodule_path"
};;
n|no) {
return
};;
*) {
echo "Unknown answer. Not updating submodules."
};;
esac
fi
done
} 3< <(git config --file "${REPO_DIR}/.gitmodules" --null --get-regexp path | xargs -0 printf "%s\n" | sed 's/^submodule.//;s/.path$//')
}
if [ -t 0 ]; then
update_submodules
fi
# Always remove the local cache to avoid any confusion
bat cache --clear
# TODO: Remove this (and the reverse part below) when
# https://github.com/trishume/syntect/issues/222 has been fixed
JAVADOC_FILE="${ASSET_DIR}/syntaxes/01_Packages/Java/JavaDoc.sublime-syntax"
JAVADOC_PATCH="${ASSET_DIR}/JavaDoc.sublime-syntax.patch"
patch "$JAVADOC_FILE" "$JAVADOC_PATCH"
bat cache --build --blank --source="$ASSET_DIR" --target="$ASSET_DIR"
patch -R "$JAVADOC_FILE" "$JAVADOC_PATCH"

173
assets/manual/bat.1.in vendored Normal file

@ -0,0 +1,173 @@
.TH {{PROJECT_EXECUTABLE | upcase}} "1"
.SH NAME
{{PROJECT_EXECUTABLE}} \- a cat(1) clone with syntax highlighting and Git integration.
.SH "USAGE"
.IP "{{PROJECT_EXECUTABLE}} [OPTIONS] [FILE]..."
.IP "{{PROJECT_EXECUTABLE}} cache [CACHE-OPTIONS] [--build|--clear]
.SH DESCRIPTION
{{PROJECT_EXECUTABLE}} prints the syntax-highlighted content of a collection of FILEs to the
terminal. If no FILE is specified, or when FILE is '-', it reads from standard input.
{{PROJECT_EXECUTABLE}} supports a large number of programming and markup languages.
It also communicates with git(1) to show modifications with respect to the git index.
{{PROJECT_EXECUTABLE}} automatically pipes its output through a pager (by default: less).
Whenever the output of {{PROJECT_EXECUTABLE}} goes to a non-interactive terminal, i.e. when the
output is piped into another process or into a file, {{PROJECT_EXECUTABLE}} will act as a drop-in
replacement for cat(1) and fall back to printing the plain file contents.
.SH "OPTIONS"
General remarks: Command-line options like '-l'/'--language' that take values can be specified as
either '--language value', '--language=value', '-l value' or '-lvalue'.
.HP
\fB\-A\fR, \fB\-\-show\-all\fR
.IP
Show non\-printable characters like space, tab or newline. Use '\-\-tabs' to
control the width of the tab\-placeholders.
.HP
\fB\-p\fR, \fB\-\-plain\fR
.IP
Only show plain style, no decorations. This is an alias for
\&'\-\-style=plain'. When '\-p' is used twice ('\-pp'), it also disables
automatic paging (alias for '\-\-style=plain \fB\-\-pager\fR=\fI\,never\/\fR').
.HP
\fB\-l\fR, \fB\-\-language\fR <language>
.IP
Explicitly set the language for syntax highlighting. The language can be
specified as a name (like 'C++' or 'LaTeX') or possible file extension
(like 'cpp', 'hpp' or 'md'). Use '\-\-list\-languages' to show all supported
language names and file extensions.
.HP
\fB\-H\fR, \fB\-\-highlight\-line\fR <N:M>...
.IP
Highlight the specified line ranges with a different background color For example:
.RS
.IP "\-\-highlight\-line 40"
highlights line 40
.IP "\-\-highlight\-line 30:40"
highlights lines 30 to 40
.IP "\-\-highlight\-line :40"
highlights lines 1 to 40
.IP "\-\-highlight\-line 40:"
highlights lines 40 to the end of the file
.RE
.HP
\fB\-\-tabs\fR <T>
.IP
Set the tab width to T spaces. Use a width of 0 to pass tabs through directly
.HP
\fB\-\-wrap\fR <mode>
.IP
Specify the text\-wrapping mode (*auto*, never, character). The '\-\-terminal\-width' option
can be used in addition to control the output width.
.HP
\fB\-\-terminal\-width\fR <width>
.IP
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'.
.HP
\fB\-n\fR, \fB\-\-number\fR
.IP
Only show line numbers, no other decorations. This is an alias for '\-\-style=numbers'
.HP
\fB\-\-color\fR <when>
.IP
Specify when to use colored output. The automatic mode only enables colors if an
interactive terminal is detected. Possible values: *auto*, never, always.
.HP
\fB\-\-italic\-text\fR <when>
.IP
Specify when to use ANSI sequences for italic text in the output. Possible values:
always, *never*.
.HP
\fB\-\-decorations\fR <when>
.IP
Specify when to use the decorations that have been specified via '\-\-style'. The
automatic mode only enables decorations if an interactive terminal is detected. Possible
values: *auto*, never, always.
.HP
\fB\-\-paging\fR <when>
.IP
Specify when to use the pager. To control which pager is used, set the PAGER or
BAT_PAGER environment variables (the latter takes precedence) or use the '\-\-pager'
option. To disable the pager permanently, set BAT_PAGER to an empty string or set
\&'\-\-paging=never' in the configuration file. Possible values: *auto*, never, always.
.HP
\fB\-\-pager\fR <command>
.IP
Determine which pager is used. This option will overwrite the PAGER and BAT_PAGER
environment variables. The default pager is 'less'. To disable the pager completely, use
the '\-\-paging' option. Example: '\-\-pager "less \fB\-RF\fR"'.
.HP
\fB\-m\fR, \fB\-\-map\-syntax\fR <glob-pattern:syntax-name>...
.IP
Map a glob pattern to an existing syntax name. The glob pattern is matched on the full
path and the filename. For example, to highlight *.build files with the Python syntax,
use -m '*.build:Python'. To highlight files named '.myignore' with the Git Ignore
syntax, use -m '.myignore:Git Ignore'.
.HP
\fB\-\-theme\fR <theme>
.IP
Set the theme for syntax highlighting. Use '\-\-list\-themes' to see all available themes.
To set a default theme, add the '\-\-theme="..."' option to the configuration file or
export the BAT_THEME environment variable (e.g.: export BAT_THEME="...").
.HP
\fB\-\-list\-themes\fR
.IP
Display a list of supported themes for syntax highlighting.
.HP
\fB\-\-style\fR <style\-components>
.IP
Configure which elements (line numbers, file headers, grid borders, Git modifications,
\&..) to display in addition to the file contents. The argument is a comma\-separated list
of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
To set a default style, add the '\-\-style=".."' option to the configuration file or
export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
values: *auto*, full, plain, changes, header, grid, numbers, snip.
.HP
\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
.IP
Only print the specified range of lines for each file. For example:
.RS
.IP "\-\-line\-range 30:40"
prints lines 30 to 40
.IP "\-\-line\-range :40"
prints lines 1 to 40
.IP "\-\-line\-range 40:"
prints lines 40 to the end of the file
.RE
.HP
\fB\-L\fR, \fB\-\-list\-languages\fR
.IP
Display a list of supported languages for syntax highlighting.
.HP
\fB\-u\fR, \fB\-\-unbuffered\fR
.IP
This option exists for POSIX\-compliance reasons ('u' is for 'unbuffered'). The output is
always unbuffered \- this option is simply ignored.
.HP
\fB\-h\fR, \fB\-\-help\fR
.IP
Print this help message.
.HP
\fB\-V\fR, \fB\-\-version\fR
.IP
Show version information.
.SH "POSITIONAL ARGUMENTS"
.HP
\fB<FILE>...\fR
.IP
Files to print and concatenate. Use a dash ('\-') or no argument at all to read from
standard input.
.SH "SUBCOMMANDS"
.HP
\fBcache\fR - Modify the syntax\-definition and theme cache.
.SH "FILES"
{{PROJECT_EXECUTABLE}} can also be customized with a configuration file. The location of the file
is dependent on your operating system. To get the default path for your system, call:
\fB{{PROJECT_EXECUTABLE}} --config-file\fR
Alternatively, you can use the BAT_CONFIG_PATH environment variable to point bat to a non-default
location of the configuration file.

BIN
assets/syntaxes.bin vendored

Binary file not shown.

1
assets/syntaxes/01_Packages vendored Submodule

1
assets/syntaxes/02_Extra/AWK vendored Submodule

@ -0,0 +1,283 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: AsciiDoc
comment: |
A very early hack. Mostly ripped from other syntaxes.
Only the very basic stuff is working.
file_extensions:
- adoc
- asciidoc
- asc
scope: text.html.asciidoc
contexts:
main:
- include: heading_inline
- include: heading-block
- include: heading-blockattr
- match: \$\$(?!\$)
push:
- meta_scope: comment.block.passthrough.macro.doubledollar.asciidoc
- match: \$\$(?!\$)
pop: true
- match: \+\+\+(?!\+)
push:
- meta_scope: comment.block.passthrough.macro.tripeplus.asciidoc
- match: \+\+\+(?!\+)
pop: true
- match: (//).*$\n?
scope: comment.line.double-slash.asciidoc
- match: |-
(?x)^
(?= ([/+-.*_=]{4,})\s*$
| ([ \t]{1,})
| [=]{1,6}\s*+
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
)
push:
- meta_scope: meta.block-level.asciidoc
- match: |-
(?x)^
(?! \1
| ([ \t]{1,})
| [=]{1,6}\s*+
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
)
pop: true
- include: block_quote
- include: block_raw
- include: heading_inline
- include: heading-block
- include: separator
- match: '^[ ]{0,3}([*+-])(?=\s)'
captures:
1: punctuation.definition.list_item.asciidoc
push:
- meta_scope: markup.list.unnumbered.asciidoc
- match: ^(?=\S)
captures:
1: punctuation.definition.list_item.asciidoc
pop: true
- include: list-paragraph
- match: '^[ ]{0,3}[0-9]+(\.)(?=\s)'
captures:
1: punctuation.definition.list_item.asciidoc
push:
- meta_scope: markup.list.numbered.asciidoc
- match: ^(?=\S)
captures:
1: punctuation.definition.list_item.asciidoc
pop: true
- include: list-paragraph
- match: '^([/+-.*_=]){4,}\s*$'
push:
- meta_scope: comment.block.asciidoc
- match: '^\1{4,}\s*$'
pop: true
- match: '^([/+.]){4,}\s*$'
comment: asciidoc formatting is disabled inside certain blocks.
push:
- meta_scope: meta.disable-asciidoc
- match: '^[/+.]{4,}\s*$'
pop: true
- match: '^(?=\S)(?![=-]{3,}(?=$))(?!\.\S+)'
push:
- meta_scope: meta.paragraph.asciidoc
- match: '^(?:\s*$|(?=[ ]{,3}>.))|(?=[ \t]*\n)(?<=^===|^====|=====|^---|^----|-----)[ \t]*\n'
pop: true
- include: inline
- include: scope:text.html.basic
- match: '^(={3,})(?=[ \t]*$)'
scope: markup.heading.0.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(-{3,})(?=[ \t]*$)'
scope: markup.heading.1.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(~{3,})(?=[ \t]*$)'
scope: markup.heading.2.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(\^{3,})(?=[ \t]*$)'
scope: markup.heading.3.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(\+{3,})(?=[ \t]*$)'
scope: markup.heading.4.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
attribute-entry:
- match: '^:[-_. A-Za-z0-9]+:\s*(.*)\s*$'
scope: variable.other
attribute-reference:
- match: "{[-_. A-Za-z0-9]+}"
scope: variable.other
attribute-reference-predefined:
- 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)}"
scope: support.variable
block_quote:
- match: '^([/+-.*_=]){4,}\s*$'
push:
- meta_scope: comment.block.asciidoc
- match: '^\1{4,}\s*$'
pop: true
block_raw:
- match: '\G([ ]{4}|\t).*$\n?'
scope: markup.raw.block.asciidoc
bracket:
- match: '<(?![a-z/?\$!])'
comment: |
asciidoc will convert this for us. We match it so that the
HTML grammar will not mark it up as invalid.
scope: meta.other.valid-bracket.asciidoc
character-replacements:
- match: \(C\)|\(R\)|\(TM\)|--(?!-)|\.\.\.(?!\.)|->|<-|=>|<=
scope: constant.character.asciidoc
escape:
- match: '\\[-`*_#+.!(){}\[\]\\>:]'
scope: constant.character.escape.asciidoc
heading:
- match: '(?m)^(\S+)$([=-~^+])+\s*$'
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading-block:
- match: ^\.(\w.*)$
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading-blockattr:
- match: '^\[\[?(\w.*)\]$'
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading_inline:
- match: '\G(={1,6})(?!=)\s*(?=\S)'
captures:
1: punctuation.definition.heading.asciidoc
push:
- meta_scope: markup.heading.asciidoc
- meta_content_scope: entity.name.section.asciidoc
- match: \s*(=*)$\n?
captures:
1: punctuation.definition.heading.asciidoc
pop: true
- include: inline
inline:
- include: line-break
- include: line-page-break
- include: line-ruler
- include: escape
- include: passthrough-macro-trippleplus-inline
- include: passthrough-macro-doubledollar-inline
- include: character-replacements
- include: bracket
- include: raw
- include: text-quote-single
- include: text-quote-double
- include: text-quote-other
- include: text-bold-unconstrained
- include: text-italic-unconstrained
- include: text-monospace-unconstrained
- include: text-unquoted-unconstrained
- include: text-bold
- include: text-italic
- include: text-monospace
- include: text-unquoted
- include: attribute-entry
- include: attribute-reference-predefined
- include: attribute-reference
line-break:
- match: (?<=\S)\s+\+$
scope: constant.character.escape.asciidoc
line-page-break:
- match: "^<{3,}$"
scope: constant.character.escape.asciidoc
line-ruler:
- match: "^'{3,}$"
scope: constant.character.escape.asciidoc
list-paragraph:
- match: \G\s+(?=\S)
push:
- meta_scope: meta.paragraph.list.asciidoc
- match: ^\s*$
pop: true
- include: inline
passthrough-macro-doubledollar-inline:
- match: '(?:\[.*\])?\$\$(?!\$).+\$\$(?!\$)'
scope: comment.block.passthrough.asciidoc
passthrough-macro-trippleplus-inline:
- match: '(?:\[.*\])?\+\+\+(?!\+).+\+\+\+(?!\+)'
scope: comment.block.passthrough.asciidoc
raw:
- match: '(`+)(?:[^`]|(?!(?<!`)\1(?!`))`)*+(\1)'
scope: markup.raw.inline.asciidoc
captures:
1: punctuation.definition.raw.asciidoc
2: punctuation.definition.raw.asciidoc
separator:
- match: '\G[ ]{,3}([-*_])([ ]{,2}\1){2,}[ \t]*$\n?'
scope: meta.separator.asciidoc
text-bold:
- match: (?<!\w)(\*)(?=\S)
captures:
1: punctuation.definition.bold.asciidoc
push:
- meta_scope: markup.bold.asciidoc
- match: (?<=\S)(\1)(?!\w)
captures:
1: punctuation.definition.bold.asciidoc
pop: true
text-bold-unconstrained:
- match: (\*\*)(?=\S)
captures:
1: punctuation.definition.bold.asciidoc
push:
- meta_scope: markup.bold.asciidoc
- match: (?<=\S)(\1)
captures:
1: punctuation.definition.bold.asciidoc
pop: true
text-italic:
- match: (?<!\w)('|_)(?=\S)
captures:
1: punctuation.definition.italic.asciidoc
push:
- meta_scope: markup.italic.asciidoc
- match: (?<=\S)(\1)((?!\1)|(?=\1\1))(?!\w)
captures:
1: punctuation.definition.italic.asciidoc
pop: true
text-italic-unconstrained:
- match: (__)(?=\S)
captures:
1: punctuation.definition.italic.asciidoc
push:
- meta_scope: markup.italic.asciidoc
- match: (?<=\S)(\1)
captures:
1: punctuation.definition.italic.asciidoc
pop: true
text-monospace:
- match: '(?<!\w)([\+`])[^\+]*(\1)(?!\w)'
scope: string.interpolated.asciidoc
text-monospace-unconstrained:
- match: (\+\+).*(\1)
scope: string.interpolated.asciidoc
text-quote-double:
- match: '(?<!\w)(?:\[.*\])?``(?!`).*''''(?!'')(?!\w)'
scope: string.quoted.double.asciidoc
text-quote-other:
- match: '(?<!\w)(?:\[.*\])?([~^]).*(\1)(?!\w)'
scope: string.quoted.single.asciidoc
text-quote-single:
- match: '(?<!\w)(?:\[.*\])?`(?!`).*''(?!'')(?!\w)'
comment: "TODO: Sub- and Superscript are really unconstrained"
scope: string.quoted.single.asciidoc
text-unquoted:
- match: (?<!\w)(#).*(\1)(?!\w)
scope: string.unquoted.asciidoc
text-unquoted-unconstrained:
- match: (##).*(\1)
scope: string.unquoted.asciidoc

@ -0,0 +1,172 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: ARM Assembly
file_extensions:
- s
- S
scope: source.asm.arm
contexts:
main:
- match: "@.*$"
scope: comment.line
- match: //.*$
scope: comment.line
- match: ;.*$
scope: comment.line
- match: ^\s*\#\s*if\s+0\b
push:
- meta_scope: comment.preprocessor
- match: ^\s*\#\s*endif\b
pop: true
- match: /\*
push:
- meta_scope: comment.block
- match: \*/
pop: true
- match: |-
(?x)
^\s*\#\s*(define)\s+ # define
((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name
(?: # and optionally:
(\() # an open parenthesis
(
\s* \g<id> \s* # first argument
((,) \s* \g<id> \s*)* # additional arguments
(?:\.\.\.)? # varargs ellipsis?
)
(\)) # a close parenthesis
)?
captures:
1: keyword.control.import.define.c
2: entity.name.function.preprocessor.c
4: punctuation.definition.parameters.c
5: variable.parameter.preprocessor.c
7: punctuation.separator.parameters.c
8: punctuation.definition.parameters.c
push:
- meta_scope: meta.preprocessor.macro.c
- match: (?=(?://|/\*))|$
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- include: $top_level_main
- match: ^\s*#\s*(error|warning)\b
captures:
1: keyword.control.import.error.c
push:
- meta_scope: meta.preprocessor.diagnostic.c
- match: $
captures:
1: keyword.control.import.error.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: ^\s*#\s*(include|import)\b\s+
captures:
1: keyword.control.import.include.c
push:
- meta_scope: meta.preprocessor.c.include
- match: (?=(?://|/\*))|$
captures:
1: keyword.control.import.include.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: '"'
captures:
0: punctuation.definition.string.begin.c
push:
- meta_scope: string.quoted.double.include.c
- match: '"'
captures:
0: punctuation.definition.string.end.c
pop: true
- match: <
captures:
0: punctuation.definition.string.begin.c
push:
- meta_scope: string.quoted.other.lt-gt.include.c
- match: ">"
captures:
0: punctuation.definition.string.end.c
pop: true
- match: '((?i)([xw][0-9]|[xw]1[0-9]||[xw]2[0-9]|[wx]30|wzr|xzr|wsp|fpsr|fpcr|[rcp]1[0-5]|[rcp][0-9]|a[1-4]|v[1-8]|sl|sb|fp|ip|sp|lr|(c|s)psr(_c)?|pc|[sd]3[0-1]|[sd][12][0-9]|[sd][0-9]|fpsid|fpscr|fpexc|q3[0-1]|q2[0-9]|q1[0-9]|q[0-9]|APSR_nzcv|sy)!?(?-i))?\b'
scope: storage.other.register
- match: \.(?i)(globl|global|macro|endm|purgem|if|elseif|else|endif|section|text|arm|align|balign|irp|rept|endr|req|unreq|error|short|func|endfunc|hidden|type|fpu|arch|code|altmacro|object_arch|word|int|string)(?-i)\b
scope: keyword.control.directive
- match: armv(2a?|3m?|4t?|5t?e?6(j|t2|zk?|-m)?|7v?e?(-(a|r|m))?|8-a(\+crc)?)
scope: keyword.control.arch.arm
- match: ^\s*#\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\b
captures:
1: keyword.control.import.c
push:
- meta_scope: meta.preprocessor.c
- match: (?=(?://|/\*))|$
captures:
1: keyword.control.import.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: |-
(?x)\b((?i)
(
(bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?) |
(v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))* |
(and|m(rs|sr)|eor|sub|rsb|add|adc|sbc|rsc|tst|teq|cmp|cmn|orr|mov|bic|mvn |
(neg) |
(lsr|lsl|ror|asr) # shift ops either pseudo ops or actual shifts
)s? |
(mul|mla|mull|smlabb) |
(mov(w|t)) |
rev(8|16)? |
(pld|adr|adrl|vswp)
)
(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\b
scope: support.function.mnemonic.arithmetic
- match: |-
(?x)\b((?i)(
swi|svc|wfi|
dmb | clrex | dsb | isb |
v(ldr|str|push|pop) |
(push|pop) |
(st|ld)(
p |
r(ex|s?(h|b)|d)? |
m(
(f|e)(d|a) |
(d|i)(b|a)
)?
) |
b(l|x|lx|lr|r)? |
(i|e)?ret|
b\.(eq|ne|hs|cs|lo|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)+ |
(c|t)?bn?z|
)+(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))\b
scope: support.function.mnemonic.memory
- match: '\b((?i)(def(b|w|s)|equ|(include|get)(\s+([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*?)\.s)?)?(?-i))\b'
scope: meta.preprocessor.c.include
- match: \b((?i)(align)(?-i))?\b
scope: storage.type.c.memaccess
- match: \s+\".+\"
scope: string
- match: \b((?i)nop(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\b
scope: comment.nop
- match: '\s\['
push:
- meta_scope: storage.type.c.memaccess
- match: '\]'
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- include: $top_level_main
- match: (\b|\s+)\=\b
scope: keyword.control.evaluation
- match: '(\b|\s+)(\#)?-?(0x|&)[0-9a-fA-F_]+\b'
scope: constant.numeric.hex
- match: '(\b|\s+)\#-?[0-9a-zA-Z_]+\b'
scope: constant.numeric.literal
- match: '(\b|\s+)[0-9]+\b'
scope: constant.numeric.dec
- match: '\b([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*)\b'
scope: meta.function.source.arm.label

File diff suppressed because it is too large Load Diff

1
assets/syntaxes/02_Extra/CSV vendored Submodule

@ -0,0 +1,46 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Advanced CSV
file_extensions:
- csv
- tsv
scope: text.advanced_csv
contexts:
main:
- match: (\")
captures:
1: string.quoted.double.advanced_csv
push:
- meta_scope: meta.quoted.advanced_csv
- match: (\")
captures:
1: string.quoted.double.advanced_csv
pop: true
- include: main
- match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)'
captures:
1: keyword.operator.advanced_csv
2: constant.numeric.formula.advanced_csv
4: constant.numeric.formula.advanced_csv
6: constant.numeric.formula.advanced_csv
8: constant.numeric.formula.advanced_csv
9: keyword.operator.advanced_csv
10: keyword.operator.advanced_csv
push:
- meta_scope: meta.range.advanced_csv
- match: (?=(\")|$)
pop: true
- include: scope:source.python
- match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")'
scope: meta.number.advanced_csv
captures:
1: constant.numeric.advanced_csv
- match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")'
scope: meta.nonnumber.advanced_csv
captures:
1: storage.type.advanced_csv
- match: (\,)
scope: meta.delimiter.advanced_csv
captures:
1: keyword.operator.advanced_csv

@ -0,0 +1,47 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Cabal
file_extensions:
- cabal
scope: source.cabal
contexts:
main:
- match: ^(\s*)(exposed-modules):$
captures:
2: constant.other.cabal
push:
- meta_scope: exposed.modules.cabal
- match: ^(?!\1\s)
pop: true
- include: module_name
- match: ^(\s*)(build-depends):$
captures:
2: constant.other.cabal
push:
- meta_scope: exposed.modules.cabal
- match: ^(?!\1\s)
pop: true
- match: "([<>=]+)|([&|]+)"
scope: keyword.operator.haskell
- match: ((\d+|\*)\.)*(\d+|\*)
scope: constant.numeric.haskell
- match: '([\w\-]+)'
scope: support.function.haskell
- match: '^\s*([a-zA-Z_-]+)(:)\s+'
scope: entity.cabal
captures:
1: constant.other.cabal
2: punctuation.entity.cabal
- match: '^(?i)(executable|library|test-suite|benchmark|flag|source-repository|custom-setup)\s+([^\s,]+)\s*$'
scope: entity.cabal
captures:
1: keyword.entity.cabal
2: string.cabal
- match: ^(?i)library\s*$
scope: keyword.entity.cabal
- match: "--.*$"
scope: comment.cabal
module_name:
- match: '([A-Z][A-Za-z_''0-9]*)(\.[A-Z][A-Za-z_''0-9]*)*'
scope: storage.module.haskell

@ -0,0 +1,271 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: CoffeeScript
comment: "CoffeeScript Syntax: version 1"
file_extensions:
- coffee
- Cakefile
- coffee.erb
- cson
first_line_match: ^#!.*\bcoffee
scope: source.coffee
contexts:
main:
- match: '(\([^()]*?\))\s*([=-]>)'
comment: "match stuff like: a -> …"
scope: meta.inline.function.coffee
captures:
1: variable.parameter.function.coffee
2: storage.type.function.coffee
- match: (new)\s+(\w+(?:\.\w*)*)
scope: meta.class.instance.constructor
captures:
1: keyword.operator.new.coffee
2: support.class.coffee
- match: "'''"
captures:
0: punctuation.definition.string.begin.coffee
push:
- meta_scope: string.quoted.heredoc.coffee
- match: "'''"
captures:
0: punctuation.definition.string.end.coffee
pop: true
- match: '"""'
captures:
0: punctuation.definition.string.begin.coffee
push:
- meta_scope: string.quoted.double.heredoc.coffee
- match: '"""'
captures:
0: punctuation.definition.string.end.coffee
pop: true
- match: \\.
scope: constant.character.escape.coffee
- include: interpolated_coffee
- match: "`"
captures:
0: punctuation.definition.string.begin.coffee
push:
- meta_scope: string.quoted.script.coffee
- match: "`"
captures:
0: punctuation.definition.string.end.coffee
pop: true
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
scope: constant.character.escape.coffee
- match: (?<!#)###(?!#)
captures:
0: punctuation.definition.comment.coffee
push:
- meta_scope: comment.block.coffee
- match: '###(?:[ \t]*\n)'
captures:
0: punctuation.definition.comment.coffee
pop: true
- match: '@\w*'
scope: storage.type.annotation.coffeescript
- match: '(#)(?!\{).*$\n?'
scope: comment.line.number-sign.coffee
captures:
1: punctuation.definition.comment.coffee
- match: "/{3}"
push:
- meta_scope: string.regexp.coffee
- match: "/{3}[imgy]{0,4}"
pop: true
- include: interpolated_coffee
- include: embedded_comment
- match: '/(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])'
scope: string.regexp.coffee
- match: |-
(?x)
\b(?<![\.\$])(
break|by|catch|continue|else|finally|for|in|of|if|return|switch|
then|throw|try|unless|when|while|until|loop|do|(?<=for)\s+own
)(?!\s*:)\b
scope: keyword.control.coffee
- match: |-
(?x)
and=|or=|!|%|&|\^|\*|\/|(\-)?\-(?!>)|\+\+|\+|~|==|=(?!>)|!=|<=|>=|<<=|>>=|
>>>=|<>|<|>|!|&&|\.\.(\.)?|\?|\||\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|
\^=|\b(?<![\.\$])(instanceof|new|delete|typeof|and|or|is|isnt|not|super)\b
scope: keyword.operator.coffee
- match: '([a-zA-Z\$_](\w|\$|\.)*\s*(?!\::)((:)|(=[^=]))(?!(\s*\(.*\))?\s*((=|-)>)))'
scope: variable.assignment.coffee
captures:
1: variable.assignment.coffee
4: punctuation.separator.key-value
5: keyword.operator.coffee
- match: '(?<=\s|^)([\[\{])(?=.*?[\]\}]\s+[:=])'
captures:
0: keyword.operator.coffee
push:
- meta_scope: meta.variable.assignment.destructured.coffee
- match: '([\]\}]\s*[:=])'
captures:
0: keyword.operator.coffee
pop: true
- include: variable_name
- include: instance_variable
- include: single_quoted_string
- include: double_quoted_string
- include: numeric
- match: |-
(?x)
(\s*)
(?=[a-zA-Z\$_])
(
[a-zA-Z\$_](\w|\$|:|\.)*\s*
(?=[:=](\s*\(.*\))?\s*([=-]>))
)
scope: meta.function.coffee
captures:
2: entity.name.function.coffee
3: entity.name.function.coffee
4: variable.parameter.function.coffee
5: storage.type.function.coffee
- match: ^\s*(describe|it|app\.(get|post|put|all|del|delete))
comment: Show well-known functions from Express and Mocha in Go To Symbol view
push:
- meta_scope: meta.function.symbols.coffee
- match: $
pop: true
- include: main
- match: "[=-]>"
scope: storage.type.function.coffee
- match: '\b(?<!\.)(true|on|yes)(?!\s*[:=])\b'
scope: constant.language.boolean.true.coffee
- match: '\b(?<!\.)(false|off|no)(?!\s*[:=])\b'
scope: constant.language.boolean.false.coffee
- match: '\b(?<!\.)null(?!\s*[:=])\b'
scope: constant.language.null.coffee
- match: '\b(?<!\.)(this|extends)(?!\s*[:=])\b'
scope: variable.language.coffee
- match: '(class\b)\s+(@?[a-zA-Z\$_][\w\.]*)?(?:\s+(extends)\s+(@?[a-zA-Z\$\._][\w\.]*))?'
scope: meta.class.coffee
captures:
1: storage.type.class.coffee
2: entity.name.type.class.coffee
3: keyword.control.inheritance.coffee
4: entity.other.inherited-class.coffee
- match: \b(debugger|\\)\b
scope: keyword.other.coffee
- match: |-
(?x)\b(
Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function|
Int(8|16|32|64)Array|Math|Map|Number|
Object|Proxy|RegExp|Set|String|WeakMap|
window|Uint(8|16|32|64)Array|XMLHttpRequest
)\b
scope: support.class.coffee
- match: ((?<=console\.)(debug|warn|info|log|error|time|timeEnd|assert))\b
scope: support.function.console.coffee
- match: |-
(?x)\b(
decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require
)\b
scope: support.function.coffee
- match: |-
(?x)((?<=\.)(
apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|
isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|
reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|
unshift|valueOf
))\b
scope: support.function.method.array.coffee
- match: |-
(?x)((?<=Array\.)(
isArray
))\b
scope: support.function.static.array.coffee
- match: |-
(?x)((?<=Object\.)(
create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|
getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|
isnt|keys|preventExtensions|seal
))\b
scope: support.function.static.object.coffee
- match: |-
(?x)((?<=Math\.)(
abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|
hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|
tan|tanh|trunc
))\b
scope: support.function.static.math.coffee
- match: |-
(?x)((?<=Number\.)(
is(Finite|Integer|NaN)|toInteger
))\b
scope: support.function.static.number.coffee
- match: \b(Infinity|NaN|undefined)\b
scope: constant.language.coffee
- match: \;
scope: punctuation.terminator.statement.coffee
- match: ',[ |\t]*'
scope: meta.delimiter.object.comma.coffee
- match: \.
scope: meta.delimiter.method.period.coffee
- match: '\{|\}'
scope: meta.brace.curly.coffee
- match: \(|\)
scope: meta.brace.round.coffee
- match: '\[|\]\s*'
scope: meta.brace.square.coffee
- include: instance_variable
- include: single_quoted_string
- include: double_quoted_string
- include: numeric
double_quoted_string:
- match: '"'
captures:
0: punctuation.definition.string.begin.coffee
push:
- meta_scope: string.quoted.double.coffee
- match: '"'
captures:
0: punctuation.definition.string.end.coffee
pop: true
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)'
scope: constant.character.escape.coffee
- include: interpolated_coffee
embedded_comment:
- match: (?<!\\)(#).*$\n?
scope: comment.line.number-sign.coffee
captures:
1: punctuation.definition.comment.coffee
instance_variable:
- match: '(@)([a-zA-Z_\$]\w*)?'
scope: variable.other.readwrite.instance.coffee
interpolated_coffee:
- match: '\#\{'
captures:
0: punctuation.section.embedded.coffee
push:
- meta_scope: source.coffee.embedded.source
- match: '\}'
captures:
0: punctuation.section.embedded.coffee
pop: true
- include: main
numeric:
- match: '(?<!\$)\b((0([box])[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?))\b'
scope: constant.numeric.coffee
single_quoted_string:
- match: "'"
captures:
0: punctuation.definition.string.begin.coffee
push:
- meta_scope: string.quoted.single.coffee
- match: "'"
captures:
0: punctuation.definition.string.end.coffee
pop: true
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)'
scope: constant.character.escape.coffee
variable_name:
- match: '([a-zA-Z\$_]\w*(\.\w+)*)'
scope: variable.assignment.coffee
captures:
1: variable.assignment.coffee

@ -0,0 +1,14 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: CpuInfo
file_extensions:
- cpuinfo
scope: source.cpuinfo
contexts:
main:
- match: '^([^:]+)\w*:\w*(.*)$'
captures:
1: keyword.other.cpuinfo-key
2: string.other.cpuinfo-value

File diff suppressed because it is too large Load Diff

@ -0,0 +1,369 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Dart
file_extensions:
- dart
scope: source.dart
contexts:
main:
- match: ^(#!.*)$
scope: meta.preprocessor.script.dart
- match: ^\s*\b(library|import|export|part of|part)\b
captures:
0: keyword.other.import.dart
push:
- meta_scope: meta.declaration.dart
- match: ;
captures:
0: punctuation.terminator.dart
pop: true
- include: strings
- match: \b(as|show|hide|deferred)\b
scope: keyword.other.import.dart
- include: comments
- include: constants-and-special-vars
- include: annotations
- include: decl-typedef
- include: decl-class
- include: decl-enum
- include: decl-function
- include: keywords
- include: strings
annotations:
- match: '^(?:\s*)((@)([a-zA-Z0-9_]+))'
captures:
1: annotation.dart
2: entity.name.function.annotation.dart
3: support.type.dart
comments:
- match: /\*\*/
scope: comment.block.empty.dart
captures:
0: punctuation.definition.comment.dart
- include: comments-inline
comments-inline:
- match: /\*
push:
- meta_scope: comment.block.dart
- match: \*/
pop: true
- include: scope:text.dart-doccomments
- match: (///)
captures:
1: marker.dart
push:
- meta_scope: comment.line.triple-slash.dart
- match: $
pop: true
- include: scope:text.dart-doccomments
- match: (//)
captures:
1: marker.dart
push:
- meta_scope: comment.line.double-slash.dart
- match: $
pop: true
- include: scope:text.dart-doccomments
constants-and-special-vars:
- match: \b(true|false|null)\b
scope: constant.language.dart
- match: \b(this|super)\b
scope: variable.language.dart
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
scope: constant.numeric.dart
decl-class:
- match: \bclass\b
captures:
0: keyword.control.new.dart
push:
- meta_scope: meta.declaration.class.dart
- match: "(?={)"
pop: true
- include: keywords
- match: "[A-Za-z_][A-Za-z0-9_]*"
scope: class.name.dart
decl-enum:
- match: \benum\b
captures:
0: keyword.declaration.dart
push:
- meta_scope: meta.declaration.enum.dart
- match: "(?={)"
pop: true
- include: keywords
- match: "[A-Za-z_][A-Za-z0-9_]*"
scope: enum.name.dart
decl-function:
- match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(get)\s+(\w+)\s+(?==>)
comment: A getter with a primitive return type.
scope: meta.declaration.function.dart
captures:
1: storage.type.primitive.dart
2: keyword.declaration.dart
3: function.name.dart
- match: ^\s*(?:\b(\w+)\b\s+)?(get)\s+(\w+)\s+(?==>)
comment: A getter with a user-defined return type or no return type.
scope: meta.declaration.function.dart
captures:
1: type.user-defined.dart
2: keyword.declaration.dart
3: function.name.dart
- match: ^\s*(set)\s+(\w+)(?=\()
comment: A setter.
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.declaration.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
comment: A function with a primitive return type.
captures:
1: storage.type.primitive.dart
2: function.name.dart
push:
- meta_scope: meta.declaration.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*(?:\b(return)\b)\s+(\w+)(?=\()
comment: A function invocation after 'return'
captures:
1: keyword.control.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*\b(new)\b\s+(\w+)(?=\()
comment: A class instantiation after 'new'
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
decl-function-parameter:
- include: constants-and-special-vars
- match: (?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
comment: A function with a primitive return type.
captures:
1: storage.type.primitive.dart
2: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: \b(new)\b\s+(\w+)(?=\()
comment: A class instantiation after 'new'
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: (?:\b(\w+)\b)\s+(\w+)(?=\()
comment: A function with a user-defined return type.
captures:
1: type.user-defined.dart
2: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: (\w+)(?=\()
comment: A function with no return type.
captures:
1: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
decl-typedef:
- match: typedef
captures:
0: keyword.control.new.dart
push:
- meta_scope: meta.declaration.typedef.dart
- match: ;
captures:
0: punctuation.terminator.dart
pop: true
- 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_]+)'
captures:
1: storage.type.primitive.dart
2: typedef.return.dart
3: typedef.name.dart
- match: \(
push:
- meta_scope: typedef.params.dart
- match: \)
pop: true
- include: keywords
keywords:
- match: \bassert\b
scope: keyword.control.assert.dart
- match: \bas\b
scope: keyword.cast.dart
- match: \b(try|catch|finally|throw|on|rethrow)\b
scope: keyword.control.catch-exception.dart
- match: \s+\?\s+|\s+:\s+
scope: keyword.control.ternary.dart
- match: \b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b
scope: keyword.control.dart
- match: \b(async\*|async|await\*|await|yield)\b
scope: keyword.control.async.dart
- match: \b(new)\b
scope: keyword.control.new.dart
- match: \b(abstract|extends|external|factory|implements|with|interface|get|native|operator|set|typedef)\b
scope: keyword.declaration.dart
- match: \b(is\!?)\b
scope: keyword.operator.dart
- match: (<<|>>>?|~|\^|\||&)
scope: keyword.operator.bitwise.dart
- match: ((&|\^|\||<<|>>>?)=)
scope: keyword.operator.assignment.bitwise.dart
- match: (===?|!==?|<=?|>=?)
scope: keyword.operator.comparison.dart
- match: '(([+*/%-]|\~)=)'
scope: keyword.operator.assignment.arithmetic.dart
- match: (=)
scope: keyword.operator.assignment.dart
- match: (\-\-|\+\+)
scope: keyword.operator.increment-decrement.dart
- match: (\-|\+|\*|\/|\~\/|%)
scope: keyword.operator.arithmetic.dart
- match: (!|&&|\|\|)
scope: keyword.operator.logical.dart
- match: ;
scope: punctuation.terminator.dart
- match: \b(static|final|const)\b
scope: storage.modifier.dart
- match: \b(?:void|bool|num|int|double|dynamic|var|String|List|Map)\b
scope: storage.type.primitive.dart
regexp:
- match: '\\[^''"]'
scope: constant.character.escaped.regex.dart
- match: \(
push:
- meta_content_scope: meta.capture.regex.dart
- match: \)
pop: true
- match: \?(:|=|!)
scope: ignore.capture.regex.dart
- match: \*|\+|\?|\.|\|
scope: keyword.other.regex.dart
- match: \^|\$
scope: keyword.other.regex.dart
- match: \.
scope: constant.other.regex.dart
- match: '\[(\^)?'
captures:
1: keyword.other.negation.regex.dart
push:
- meta_scope: constant.character.range.regex.dart
- match: '\]'
pop: true
- match: '\\[^"'']'
scope: constant.character.escaped.regex.dart
- match: '\{(?:\d+)?,(?:\d+)?\}'
scope: keyword.other.regex.dart
string-interp:
- match: '(\$)(\{)'
captures:
1: keyword.other.dart
2: keyword.other.dart
push:
- meta_scope: interpolation.dart
- meta_content_scope: source.dart
- match: '(\})'
captures:
1: keyword.other.dart
pop: true
- include: main
- match: (\$)(\w+)
captures:
1: keyword.other.dart
2: variable.parameter.dart
- match: \\.
scope: constant.character.escape.dart
strings:
- match: (?<!r)"""
push:
- meta_scope: string.interpolated.triple.double.dart
- match: '"""(?!")'
pop: true
- include: string-interp
- match: (?<!r)'''
push:
- meta_scope: string.interpolated.triple.single.dart
- match: "'''(?!')"
pop: true
- include: string-interp
- match: r"""
push:
- meta_scope: string.quoted.triple.double.dart
- match: '"""(?!")'
pop: true
- match: r'''
push:
- meta_scope: string.quoted.triple.single.dart
- match: "'''(?!')"
pop: true
- match: (?<!\\|r)"
push:
- meta_scope: string.interpolated.double.dart
- match: '"'
pop: true
- match: \n
scope: invalid.string.newline
- include: string-interp
- match: r"
push:
- meta_scope: string.quoted.double.dart
- match: '"'
pop: true
- include: regexp
- match: (?<!\|r)'
push:
- meta_scope: string.interpolated.single.dart
- match: "'"
pop: true
- include: string-interp
- match: r'
push:
- meta_scope: string.quoted.single.dart
- match: "'"
pop: true
- include: regexp

@ -0,0 +1,91 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: DotENV
file_extensions:
- .env
- .envrc
- .env.dist
- .env.local
- .env.sample
- .env.example
- .env.test
- .env.test.local
- .env.testing
- .env.dev
- .env.development
- .env.development.local
- .env.prod
- .env.production
- .env.production.local
- .env.dusk.local
- .flaskenv
- .env.staging
scope: source.env
contexts:
main:
- match: (#).*$\n?
comment: "Comments - starts with #"
scope: comment.line.number-sign.env
captures:
1: punctuation.definition.comment.env
- match: (\")
comment: Strings (double)
captures:
1: punctuation.definition.string.begin.env
push:
- meta_scope: string.quoted.double.env
- match: (\")
captures:
1: punctuation.definition.string.end
pop: true
- include: interpolation
- include: variable
- include: escape-characters
- match: (\')
comment: Strings (single)
captures:
1: punctuation.definition.string.begin.env
push:
- meta_scope: string.quoted.single.env
- match: (\')
captures:
1: punctuation.definition.string.end
pop: true
- match: '(?<=[\w])\s?='
comment: Assignment Operator
scope: keyword.operator.assignment.env
- match: '([\w]+)(?=\s?\=)'
comment: Variable
scope: variable.other.env
- match: (?i)\s?(export)
comment: Keywords
scope: keyword.other.env
- match: (?i)(?<=\=)\s?(true|false|null)
comment: Constants
scope: constant.language.env
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
comment: Numeric
scope: constant.numeric.env
escape-characters:
- match: '\\[nrt\\\$\"\'']'
scope: constant.character.escape.env
interpolation:
- match: '(\$\{|\{)'
comment: 'Template Syntax: "foo ${bar} {$baz}"'
captures:
1: string.interpolated.env keyword.other.template.begin.env
push:
- match: '(\})'
captures:
1: string.interpolated.env keyword.other.template.end.env
pop: true
- match: '(?x)(\$+)?([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
captures:
1: punctuation.definition.variable.env variable.other.env
2: variable.other.env
variable:
- match: '(?x)(\$+)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
captures:
1: punctuation.definition.variable.env variable.other.env
2: variable.other.env

1
assets/syntaxes/02_Extra/Elm vendored Submodule

@ -0,0 +1,133 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: fstab
file_extensions:
- fstab
scope: source.fstab
contexts:
main:
- include: comment
- match: '^'
push: fstab_device
comment: leading spaces
fstab_device:
- include: comment
- match: '\s*([^=\s]+=)([^\s]+)\s*'
comment: device by uuid or label
set: fstab_mountpoint
captures:
1: punctuation.accessor
2: keyword.other.device
- match: '\s*(//|\\\\)([^\s]+)\s*'
comment: device by samba share
set: fstab_mountpoint
captures:
1: punctuation.accessor
2: keyword.other.device
- match: '\s*([^\s]+)(:)([^\s]+)\s*'
comment: device by server
set: fstab_mountpoint
captures:
1: keyword.other.device
2: punctuation.accessor
3: keyword.other.device
- match: '\s*[^\s/\\]+\s*'
comment: device by dev name
set: fstab_mountpoint
scope: keyword.other.device
- match: '\s*(/dev/)([^\s]+)\s*'
comment: device by dev path
set: fstab_mountpoint
captures:
1: punctuation.accessor
2: keyword.other.device
- match: '\s*([^\s/]*/)*([^\s]+)\s*'
comment: device by unknown path
set: fstab_mountpoint
captures:
1: punctuation.accessor
2: keyword.other.device
- include: clear
fstab_mountpoint:
- include: comment
- match: '\s*/[^\s]*\s*'
comment: mount point
set: fstab_filesystem
scope: string.unquoted.mountpoint
- match: '\s*[^\s]+\s*'
comment: mount point without leading slash (invalid)
set: fstab_filesystem
scope: invalid.illegal
- include: clear
fstab_filesystem:
- include: comment
- match: '\s*[^\s]+\s*'
comment: filesystem type
set: fstab_options
scope: variable.parameter.filesystem
- include: clear
fstab_options:
- include: comment
- match: '([^\s,=]+)(=)([^\s,]+)'
comment: key-value option
captures:
1: entity.name.option
2: entity.other.separator
3: variable.parameter
- match: '[^\s,]+'
comment: flag option
scope: entity.name.option
- match: ','
comment: option separator
scope: punctuation.separator
- match: '\s+'
comment: next field
set: fstab_dump
- include: clear
fstab_dump:
- include: comment
- match: '\s*[01]\s*'
comment: dump field
scope: constant.numeric
set: fstab_pass
- match: '\s*[^\s]+\s*'
comment: invalid dump field
scope: invalid.illegal
set: fstab_pass
- include: clear
fstab_pass:
- include: comment
- match: '\s*[01]\s*'
comment: pass field
scope: constant.numeric
set: expected_eol
- match: '\s*[^\s]+\s*'
comment: invalid pass field
scope: invalid.illegal
set: expected_eol
- include: clear
expected_eol:
- include: comment
- include: clear
- match: '.*'
scope: invalid.illegal
comment:
- match: '\s*#.*$'
comment: comment using the number sign
scope: comment.line
clear:
- match: '.*$'
comment: used for clearing the context
pop: true

@ -0,0 +1,48 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: group
file_extensions:
- group
scope: source.group
contexts:
main:
- comment: name
match: ^[^:]+
scope: keyword
- comment: password
match: ":"
push: password
password:
- comment: uid
match: ":"
set: gid
- comment: shadowpassword
match: "[^:]+"
scope: invalid
gid:
- comment: gid
match: ":"
set: users
- comment: number
match: "[0-9]+"
scope: constant.numeric
users:
- comment: newline
match: "\n"
pop: true
- comment: directory
match: "[^:\n]+"
scope: variable.parameter
- comment: separator
match: ","
scope: punctuation

@ -0,0 +1,662 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: HTML (Twig)
file_extensions:
- twig
- html.twig
scope: text.html.twig
contexts:
main:
- match: '(<)([a-zA-Z0-9:]++)(?=[^>]*></\2>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.html
push:
- meta_scope: meta.tag.any.html
- match: (>(<)/)(\2)(>)
captures:
1: punctuation.definition.tag.html
2: meta.scope.between-tag-pair.html
3: entity.name.tag.html
4: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (<\?)(xml)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.xml.html
push:
- meta_scope: meta.tag.preprocessor.xml.html
- match: (\?>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.xml.html
pop: true
- include: tag-generic-attribute
- include: string-double-quoted
- include: string-single-quoted
- match: <!--
captures:
0: punctuation.definition.comment.html
push:
- meta_scope: comment.block.html
- match: '--\s*>'
captures:
0: punctuation.definition.comment.html
pop: true
- match: "--"
scope: invalid.illegal.bad-comments-or-CDATA.html
- include: embedded-code
- match: <!
captures:
0: punctuation.definition.tag.html
push:
- meta_scope: meta.tag.sgml.html
- match: ">"
captures:
0: punctuation.definition.tag.html
pop: true
- match: (?i:DOCTYPE)
captures:
1: entity.name.tag.doctype.html
push:
- meta_scope: meta.tag.sgml.doctype.html
- match: (?=>)
captures:
1: entity.name.tag.doctype.html
pop: true
- match: '"[^">]*"'
scope: string.quoted.double.doctype.identifiers-and-DTDs.html
- match: '\[CDATA\['
push:
- meta_scope: constant.other.inline-data.html
- match: "]](?=>)"
pop: true
- match: (\s*)(?!--|>)\S(\s*)
scope: invalid.illegal.bad-comments-or-CDATA.html
- include: embedded-code
- match: '(?:^\s+)?(<)((?i:style))\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.style.html
3: punctuation.definition.tag.html
push:
- meta_scope: source.css.embedded.html
- match: (</)((?i:style))(>)(?:\s*\n)?
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.style.html
3: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (>)
captures:
1: punctuation.definition.tag.html
push:
- match: (?=</(?i:style))
pop: true
- include: embedded-code
- include: scope:source.css
- match: '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
push:
- meta_scope: source.js.embedded.html
- match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
captures:
2: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (?<!</(?:script|SCRIPT))(>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
push:
- match: (</)((?i:script))
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
pop: true
- match: (//).*?((?=</script)|$\n?)
scope: comment.line.double-slash.js
captures:
1: punctuation.definition.comment.js
- match: /\*
captures:
0: punctuation.definition.comment.js
push:
- meta_scope: comment.block.js
- match: \*/|(?=</script)
captures:
0: punctuation.definition.comment.js
pop: true
- include: php
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
- include: scope:source.js
- match: (</?)((?i:body|head|html)\b)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.structure.any.html
push:
- meta_scope: meta.tag.structure.any.html
- match: (>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.structure.any.html
pop: true
- include: tag-stuff
- match: (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.block.any.html
push:
- meta_scope: meta.tag.block.any.html
- match: (>)
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- match: (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.any.html
push:
- meta_scope: meta.tag.inline.any.html
- match: "((?: ?/)?>)"
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- match: "(</?)([a-zA-Z0-9:]+)"
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- meta_scope: meta.tag.other.html
- match: (>)
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- include: entities
- match: <>
scope: invalid.illegal.incomplete.html
- match: <
scope: invalid.illegal.bad-angle-bracket.html
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
embedded-code:
- include: ruby
- include: php
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
- include: python
entities:
- match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
scope: constant.character.entity.html
captures:
1: punctuation.definition.entity.html
3: punctuation.definition.entity.html
- match: "&"
scope: invalid.illegal.bad-ampersand.html
php:
- match: (?=(^\s*)?<\?)
push:
- match: (?!(^\s*)?<\?)
pop: true
- include: scope:text.html.php
python:
- match: (?:^\s*)<\?python(?!.*\?>)
push:
- meta_scope: source.python.embedded.html
- match: \?>(?:\s*$\n)?
pop: true
- include: scope:source.python
ruby:
- match: "<%+#"
captures:
0: punctuation.definition.comment.erb
push:
- meta_scope: comment.block.erb
- match: "%>"
captures:
0: punctuation.definition.comment.erb
pop: true
- match: <%+(?!>)=?
captures:
0: punctuation.section.embedded.ruby
push:
- meta_scope: source.ruby.embedded.html
- match: "-?%>"
captures:
0: punctuation.section.embedded.ruby
pop: true
- match: (#).*?(?=-?%>)
scope: comment.line.number-sign.ruby
captures:
1: punctuation.definition.comment.ruby
- include: scope:source.ruby
- match: <\?r(?!>)=?
captures:
0: punctuation.section.embedded.ruby.nitro
push:
- meta_scope: source.ruby.nitro.embedded.html
- match: '-?\?>'
captures:
0: punctuation.section.embedded.ruby.nitro
pop: true
- match: (#).*?(?=-?\?>)
scope: comment.line.number-sign.ruby.nitro
captures:
1: punctuation.definition.comment.ruby.nitro
- include: scope:source.ruby
string-double-quoted:
- match: '"'
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.double.html
- match: '"'
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
string-single-quoted:
- match: "'"
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.single.html
- match: "'"
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
tag-generic-attribute:
- match: '\b([a-zA-Z\-:]+)'
scope: entity.other.attribute-name.html
tag-id-attribute:
- match: \b(id)\b\s*(=)
captures:
1: entity.other.attribute-name.id.html
2: punctuation.separator.key-value.html
push:
- meta_scope: meta.attribute-with-value.id.html
- match: (?<='|")
captures:
1: entity.other.attribute-name.id.html
2: punctuation.separator.key-value.html
pop: true
- match: '"'
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.double.html
- meta_content_scope: meta.toc-list.id.html
- match: '"'
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
- match: "'"
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.single.html
- meta_content_scope: meta.toc-list.id.html
- match: "'"
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
tag-stuff:
- include: tag-id-attribute
- include: tag-generic-attribute
- include: string-double-quoted
- include: string-single-quoted
- include: embedded-code
twig-arrays:
- match: '(?<=[\s\(\{\[:,])\['
captures:
0: punctuation.section.array.begin.twig
push:
- meta_scope: meta.array.twig
- match: '\]'
captures:
0: punctuation.section.array.end.twig
pop: true
- include: twig-arrays
- include: twig-hashes
- include: twig-constants
- include: twig-strings
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- match: ","
scope: punctuation.separator.object.twig
twig-comment-tag:
- match: '\{#-?'
captures:
0: punctuation.definition.comment.begin.twig
push:
- meta_scope: comment.block.twig
- match: '-?#\}'
captures:
0: punctuation.definition.comment.end.twig
pop: true
twig-constants:
- match: '(?i)(?<=[\s\[\(\{:,])(?:true|false|null|none)(?=[\s\)\]\}\,])'
scope: constant.language.twig
- match: '(?<=[\s\[\(\{:,]|\.\.|\*\*)[0-9]+(?:\.[0-9]+)?(?=[\s\)\]\}\,]|\.\.|\*\*)'
scope: constant.numeric.twig
twig-filters:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\s\|\]\}\):,]|\.\.|\*\*)'
captures:
1: support.function.twig
twig-filters-ud:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)'
captures:
1: meta.function-call.other.twig
twig-filters-warg:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\()'
captures:
1: support.function.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-filters-warg-ud:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\()'
captures:
1: meta.function-call.other.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-functions:
- match: (?<=is\s)(defined|empty|even|iterable|odd)
captures:
1: support.function.twig
twig-functions-warg:
- match: '(?<=[\s\(\[\{:,])(attribute|block|constant|cycle|date|divisible by|dump|include|max|min|parent|random|range|same as|source|template_from_string)(\()'
captures:
1: support.function.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
twig-hashes:
- match: '(?<=[\s\(\{\[:,])\{'
captures:
0: punctuation.section.hash.begin.twig
push:
- meta_scope: meta.hash.twig
- match: '\}'
captures:
0: punctuation.section.hash.end.twig
pop: true
- include: twig-hashes
- include: twig-arrays
- include: twig-constants
- include: twig-strings
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- match: ":"
scope: punctuation.separator.key-value.twig
- match: ","
scope: punctuation.separator.object.twig
twig-keywords:
- match: (?<=\s)((?:end)?(?:autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with)(?=\s)
scope: keyword.control.twig
twig-macros:
- match: |-
(?x)
(?<=[\s\(\[\{:,])
([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(?:
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
)?
(\()
captures:
1: meta.function-call.twig
2: punctuation.separator.property.twig
3: variable.other.property.twig
4: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-objects:
- match: '(?<=[\s\{\[\(:,])([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?=[\s\}\[\]\(\)\.\|,:])'
captures:
1: variable.other.twig
twig-operators:
- match: (?<=\s)(\+|-|//?|%|\*\*?)(?=\s)
captures:
1: keyword.operator.arithmetic.twig
- match: (?<=\s)(=|~)(?=\s)
captures:
1: keyword.operator.assignment.twig
- match: (?<=\s)(b-(?:and|or|xor))(?=\s)
captures:
1: keyword.operator.bitwise.twig
- match: '(?<=\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\s)'
captures:
1: keyword.operator.comparison.twig
- match: (?<=\s)(\?|:|and|not|or)(?=\s)
captures:
1: keyword.operator.logical.twig
- match: '(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]\)''"])\.\.(?=[a-zA-Z0-9_\x{7f}-\x{ff}''"])'
captures:
0: keyword.operator.other.twig
- match: '(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]\}\)''"])\|(?=[a-zA-Z_\x{7f}-\x{ff}])'
captures:
0: keyword.operator.other.twig
twig-print-tag:
- match: '\{\{-?'
captures:
0: punctuation.section.tag.twig
push:
- meta_scope: meta.tag.template.value.twig
- match: '-?\}\}'
captures:
0: punctuation.section.tag.twig
pop: true
- include: twig-constants
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-properties:
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}])
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(?=[\.\s\|\[\)\]\}:,])
captures:
1: punctuation.separator.property.twig
2: variable.other.property.twig
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}])
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(\()
captures:
1: punctuation.separator.property.twig
2: variable.other.property.twig
3: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]])
(?:
(\[)('[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*')(\])
|(\[)("[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*")(\])
|(\[)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\])
)
captures:
1: punctuation.section.array.begin.twig
2: variable.other.property.twig
3: punctuation.section.array.end.twig
4: punctuation.section.array.begin.twig
5: variable.other.property.twig
6: punctuation.section.array.end.twig
7: punctuation.section.array.begin.twig
8: variable.other.property.twig
9: punctuation.section.array.end.twig
twig-statement-tag:
- match: '\{%-?'
captures:
0: punctuation.section.tag.twig
push:
- meta_scope: meta.tag.template.block.twig
- match: '-?%\}'
captures:
0: punctuation.section.tag.twig
pop: true
- include: twig-constants
- include: twig-keywords
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-objects
- include: twig-properties
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-strings:
- match: (?:(?<!\\)|(?<=\\\\))'
captures:
0: punctuation.definition.string.begin.twig
push:
- meta_scope: string.quoted.single.twig
- match: (?:(?<!\\)|(?<=\\\\))'
captures:
0: punctuation.definition.string.end.twig
pop: true
- match: (?:(?<!\\)|(?<=\\\\))"
captures:
0: punctuation.definition.string.begin.twig
push:
- meta_scope: string.quoted.double.twig
- match: (?:(?<!\\)|(?<=\\\\))"
captures:
0: punctuation.definition.string.end.twig
pop: true

@ -0,0 +1,23 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: hosts
file_extensions:
- hosts
scope: source.hosts
contexts:
main:
- scope: comment.line.number-sign
match: \#.*
comment: comment
- match: ^\s*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9a-f:]+)
comment: ipaddress
scope: constant.numeric.ipaddress
- match: \s(localhost|ip6-loopback|ip6-localhost|ip6-localnet|ip6-mcastprefix|ip6-allnodes|ip6-allrouters|ip6-allhosts|broadcasthost)\b
scope: keyword.host.predefined}
comment: prefdfined

@ -12,9 +12,12 @@ file_extensions:
- lng
- cfg
- CFG
- desktop
- url
- URL
- .editorconfig
- .hgrc
- hgrc
scope: source.ini
contexts:
main:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,398 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Kotlin
file_extensions:
- kt
- kts
scope: source.Kotlin
contexts:
main:
- include: comments
- match: '^\s*(package)\b(?:\s*([^ ;$]+)\s*)?'
captures:
1: keyword.other.kotlin
2: entity.name.package.kotlin
- include: imports
- include: statements
classes:
- match: (?<!::)(?=\b(?:companion|class|object|interface)\b)
push:
- match: '(?=$|\})'
pop: true
- include: comments
- match: \b(companion\s*)?(class|object|interface)\b
captures:
1: storage.modifier.kotlin
2: storage.modifier.kotlin
push:
- match: '(?=<|\{|\(|:|$)'
pop: true
- include: comments
- match: \w+
scope: entity.name.type.class.kotlin
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: "(?={|$)"
pop: true
- match: \w+
scope: entity.other.inherited-class.kotlin
- match: \(
push:
- match: \)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
comments:
- match: /\*
captures:
0: punctuation.definition.comment.kotlin
push:
- meta_scope: comment.block.kotlin
- match: \*/
captures:
0: punctuation.definition.comment.kotlin
pop: true
- match: \s*((//).*$\n?)
captures:
1: comment.line.double-slash.kotlin
2: punctuation.definition.comment.kotlin
constants:
- match: \b(true|false|null|this|super)\b
scope: constant.language.kotlin
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFf])?\b'
scope: constant.numeric.kotlin
- match: '\b([A-Z][A-Z0-9_]+)\b'
scope: constant.other.kotlin
expressions:
- match: \(
push:
- match: \)
pop: true
- include: expressions
- include: types
- include: strings
- include: constants
- include: comments
- include: keywords
functions:
- match: (?=\s*\b(?:fun)\b)
push:
- match: '(?=$|\})'
pop: true
- match: \b(fun)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=\()
pop: true
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: '([\.<\?>\w]+\.)?(\w+)'
captures:
2: entity.name.function.kotlin
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: "(?={|=|$)"
pop: true
- include: types
- match: '\{'
push:
- match: '(?=\})'
pop: true
- include: statements
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
generics:
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|>)
pop: true
- include: types
- include: keywords
- match: \w+
scope: storage.type.generic.kotlin
getters-and-setters:
- match: \b(get)\b\s*\(\s*\)
captures:
1: entity.name.function.kotlin
push:
- match: '\}|(?=\bset\b)|$'
pop: true
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$|\bset\b)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: expressions
- match: \b(set)\b\s*(?=\()
captures:
1: entity.name.function.kotlin
push:
- match: '\}|(?=\bget\b)|$'
pop: true
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$|\bset\b)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: expressions
imports:
- match: '^\s*(import)\s+[^ $]+\s+(as)?'
captures:
1: keyword.other.kotlin
2: keyword.other.kotlin
keywords:
- match: \b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\b
scope: storage.modifier.kotlin
- match: \b(try|catch|finally|throw)\b
scope: keyword.control.catch-exception.kotlin
- match: \b(if|else|while|for|do|return|when|where|break|continue)\b
scope: keyword.control.kotlin
- match: \b(in|is|!in|!is|as|as\?|assert)\b
scope: keyword.operator.kotlin
- match: (==|!=|===|!==|<=|>=|<|>)
scope: keyword.operator.comparison.kotlin
- match: (=)
scope: keyword.operator.assignment.kotlin
- match: (::)
scope: keyword.operator.kotlin
- match: (:)
scope: keyword.operator.declaration.kotlin
- match: \b(by)\b
scope: keyword.other.by.kotlin
- match: (\?\.)
scope: keyword.operator.safenav.kotlin
- match: (\.)
scope: keyword.operator.dot.kotlin
- match: (\?:)
scope: keyword.operator.elvis.kotlin
- match: (\-\-|\+\+)
scope: keyword.operator.increment-decrement.kotlin
- match: (\+=|\-=|\*=|\/=)
scope: keyword.operator.arithmetic.assign.kotlin
- match: (\.\.)
scope: keyword.operator.range.kotlin
- match: (\-|\+|\*|\/|%)
scope: keyword.operator.arithmetic.kotlin
- match: (!|&&|\|\|)
scope: keyword.operator.logical.kotlin
- match: (;)
scope: punctuation.terminator.kotlin
namespaces:
- match: \b(namespace)\b
scope: keyword.other.kotlin
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
parameters:
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|\)|=)
pop: true
- include: types
- match: (=)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|\))
pop: true
- include: expressions
- include: keywords
- match: \w+
scope: variable.parameter.function.kotlin
statements:
- include: namespaces
- include: typedefs
- include: classes
- include: functions
- include: variables
- include: getters-and-setters
- include: expressions
strings:
- match: '"""'
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.third.kotlin
- match: '"""'
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: '(\$\w+|\$\{[^\}]+\})'
scope: variable.parameter.template.kotlin
- match: \\.
scope: constant.character.escape.kotlin
- match: '"'
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.double.kotlin
- match: '"'
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: '(\$\w+|\$\{[^\}]+\})'
scope: variable.parameter.template.kotlin
- match: \\.
scope: constant.character.escape.kotlin
- match: "'"
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.single.kotlin
- match: "'"
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: \\.
scope: constant.character.escape.kotlin
- match: "`"
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.single.kotlin
- match: "`"
captures:
0: punctuation.definition.string.end.kotlin
pop: true
typedefs:
- match: (?=\s*(?:type))
push:
- match: (?=$)
pop: true
- match: \b(type)\b
scope: keyword.other.kotlin
- match: <
push:
- match: ">"
pop: true
- include: generics
- include: expressions
types:
- match: \b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b
scope: storage.type.buildin.kotlin
- match: \b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b
scope: storage.type.buildin.array.kotlin
- match: \b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\b
captures:
1: storage.type.buildin.collection.kotlin
push:
- match: ">"
pop: true
- include: types
- include: keywords
- match: \w+<
push:
- match: ">"
pop: true
- include: types
- include: keywords
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
- match: \(
push:
- match: \)
pop: true
- include: types
- match: (->)
scope: keyword.operator.declaration.kotlin
variables:
- match: (?=\s*\b(?:var|val)\b)
push:
- match: (?=:|=|(\b(by)\b)|$)
pop: true
- match: \b(var|val)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=:|=|(\b(by)\b)|$)
pop: true
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: '([\.<\?>\w]+\.)?(\w+)'
captures:
2: entity.name.variable.kotlin
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?==|$)
pop: true
- include: types
- include: getters-and-setters
- match: \b(by)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
- include: getters-and-setters

@ -0,0 +1,53 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Manpage
file_extensions:
- man
scope: source.man
variables:
section_heading: '^\S.*$'
contexts:
main:
- match: ^
push: first_line
first_line:
- match: '([A-Z0-9_\-]+)(\()([^)]+)(\))'
captures:
1: meta.preprocessor
2: keyword.operator
3: string.quoted.other
4: keyword.operator
- match: '$'
push: body
body:
- match: '^(SYNOPSIS|SYNTAX|SINTASSI|SKŁADNIA|СИНТАКСИС|書式)'
push: Packages/C/C.sublime-syntax
scope: markup.heading
with_prototype:
- match: '(?={{section_heading}})'
pop: true
- match: '^\S.*$'
scope: markup.heading
- match: '\b([A-Za-z0-9_\-]+)(\()([^)]*)(\))'
captures:
1: entity.name.function
2: keyword.operator
3: constant.numeric
4: keyword.operator
# command-line options like --option=value, --some-flag, or -x
- match: '(?:[^a-zA-Z0-9_-]|^|\s)(--?[A-Za-z0-9][A-Za-z0-9-]*)(?:(=)?("?)([A-Za-z0-9]+)("?))?'
captures:
1: entity.name
2: keyword.operator
3: punctuation.definition.string.begin
4: variable.parameter
3: punctuation.definition.string.end

@ -0,0 +1,14 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: MemInfo
file_extensions:
- meminfo
scope: source.meminfo
contexts:
main:
- match: '^([^:]+)\w*:\w*(.*)$'
captures:
1: keyword.other.meminfo-key
2: string.other.meminfo-value

@ -0,0 +1,257 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Nim
file_extensions:
- nim
- nims
scope: source.nim
contexts:
main:
- match: '(\#\[\s*(TODO|todo)?)'
comment: A multiline comment.
captures:
1: punctuation.definition.multi-comment.nim
2: invalid.illegal.TODO.nim
push:
- meta_scope: comment.line.number-sign.multi-comment.nim
- match: '(.*]\#)'
captures:
1: punctuation.definition.multi-comment.nim
2: invalid.illegal.TODO.nim
pop: true
- match: (##\s*(TODO|todo)?).+$\n?
comment: A documentation comment.
scope: comment.line.number-sign.doc-comment.nim
captures:
1: punctuation.definition.doc-comment.nim
2: invalid.illegal.TODO.nim
- match: (##\s*)$\n?
comment: An empty documentation comment.
scope: comment.line.number-sign.doc-comment.empty.nim
captures:
1: punctuation.definition.doc-comment.empty.nim
- match: (#\s*(TODO|todo)?).*$\n?
comment: A regular comment
scope: comment.line.number-sign.comment.nim
captures:
1: punctuation.definition.comment.nim
2: invalid.illegal.TODO.nim
- match: '\{\.'
comment: Pragmas
push:
- meta_scope: pragma
- match: '\.?\}'
pop: true
- match: \"
push:
- meta_scope: string.something.nim
- match: \"
pop: true
- match: '([\w\x{80}-\x{10FFFF}]+)'
scope: entity.other.attribute-name.pragma.nim
- match: discard \"\"\"
comment: A discarded triple string literal comment
push:
- meta_scope: comment.line.discarded.nim
- match: \"\"\"
pop: true
- match: '(?<![\w\x{80}-\x{10FFFF}])(\d[_\d]*((\.[_\d]+([eE][\+\-]?\d[_\d]*)?)|([eE][\+\-]?\d[_\d]*)))(''?([fF](32|64|128))|[fFdD])?'
comment: A float literal
scope: constant.numeric.float.decimal.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(0[xX][0-9A-Fa-f][_0-9A-Fa-f]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
comment: A hexadecimal literal
scope: constant.numeric.integer.hexadecimal.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(0[ocC][0-7][_0-7]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
comment: A base-8 integer literal
scope: constant.numeric.integer.octal.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(0(b|B)[01][_01]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
comment: A base-2 integer literal
scope: constant.numeric.integer.binary.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(\d[_\d]*)(''?(([iIuUfF](8|16|32|64))|[uUfFdD]))?'
comment: A base-10 integer literal
scope: constant.numeric.integer.decimal.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(true|false|inf|nil)(?![\w\x{80}-\x{10FFFF}])'
comment: Language Constants.
scope: constant.language.nim
- match: (?:^|\s+|=)(when|if)\b
comment: Primary branching keywords
captures:
1: keyword.control.primary.nim
push:
- match: (?=:)
captures:
1: control.variable.parameter.nim
pop: true
- include: scope:source.nim
- match: (?:^|\s+|=)(case)\b
comment: Primary branching keyword 'case'
captures:
1: keyword.control.primary.nim
push:
- match: (?=\bof\b)
captures:
1: control.variable.parameter.nim
pop: true
- include: scope:source.nim
- match: (?:^|\s+)(of|else|elif)\b
comment: Secondary branching keywords and their conditions
captures:
1: keyword.control.secondary.nim
push:
- match: (?=:)
captures:
1: control.variable.parameter.nim
pop: true
- include: scope:source.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(await|block|break|continue|do|end|except|finally|raise|return|try|while|yield)(?![\w\x{80}-\x{10FFFF}])'
comment: Keywords that affect program control flow or scope.
scope: keyword.control.nim
- match: '((?<![\w\x{80}-\x{10FFFF}])(and|in|is|isnot|not|notin|or|xor)(?![\w\x{80}-\x{10FFFF}]))'
comment: Keyword boolean operators for expressions.
scope: keyword.operator.boolean.nim
- 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}]))'
comment: Other keywords.
scope: keyword.other.nim
- match: (\b()\b|(=|\+|-|\*|/|<|>|@|\$|~|&|%|!|\?|\^|\.|:|\\)+)
comment: Generic operators for expressions.
scope: keyword.operator.nim
- match: (for)\s+
comment: in keyword in a 'for' loop
captures:
1: keyword.control.nim
push:
- meta_scope: meta.forloop.nim
- match: (?=:)
captures:
1: keyword.control.nim
pop: true
- match: '\ [\w\x{80}-\x{10FFFF},]+\s+(in)\s+'
captures:
1: keyword.control.nim
- include: scope:source.nim
- match: '((import)\s+[\.|\w|\/]+,?)'
comment: Import syntax
captures:
2: keyword.control.nim
- match: '(from)\s+[\/\w]+\s+(?=import)'
captures:
1: keyword.control.nim
- match: (var|let)\s*\(
comment: Destructure syntax
captures:
1: keyword.other.nim
push:
- match: \)
captures:
1: keyword.other.nim
pop: true
- match: '((?<![\w\x{80}-\x{10FFFF}])(generic|interface|lambda|out|shared|with|without)(?![\w\x{80}-\x{10FFFF}]))'
comment: Invalid and unused keywords.
scope: keyword.invalid.nim
- 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}])'
comment: Common functions
scope: keyword.other.common.function.nim
- 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}])'
comment: Built-in, concrete types.
scope: storage.type.concrete.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(range|array|seq|tuple|natural|set|ref|ptr|pointer)(?![\w\x{80}-\x{10FFFF}])'
comment: Built-in, generic types.
scope: storage.type.generic.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(proc|iterator|method|template|macro)(?![\w\x{80}-\x{10FFFF}])'
comment: Function types
scope: storage.type.function.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(openarray|varargs|void)(?![\w\x{80}-\x{10FFFF}])'
comment: Special types.
scope: storage.type.generic.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])([A-Z][A-Z0-9_]+)(?![\w\x{80}-\x{10FFFF}])'
comment: Other constants.
scope: support.constant.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])([A-Z]\w+)(?![\w\x{80}-\x{10FFFF}])'
comment: Other types.
scope: support.type.nim
- match: '(?<![\w\x{80}-\x{10FFFF}])(\w+)(?![\w\x{80}-\x{10FFFF}])(?=\()'
comment: Function call.
scope: support.function.any-method.nim
- match: r?\"\"\"
comment: (Raw) Triple Quoted String
push:
- meta_scope: string.quoted.triple.nim
- match: '\"\"\"[^\"]'
pop: true
- match: r\"
comment: Raw Double Quoted String
push:
- meta_scope: string.quoted.double.raw.nim
- match: \"
pop: true
- match: \"\"
- match: \"
comment: Double Quoted String
push:
- meta_scope: string.quoted.double.nim
- match: \"
pop: true
- include: escaped_char
- match: \'
comment: Single quoted character literal
push:
- meta_scope: string.quoted.single.nim
- match: \'
pop: true
- match: \\n
scope: invalid.illegal.character.nim
- include: escaped_char
- match: '([^\''][^\'']+?)'
scope: invalid.illegal.character.nim
- match: '([\w\x{80}-\x{10FFFF}\`]+)\s*(?=\(|\[.+?\]\s*\()'
comment: Call syntax
captures:
1: support.function.any-method.nim
push:
- match: \)
captures:
1: support.function.any-method.nim
pop: true
- include: scope:source.nim
- match: '([\w\x{80}-\x{10FFFF}]+)(?=\s+[\w](?![\w\x{80}-\x{10FFFF}]+((?!\n)\s)+))'
comment: Command syntax
captures:
1: support.function.any-method.nim
- match: '([\w\x{80}-\x{10FFFF}]+)(?=\s+[\"\''\`])'
captures:
1: support.function.any-method.nim
- match: (tmpl(i)?)(?=( (nim|html|xml|js|css|glsl|md))?\"\"\")
comment: tmpl specifier
captures:
1: storage.type.function.nim
2: keyword.operator.nim
escaped_char:
- match: '\\[nN]'
scope: constant.character.escape.newline.nim
- match: '\\[cC]|\\[rR]'
scope: constant.character.escape.carriagereturn.nim
- match: '\\[lL]'
scope: constant.character.escape.linefeed.nim
- match: '\\[fF]'
scope: constant.character.escape.formfeed.nim
- match: '\\[tT]'
scope: constant.character.escape.tabulator.nim
- match: '\\[vV]'
scope: constant.character.escape.verticaltabulator.nim
- match: \\\"
scope: constant.character.escape.double-quote.nim
- match: \\'
scope: constant.character.escape.single-quote.nim
- match: '\\[0-9]+'
scope: constant.character.escape.chardecimalvalue.nim
- match: '\\[aA]'
scope: constant.character.escape.alert.nim
- match: '\\[bB]'
scope: constant.character.escape.backspace.nim
- match: '\\[eE]'
scope: constant.character.escape.escape.nim
- match: '\\[xX][0-9A-Fa-f]{2}'
scope: constant.character.escape.hex.nim
- match: \\\\
scope: constant.character.escape.backslash.nim

1
assets/syntaxes/02_Extra/Nix vendored Submodule

@ -0,0 +1,609 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Nix
file_extensions:
- nix
scope: source.nix
contexts:
main:
- include: expression
comment:
- match: '/\*([^*]|\*[^\/])*'
push:
- meta_scope: comment.block.nix
- match: \*\/
pop: true
- include: comment-remark
- match: '\#'
push:
- meta_scope: comment.line.number-sign.nix
- match: $
pop: true
- include: comment-remark
attribute-bind:
- include: attribute-name
- include: attribute-bind-from-equals
attribute-bind-from-equals:
- match: \=
captures:
0: keyword.operator.bind.nix
push:
- match: \;
captures:
0: punctuation.terminator.bind.nix
pop: true
- include: expression
attribute-inherit:
- match: \binherit\b
captures:
0: keyword.other.inherit.nix
push:
- match: \;
captures:
0: punctuation.terminator.inherit.nix
pop: true
- match: \(
captures:
0: punctuation.section.function.arguments.nix
push:
- match: (?=\;)
pop: true
- match: \)
captures:
0: punctuation.section.function.arguments.nix
push:
- match: (?=\;)
pop: true
- include: bad-reserved
- include: attribute-name-single
- include: others
- include: expression
- match: '(?=[a-zA-Z\_])'
push:
- match: (?=\;)
pop: true
- include: bad-reserved
- include: attribute-name-single
- include: others
- include: others
attribute-name:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
scope: entity.other.attribute-name.multipart.nix
- match: \.
- include: string-quoted
- include: interpolation
attribute-name-single:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
scope: entity.other.attribute-name.single.nix
attrset-contents:
- include: attribute-inherit
- include: bad-reserved
- include: attribute-bind
- include: others
attrset-definition:
- match: '(?=\{)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: '(\{)'
captures:
0: punctuation.definition.attrset.nix
push:
- match: '(\})'
captures:
0: punctuation.definition.attrset.nix
pop: true
- include: attrset-contents
- match: '(?<=\})'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
attrset-definition-brace-opened:
- match: '(?<=\})'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: (?=.?)
push:
- match: '\}'
captures:
0: punctuation.definition.attrset.nix
pop: true
- include: attrset-contents
attrset-for-sure:
- match: (?=\brec\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \brec\b
captures:
0: keyword.other.nix
push:
- match: '(?=\{)'
pop: true
- include: others
- include: attrset-definition
- include: others
- match: '(?=\{\s*(\}|[^,?]*(=|;)))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition
- include: others
attrset-or-function:
- match: '\{'
captures:
0: punctuation.definition.attrset-or-function.nix
push:
- match: '(?=([\])};]|\b(else|then)\b))'
pop: true
- match: '(?=(\s*\}|\"|\binherit\b|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*(\s*\.|\s*=[^=])|\$\{[a-zA-z0-9\_\''\-]+\}(\s*\.|\s*=[^=])))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition-brace-opened
- match: '(?=(\.\.\.|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[,?]))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- include: bad-reserved
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.function.maybe.nix
push:
- match: '(?=([\])};]|\b(else|then)\b))'
pop: true
- match: (?=\.)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition-brace-opened
- match: \s*(\,)
captures:
1: keyword.operator.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- match: (?=\=)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attribute-bind-from-equals
- include: attrset-definition-brace-opened
- match: (?=\?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-parameter-default
- match: \,
captures:
0: keyword.operator.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- include: others
- include: others
bad-reserved:
- match: '(?<![\w''-])(if|then|else|assert|with|let|in|rec|inherit)(?![\w''-])'
scope: invalid.illegal.reserved.nix
comment-remark:
- match: (TODO|FIXME|BUG|\!\!\!):?
captures:
1: markup.bold.comment.nix
constants:
- match: \b(builtins|true|false|null)\b
captures:
0: constant.language.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: \b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\b
captures:
0: support.function.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '\b[0-9]+\b'
captures:
0: constant.numeric.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
expression:
- include: parens-and-cont
- include: list-and-cont
- include: string
- include: interpolation
- include: with-assert
- include: function-for-sure
- include: attrset-for-sure
- include: attrset-or-function
- include: let
- include: if
- include: operator-unary
- include: constants
- include: bad-reserved
- include: parameter-name-and-cont
- include: others
expression-cont:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: parens
- include: list
- include: string
- include: interpolation
- include: function-for-sure
- include: attrset-for-sure
- include: attrset-or-function
- match: '(\bor\b|\.|==|!=|!|\<\=|\<|\>\=|\>|&&|\|\||-\>|//|\?|\+\+|-|\*|/(?=([^*]|$))|\+)'
scope: keyword.operator.nix
- include: constants
- include: bad-reserved
- include: parameter-name
- include: others
function-body:
- match: '(@\s*([a-zA-Z\_][a-zA-Z0-9\_\''\-]*)\s*)?(\:)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
function-body-from-colon:
- match: (\:)
captures:
0: punctuation.definition.function.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
function-contents:
- include: bad-reserved
- include: function-parameter
- include: others
function-definition:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-body-from-colon
- match: (?=.?)
push:
- match: (?=\:)
pop: true
- match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)'
captures:
0: variable.parameter.function.4.nix
push:
- match: (?=\:)
pop: true
- match: \@
push:
- match: (?=\:)
pop: true
- include: function-header-until-colon-no-arg
- include: others
- include: others
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-until-colon-with-arg
- include: others
function-definition-brace-opened:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-body-from-colon
- match: (?=.?)
push:
- match: (?=\:)
pop: true
- include: function-header-close-brace-with-arg
- match: (?=.?)
push:
- match: '(?=\})'
pop: true
- include: function-contents
- include: others
function-for-sure:
- match: '(?=(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[:@]|\{[^}]*\}\s*:|\{[^#}"''/=]*[,\?]))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition
function-header-close-brace-no-arg:
- match: '\}'
captures:
0: punctuation.definition.entity.function.nix
push:
- match: (?=\:)
pop: true
- include: others
function-header-close-brace-with-arg:
- match: '\}'
captures:
0: punctuation.definition.entity.function.nix
push:
- match: (?=\:)
pop: true
- include: function-header-terminal-arg
- include: others
function-header-open-brace:
- match: '\{'
captures:
0: punctuation.definition.entity.function.2.nix
push:
- match: '(?=\})'
pop: true
- include: function-contents
function-header-terminal-arg:
- match: (?=@)
push:
- match: (?=\:)
pop: true
- match: \@
push:
- match: (?=\:)
pop: true
- match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)'
push:
- meta_scope: variable.parameter.function.3.nix
- match: (?=\:)
pop: true
- include: others
- include: others
function-header-until-colon-no-arg:
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-open-brace
- include: function-header-close-brace-no-arg
function-header-until-colon-with-arg:
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-open-brace
- include: function-header-close-brace-with-arg
function-parameter:
- match: (\.\.\.)
push:
- meta_scope: keyword.operator.nix
- match: '(,|(?=\}))'
pop: true
- include: others
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.function.1.nix
push:
- match: '(,|(?=\}))'
captures:
0: keyword.operator.nix
pop: true
- include: whitespace
- include: comment
- include: function-parameter-default
- include: expression
- include: others
function-parameter-default:
- match: \?
captures:
0: keyword.operator.nix
push:
- match: "(?=[,}])"
pop: true
- include: expression
if:
- match: (?=\bif\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \bif\b
captures:
0: keyword.other.nix
push:
- match: \bth(?=en\b)
captures:
0: keyword.other.nix
pop: true
- include: expression
- match: (?<=th)en\b
captures:
0: keyword.other.nix
push:
- match: \bel(?=se\b)
captures:
0: keyword.other.nix
pop: true
- include: expression
- match: (?<=el)se\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
captures:
0: keyword.other.nix
pop: true
- include: expression
illegal:
- match: .
scope: invalid.illegal
interpolation:
- match: '\$\{'
captures:
0: punctuation.section.embedded.begin.nix
push:
- meta_scope: markup.italic
- match: '\}'
captures:
0: punctuation.section.embedded.end.nix
pop: true
- include: expression
let:
- match: (?=\blet\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \blet\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(in|else|then)\b))'
pop: true
- match: '(?=\{)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: '\{'
push:
- match: '\}'
pop: true
- include: attrset-contents
- match: '(^|(?<=\}))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- include: others
- include: attrset-contents
- include: others
- match: \bin\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
list:
- match: '\['
captures:
0: punctuation.definition.list.nix
push:
- match: '\]'
captures:
0: punctuation.definition.list.nix
pop: true
- include: expression
list-and-cont:
- match: '(?=\[)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: list
- include: expression-cont
operator-unary:
- match: (!|-)
scope: keyword.operator.unary.nix
others:
- include: whitespace
- include: comment
- include: illegal
parameter-name:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.name.nix
parameter-name-and-cont:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.name.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
parens:
- match: \(
captures:
0: punctuation.definition.expression.nix
push:
- match: \)
captures:
0: punctuation.definition.expression.nix
pop: true
- include: expression
parens-and-cont:
- match: (?=\()
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: parens
- include: expression-cont
string:
- match: (?=\'\')
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \'\'
captures:
0: punctuation.definition.string.other.start.nix
push:
- meta_scope: string.quoted.other.nix
- match: \'\'(?!\$|\'|\\.)
captures:
0: punctuation.definition.string.other.end.nix
pop: true
- match: \'\'(\$|\'|\\.)
scope: constant.character.escape.nix
- include: interpolation
- include: expression-cont
- match: (?=\")
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: string-quoted
- include: expression-cont
- match: '(~?[a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+)'
captures:
0: string.unquoted.path.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '(\<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>)'
captures:
0: string.unquoted.spath.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '([a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\'']+)'
captures:
0: string.unquoted.url.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
string-quoted:
- match: \"
captures:
0: punctuation.definition.string.double.start.nix
push:
- meta_scope: string.quoted.double.nix
- match: \"
captures:
0: punctuation.definition.string.double.end.nix
pop: true
- match: \\.
scope: constant.character.escape.nix
- include: interpolation
whitespace:
- match: \s+
with-assert:
- match: '(?<![\w''-])(with|assert)(?![\w''-])'
captures:
0: keyword.other.nix
push:
- match: \;
pop: true
- include: expression

@ -0,0 +1,219 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: orgmode
file_extensions:
- org
scope: text.orgmode
contexts:
main:
- match: |-
(?x)
^(\*+) # leading stars
\s*([A-Z_]{2,})? # todo keywords
\s*(\[\#[A-Ca-c]\])? # priority
\s*(?=\s+[A-Za-z0-9]+) # expected heading text
comment: Outline headings
captures:
1: punctuation.definition.heading.orgmode
2: keyword.other.todo.orgmode
3: constant.other.priority.orgmode
push:
- meta_scope: markup.heading.orgmode
- meta_content_scope: entity.name.section.orgmode
- match: (?=\s*$\n?)
pop: true
- include: heading-inline
- match: "^-{5,}$"
scope: meta.separator.orgmode
- match: '^\s*([-+]|\s+\*)\s+(.*?)\s+::'
captures:
1: keyword.operator.list.orgmode
2: markup.bold.definition.orgmode
push:
- meta_scope: meta.list.definition.orgmode
- match: $
pop: true
- include: inline
- match: '^\s*?([-+]|\s+\*|\d+[).])'
captures:
1: keyword.operator.list.orgmode
push:
- meta_scope: meta.list.plain.orgmode
- match: $
pop: true
- include: list-inline
- match: (?i)^#\+(BEGIN_(QUOTE|VERSE|CENTER))$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: markup.quote.orgmode
- match: (?i)^#\+(END_\2)$
captures:
1: keyword.control.block.orgmode
pop: true
- match: "^#[^+].*$"
scope: comment.line.number-sign.orgmode
- match: ^:(PROPERTIES):$
captures:
1: keyword.control.drawer.orgmode
push:
- meta_scope: meta.drawer.properties.orgmode
- match: ^:(END):$
captures:
1: keyword.control.drawer.orgmode
pop: true
- include: properties
- match: ^:(.+):$
captures:
1: keyword.control.drawer.orgmode
push:
- meta_scope: meta.drawer.other.orgmode
- match: ^:(END):$
captures:
1: keyword.control.drawer.orgmode
pop: true
- match: (?i)#\+(BEGIN_LaTeX)$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: meta.block.latex.orgmode
- match: (?i)#\+(END_LaTeX)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:text.tex.latex
- match: (?i)#\+(BEGIN_HTML)$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: meta.block.html.orgmode
- match: (?i)#\+(END_HTML)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:text.html.basic
- match: (?i)#\+(BEGIN_SRC)\s+(python)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.python.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.python
- match: (?i)#\+(BEGIN_SRC)\s+(ruby)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.ruby.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.ruby
- match: (?i)#\+(BEGIN_SRC)\s+((?:emacs-)?lisp)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.lisp.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.lisp
- match: (?i)#\+(BEGIN_SRC)\s+(sh)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.shell.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.shell
- match: '(?i)#\+(BEGIN_(SRC|EXAMPLE))(?:\s+([\w-]+)?\s*(.*))?$'
captures:
1: keyword.control.block.orgmode
3: constant.other.language.orgmode
4: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.other.orgmode
- meta_content_scope: markup.raw.block.orgmode
- match: (?i)#\+(END_\2)$
captures:
1: keyword.control.block.orgmode
pop: true
- match: '#\+(OPTIONS):'
captures:
1: keyword.control.pragma.orgmode
push:
- meta_scope: meta.pragma.options.orgmode
- match: $
pop: true
- match: '([^\s]+):([^\s]+)'
scope: meta.option.orgmode
captures:
1: variable.parameter.option.orgmode
2: string.other.option.orgmode
- match: '#\+(CALL):\s+[A-Za-z-]+(?:\[([^\]]*)\])?\(?'
captures:
1: keyword.control.pragma.orgmode
2: string.other.header-args.orgmode
push:
- meta_scope: meta.pragma.call.orgmode
- match: '\)?([^)]*)$'
captures:
1: string.other.header-args.orgmode
pop: true
- match: (\w+)=
scope: meta.assignment.orgmode
captures:
1: variable.parameter.header-args.orgmode
- match: '^#\+([a-zA-Z_-]+): ?(.*)$'
scope: meta.pragma.orgmode
captures:
1: keyword.control.pragma.orgmode
2: string.unquoted.pragma.orgmode
- include: inline
heading-inline:
- match: ':([^:^\s]*)(?=:)'
scope: meta.keyword.orgmode
captures:
1: string.quoted.keyword.orgmode
- include: inline
inline:
- match: '(?<=^|[.,:;\s])/[^/]+/(?=$|[.,:;\s])'
scope: markup.italic.orgmode
- match: '(?<=^|[.,:;\s])\*[^*]+\*(?=$|[.,:;\s])'
scope: markup.bold.orgmode
- match: '(?<=^|[.,:;\s])_[^_]+_(?=$|[.,:;\s])'
scope: markup.underline.orgmode
- match: '(?<=^|[.,:;\s])([~=]).+?\1(?=$|[.,:;\s])'
scope: markup.raw.inline.orgmode
- match: '\[(?:\[([^\]]*)\])?\[([^\]]*)\]\]'
scope: meta.link.orgmode
captures:
1: markup.underline.link.orgmode
2: string.other.link.orgmode
- match: (?:http|ftp)s?:\/\/\S+
scope: markup.underline.url.orgmode
list-inline:
- match: '\[[ -X]\]'
scope: keyword.operator.checkbox.orgmode
- include: inline
properties:
- match: '^:([A-Za-z_]+):\s(.*)$'
scope: meta.property.orgmode
captures:
1: keyword.control.property.orgmode
2: string.unquoted.propval.orgmode

@ -0,0 +1,71 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: passwd
file_extensions:
- passwd
scope: source.passwd
contexts:
main:
- comment: name
match: ^[^:]+
scope: keyword
- comment: password
match: ":"
push: password
password:
- comment: uid
match: ":"
set: uid
- comment: shadowpassword
match: "[^:]+"
scope: invalid
uid:
- comment: gid
match: ":"
set: gid
- comment: number
match: "[0-9]+"
scope: constant.numeric
gid:
- comment: comment
match: ":"
set: comment
- comment: number
match: "[0-9]+"
scope: constant.language
comment:
- comment: directory
match: ":"
set: directory
- comment: comment
match: "[^:]+"
scope: entity.name
directory:
- comment: shell
match: ":"
set: shell
- comment: directory
match: "[^:]+"
scope: string.unquoted
shell:
- comment: newline
match: "\n"
pop: true
- comment: directory
match: "[^:\n]+"
scope: variable.parameter

@ -0,0 +1,451 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: PowerShell
file_extensions:
- ps1
- psm1
- psd1
scope: source.powershell
contexts:
main:
- match: "<#"
captures:
0: punctuation.definition.comment.block.begin.powershell
push:
- meta_scope: comment.block.powershell
- match: "#>"
captures:
0: punctuation.definition.comment.block.end.powershell
pop: true
- include: commentEmbeddedDocs
- match: '[2-6]>&1|>>|>|<<|<|>|>\||[1-6]>|[1-6]>>'
scope: keyword.operator.redirection.powershell
- include: commands
- include: commentLine
- include: variable
- include: interpolatedStringContent
- include: function
- include: attribute
- include: UsingDirective
- include: type
- include: hashtable
- include: doubleQuotedString
- include: scriptblock
- include: doubleQuotedStringEscapes
- match: (?<!')'
captures:
0: punctuation.definition.string.begin.powershell
push:
- meta_scope: string.quoted.single.powershell
- match: "'(?!')"
captures:
0: punctuation.definition.string.end.powershell
pop: true
- match: "''"
scope: constant.character.escape.powershell
- match: \@"(?=$)
push:
- meta_scope: string.quoted.double.heredoc.powershell
- match: ^"@
pop: true
- include: variableNoProperty
- include: doubleQuotedStringEscapes
- include: interpolation
- match: \@'(?=$)
push:
- meta_scope: string.quoted.single.heredoc.powershell
- match: ^'@
pop: true
- match: "''"
scope: constant.character.escape.powershell
- include: numericConstant
- match: (@)(\()
captures:
1: keyword.other.array.begin.powershell
2: punctuation.section.group.begin.powershell
push:
- meta_scope: meta.group.array-expression.powershell
- match: \)
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: main
- match: (\$)(\()
comment: "TODO: move to repo; make recursive."
captures:
1: punctuation.definition.variable.powershell
2: punctuation.section.group.begin.powershell
push:
- meta_scope: meta.group.complex.subexpression.powershell
- match: \)
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: main
- match: '(\b(([A-Za-z0-9\-_\.]+)\.(?i:exe|com|cmd|bat))\b)'
scope: support.function.powershell
- 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)
scope: keyword.control.powershell
- match: '(?<!\w|-|[^\)]\.)((?i:(foreach|where)(?!-object))|%|\?)(?!\w)'
scope: keyword.control.powershell
- match: (?<!\w)(--%)(?!\w)
comment: This should be moved to the repository at some point.
captures:
1: keyword.control.powershell
push:
- match: $
pop: true
- match: .+
scope: string.unquoted.powershell
- match: (?<!\w)((?i:hidden|static))(?!\w)
comment: This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.
scope: storage.modifier.powershell
- match: '(?<!\w|-)((?i:class)|%|\?)(?:\s)+((?:\p{L}|\d|_|-|)+)\b'
comment: capture should be entity.name.type, but it doesn't provide a good color in the default schema.
captures:
1: storage.type.powershell
2: entity.name.function
- match: (?<!\w)-(?i:is(?:not)?|as)\b
scope: keyword.operator.comparison.powershell
- match: '(?<!\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\p{L})'
scope: keyword.operator.comparison.powershell
- match: '(?<!\w)-(?i:join|split)(?!\p{L})|!'
scope: keyword.operator.unary.powershell
- match: '(?<!\w)-(?i:and|or|not|xor)(?!\p{L})|!'
scope: keyword.operator.logical.powershell
- match: '(?<!\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\p{L})'
scope: keyword.operator.bitwise.powershell
- match: '(?<!\w)-(?i:f)(?!\p{L})'
scope: keyword.operator.string-format.powershell
- match: "[+%*/-]?=|[+/*%-]"
scope: keyword.operator.assignment.powershell
- match: '\|{2}|&{2}|;'
scope: punctuation.terminator.statement.powershell
- match: '&|(?<!\w)\.(?= )|`|,|\|'
scope: keyword.operator.other.powershell
- match: (?<!\s|^)\.\.(?=\-?\d|\(|\$)
comment: This is very imprecise, is there a syntax for 'must come after...'
scope: keyword.operator.range.powershell
RequiresDirective:
- match: (?<=#)(?i:(requires))\s
captures:
0: keyword.control.requires.powershell
push:
- meta_scope: meta.requires.powershell
- match: $
pop: true
- match: \-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version)
scope: keyword.other.powershell
- match: '(?<!-)\b\p{L}+|\d+(?:\.\d+)*'
scope: variable.parameter.powershell
- include: hashtable
UsingDirective:
- match: (?<!\w)(?i:(using))\s+(?i:(namespace|module))\s+(?i:((?:\w+(?:\.)?)+))
captures:
1: keyword.control.using.powershell
2: keyword.other.powershell
3: variable.parameter.powershell
attribute:
- match: '(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\b'
captures:
1: punctuation.section.bracket.begin.powershell
2: support.function.attribute.powershell
push:
- meta_scope: meta.attribute.powershell
- match: '(\])'
captures:
1: punctuation.section.bracket.end.powershell
pop: true
- match: \(
captures:
0: punctuation.section.group.begin.powershell
push:
- match: \)
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: main
- match: (?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?
captures:
1: variable.parameter.attribute.powershell
2: keyword.operator.assignment.powershell
commands:
- 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'
comment: "Verb-Noun pattern:"
scope: support.function.powershell
- match: (?<!\w)(?i:foreach-object)(?!\w)
comment: Builtin cmdlets with reserved verbs
scope: support.function.powershell
- match: (?<!\w)(?i:where-object)(?!\w)
comment: Builtin cmdlets with reserved verbs
scope: support.function.powershell
- match: (?<!\w)(?i:sort-object)(?!\w)
comment: Builtin cmdlets with reserved verbs
scope: support.function.powershell
- match: (?<!\w)(?i:tee-object)(?!\w)
comment: Builtin cmdlets with reserved verbs
scope: support.function.powershell
commentEmbeddedDocs:
- match: ^(?i:(?:\s?|#)+(\.)(COMPONENT|DESCRIPTION|EXAMPLE|EXTERNALHELP|FORWARDHELPCATEGORY|FORWARDHELPTARGETNAME|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|REMOTEHELPRUNSPACE|ROLE|SYNOPSIS))
scope: comment.documentation.embedded.powershell
captures:
1: constant.string.documentation.powershell
2: keyword.operator.documentation.powershell
- match: '(?i:\s?(\.)(PARAMETER|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP)\s+([a-z0-9-_]+))'
scope: comment.documentation.embedded.powershell
captures:
1: constant.string.documentation.powershell
2: keyword.operator.documentation.powershell
3: keyword.operator.documentation.powershell
commentLine:
- match: '(?<![`\\-])#'
captures:
0: punctuation.definition.comment.powershell
push:
- meta_scope: comment.line.powershell
- match: $\n?
captures:
0: punctuation.definition.comment.powershell
pop: true
- include: commentEmbeddedDocs
- include: RequiresDirective
doubleQuotedString:
- match: (?<!(?<!`)")"
captures:
0: punctuation.definition.string.begin.powershell
push:
- meta_scope: string.quoted.double.powershell
- match: '"(?!")'
captures:
0: punctuation.definition.string.end.powershell
pop: true
- match: '(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b'
- include: variableNoProperty
- include: doubleQuotedStringEscapes
- include: interpolation
- match: '`\s*$'
scope: keyword.other.powershell
doubleQuotedStringEscapes:
- match: '`[`0abefnrtv"''$]'
scope: constant.character.escape.powershell
- include: unicodeEscape
- match: '""'
scope: constant.character.escape.powershell
function:
- match: '^(?:\s*+)(?i)(function|filter|configuration|workflow)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)'
captures:
0: meta.function.powershell
1: storage.type.powershell
2: storage.modifier.scope.powershell
3: entity.name.function.powershell
push:
- match: '(?=\{|\()'
pop: true
- include: commentLine
hashtable:
- match: '(@)(\{)'
captures:
1: keyword.other.hashtable.begin.powershell
2: punctuation.section.braces.begin.powershell
push:
- meta_scope: meta.hashtable.powershell
- match: '(\})'
captures:
1: punctuation.section.braces.end.powershell
pop: true
- match: \b((?:\'|\")?)(\w+)((?:\'|\")?)(?:\s+)?(=)(?:\s+)?
scope: meta.hashtable.assignment.powershell
captures:
1: punctuation.definition.string.begin.powershell
2: variable.other.readwrite.powershell
3: punctuation.definition.string.end.powershell
4: keyword.operator.assignment.powershell
- include: scriptblock
- include: main
interpolatedStringContent:
- match: \(
captures:
0: punctuation.section.group.begin.powershell
push:
- meta_content_scope: interpolated.simple.source.powershell
- match: \)
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: main
- include: interpolation
- include: interpolatedStringContent
interpolation:
- match: (\$)(\()
captures:
1: punctuation.definition.variable.powershell
2: punctuation.section.group.begin.powershell
push:
- meta_content_scope: interpolated.complex.source.powershell
- match: \)
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: main
- include: interpolation
- include: interpolatedStringContent
numericConstant:
- 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'
captures:
1: constant.numeric.hex.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?(?:[0-9_]+)?\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.integer.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.octal.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.integer.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?[0-9_]+\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.integer.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?[0-9_]+[\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.integer.powershell
2: keyword.other.powershell
- match: '(?<!\w)([-+]?[0-9_]+[\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b'
captures:
1: constant.numeric.integer.powershell
2: keyword.other.powershell
scriptblock:
- match: '\{'
captures:
0: punctuation.section.braces.begin.powershell
push:
- meta_scope: meta.scriptblock.powershell
- match: '\}'
captures:
0: punctuation.section.braces.end.powershell
pop: true
- include: main
type:
- match: '\['
captures:
0: punctuation.section.bracket.begin.powershell
push:
- match: '\]'
captures:
0: punctuation.section.bracket.end.powershell
pop: true
- match: '(?!\d+|\.)(?:\p{L}|\p{N}|\.)+'
scope: storage.type.powershell
- include: main
unicodeEscape:
- match: '`u\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\g<1>{1,5})}'
scope: constant.character.escape.powershell
- match: '`u(?:\{[0-9a-fA-F]{,6}.)?'
scope: invalid.character.escape.powershell
variable:
- match: (\$)(?i:(False|Null|True))\b
comment: These are special constants.
captures:
0: constant.language.powershell
1: punctuation.definition.variable.powershell
- match: '(\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
comment: These are the other built-in constants.
captures:
0: support.constant.variable.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- 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)?'
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.
captures:
0: support.variable.automatic.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- 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'
comment: Style preference variables as language variables so that they stand out.
captures:
0: variable.language.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(?i:(\$|@)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: storage.modifier.scope.powershell
4: variable.other.member.powershell
- match: '(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: punctuation.section.braces.begin.powershell
3: storage.modifier.scope.powershell
5: punctuation.section.braces.end.powershell
6: variable.other.member.powershell
- match: '(?i:(\$|@)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: support.variable.drive.powershell
4: variable.other.member.powershell
- match: '(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: punctuation.section.braces.begin.powershell
3: support.variable.drive.powershell
5: punctuation.section.braces.end.powershell
6: variable.other.member.powershell
variableNoProperty:
- match: (\$)(?i:(False|Null|True))\b
comment: These are special constants.
captures:
0: constant.language.powershell
1: punctuation.definition.variable.powershell
- match: (\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\b
comment: These are the other built-in constants.
captures:
0: support.constant.variable.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- 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)'
comment: Automatic variables are not constants, but they are read-only...
captures:
0: support.variable.automatic.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- 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
comment: Style preference variables as language variables so that they stand out.
captures:
0: variable.language.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(?i:(\$)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: storage.modifier.scope.powershell
4: variable.other.member.powershell
- match: '(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: storage.modifier.scope.powershell
4: keyword.other.powershell
5: variable.other.member.powershell
- match: '(?i:(\$)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: support.variable.drive.powershell
4: variable.other.member.powershell
- match: '(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell
2: punctuation.section.braces.begin
3: support.variable.drive.powershell
5: punctuation.section.braces.end

@ -0,0 +1,21 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: resolv
file_extensions:
- resolv.conf
scope: source.resolv
contexts:
main:
- scope: comment.line.number-sign
match: \#.*
comment: comment
- comment: configuration
match: "(nameserver|domain|search|sortlist|options)"
scope: keyword.control
- comment: options
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)"
scope: entity.name

@ -0,0 +1,57 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Robot Framework syntax highlighting.
file_extensions:
- robot
scope: source.robot
contexts:
main:
- match: '\$\{(\d+|\d+\.\d*|0[bB][01]+|0[oO][0-7]+|0[xX][0-9a-fA-F]+)\}'
comment: "Robot Framework numbers, like ${1} or ${12.3}"
scope: constant.numeric.robot
- match: '(?i)(%\{[\w|\s]+\})'
comment: "Robot Framework environment variable, like %{USER}"
scope: variable.parameter.robot
- match: '((?<!\\)|(?<=\\\\))[$&]{'
comment: Robot Framework scalar and dictionary variables
push:
- meta_scope: entity.name.class
- match: '\}'
pop: true
- match: '((?<!\\)(@{)|(?<=\\\\)(@{))'
comment: Robot Framework list variables
push:
- meta_scope: entity.name.class
- match: '(}\[.+])|(})'
pop: true
- match: '(?i)^(\|\s*)?(\*{1,3} ?)(settings?|variables?|keywords?|test cases?)( ?\*{1,3})?(\s*\|)?'
comment: Robot Framework data tables
scope: string.robot.header
- match: '(?i)(^\|\s*)?\[?Documentation\]?\s+'
comment: Test case, keyword and settings table documentation
push:
- meta_scope: comment
- match: ^(?!\s*+\.\.\.)
pop: true
- match: '(^| {2,}|\t|\\| {1,})(?<!\\\\)#'
comment: Comment character
push:
- meta_scope: comment
- match: $
pop: true
- match: '(?i)\s+\[(Tags|Setup|Teardown|Template|Timeout|Arguments|Return)\]'
comment: Tests case and keyword settings
scope: storage.type
- match: (?i)^(\|\s*)?(Library|Resource|Test Timeout|Test Template|Test Teardown|Test Setup|Default Tags|Force Tags|Metadata|Variables|Suite Setup|Suite Teardown)(?:( )|( \| ))
comment: Settings table settings, like Library
scope: constant.language
- match: '^(\|\s+)?(?!^\.{3})(?![\|$&])\S+'
comment: Keywords and test cases
push:
- meta_scope: keyword.control.robot
- match: '($|\||\s{2,})'
pop: true
- match: (?i)^\s+(Given|When|and|but|Then)
comment: BDD keywords
scope: string.robot.bdd

1
assets/syntaxes/02_Extra/SLS vendored Submodule

@ -0,0 +1,371 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Swift
file_extensions:
- swift
first_line_match: ^#!/.*\bswift
scope: source.swift
contexts:
main:
- include: shebang-line
- include: comment
- include: attribute
- include: literal
- include: operator
- include: declaration
- include: storage-type
- include: keyword
- include: type
- include: boolean
comment:
- include: documentation-comment
- include: block-comment
- include: in-line-comment
access-level-modifier:
- match: \b(open|public|internal|fileprivate|private)\b(?:\(set\))?
comment: access-level-modifier
scope: keyword.other.access-level-modifier.swift
arithmetic-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+|\-|\*|\/)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.arithmetic.swift
array-type:
- match: \b(Array)(<)
captures:
1: support.type.array.swift
2: punctuation.array.begin.swift
push:
- meta_scope: meta.array.swift
- match: (>)
captures:
1: punctuation.array.end.swift
pop: true
- include: main
assignment-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+|\-|\*|\/|%|<<|>>|&|\^|\||&&|\|\|)?=(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.assignment.swift
attribute:
- match: '((@)(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B))(\()'
captures:
1: storage.modifier.attribute.swift
2: punctuation.definition.attribute.swift
3: punctuation.definition.attribute-arguments.begin.swift
push:
- meta_content_scope: meta.attribute.arguments.swift
- match: \)
captures:
0: punctuation.definition.attribute-arguments.end.swift
pop: true
- include: main
- match: '((@)(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B))'
captures:
1: storage.modifier.attribute.swift
2: punctuation.definition.attribute.swift
bitwise-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(&|\||\^|<<|>>)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.bitwise.swift
block-comment:
- match: /\*
comment: Block comment
captures:
0: punctuation.definition.comment.block.begin.swift
push:
- meta_scope: comment.block.swift
- match: \*/
captures:
0: punctuation.definition.comment.block.end.swift
pop: true
boolean:
- match: \b(true|false)\b
scope: keyword.constant.boolean.swift
branch-statement-keyword:
- include: if-statement-keyword
- include: switch-statement-keyword
catch-statement-keyword:
- match: \b(catch|do)\b
comment: catch-statement
scope: kewyord.control.catch.swift
code-block:
- match: '(\{)'
comment: code-block
captures:
1: punctuation.definition.code-block.begin.swift
push:
- match: '(\})'
captures:
1: punctuation.definition.code-block.end.swift
pop: true
- include: main
collection-type:
- include: array-type
- include: dictionary-type
- match: \b(Array|Dictionary)\b
scope: support.type.swift
comparative-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])((=|!)==?|(<|>)=?|~=)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.comparative.swift
control-transfer-statement-keyword:
- match: \b(continue|break|fallthrough|return)\b
comment: control-transfer-statement
scope: keyword.control.transfer.swift
custom-operator:
- match: '(?<=[\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?![\s)\]},;:])'
scope: keyword.operator.custom.prefix.unary.swift
- match: '(?<![\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?![\s)\]},;:\.])'
scope: keyword.operator.custom.postfix.unary.swift
- match: '(?<=[\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?=[\s)\]},;:])'
scope: keyword.operator.custom.binary.swift
declaration:
- include: import-declaration
- include: function-declaration
declaration-modifier:
- match: \b(class|convenience|dynamic|final|lazy|(non)?mutating|optional|override|required|static|unowned((un)?safe)?|weak)\b
comment: declaration-modifier
scope: keyword.other.declaration-modifier.swift
dictionary-type:
- match: \b(Dictionary)(<)
captures:
1: support.type.dictionary.swift
2: punctuation.dictionary.begin.swift
push:
- meta_scope: meta.dictionary.swift
- match: (>)
captures:
1: punctuation.dictionary.end.swift
pop: true
- include: main
documentation-comment:
- match: /\*\*
comment: Documentation comment
captures:
0: punctuation.definition.comment.block.documentation.begin.swift
push:
- meta_scope: comment.block.documentation.swift
- match: \*/
captures:
0: punctuation.definition.comment.block.documentation.end.swift
pop: true
floating-point-literal:
- match: '\b([0-9][0-9_]*)(\.([0-9][0-9_]*))?([eE][+\-]?([0-9][0-9_]*))?\b'
comment: floating-point-literal -> (decimal-literal)(decimal-fraction)?(decimal-exponent)?
- match: '\b(0x\h[\h_]*)(\.(0x\h[\h_]*))?([pP][+\-]?(0x\h[\h_]*))\b'
comment: floating-point-literal -> (hexadecimal-literal)(hexadecimal-fraction)?(hexadecimal-exponent)
function-body:
- include: code-block
function-declaration:
- match: '\b(func)\s+(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+)\s*(?=\(|<)'
comment: function-declaration
captures:
1: storage.type.function.swift
2: entity.type.function.swift
push:
- meta_scope: meta.function-declaration.swift
- match: '(?<=\})'
pop: true
- include: generic-parameter-clause
- include: parameter-clause
- include: function-result
- include: function-body
function-result:
- match: '(?<![/=\-+!*%<>&|\^~.])(\->)(?![/=\-+!*%<>&|\^~.])\s*'
comment: function-result
captures:
1: keyword.operator.function-result.swift
push:
- meta_scope: meta.function-result.swift
- match: '\s*(?=\{)'
pop: true
- include: type
generic-parameter-clause:
- match: (<)
comment: generic-parameter-clause
captures:
1: punctuation.definition.generic-parameter-clause.begin.swift
push:
- meta_scope: meta.generic-parameter-clause.swift
- match: (>)
captures:
1: punctuation.definition.generic-parameter-clause.end.swift
pop: true
- include: main
identifier:
- match: '(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B)'
comment: identifier
scope: meta.identifier.swift
if-statement-keyword:
- match: \b(if|else)\b
comment: if-statement
scope: keyword.control.if.swift
import-declaration:
- match: '\b(import)\s+(?:(typealias|struct|class|enum|protocol|var|func)\s+)?((?:\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+)(?:\.(?:\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+))*)'
comment: import-declaration
scope: meta.import.swift
captures:
1: keyword.other.import.swift
2: storage.modifier.swift
3: support.type.module.import.swift
in-line-comment:
- match: (//).*
comment: In-line comment
scope: comment.line.double-slash.swift
captures:
1: punctuation.definition.comment.line.double-slash.swift
increment-decrement-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+\+|\-\-)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.increment-or-decrement.swift
integer-literal:
- match: '(\B\-|\b)(0b[01][01_]*)\b'
comment: binary-literal
scope: constant.numeric.integer.binary.swift
- match: '(\B\-|\b)(0o[0-7][0-7_]*)\b'
comment: octal-literal
scope: constant.numeric.integer.octal.swift
- match: '(\B\-|\b)([0-9][0-9_]*)\b'
comment: decimal-literal
scope: constant.numeric.integer.decimal.swift
- match: '(\B\-|\b)(0x\h[\h_]*)\b'
comment: hexadecimal-literal
scope: constant.numeric.integer.hexadecimal.swift
integer-type:
- match: \bU?Int(8|16|32|64)?\b
comment: Int types
scope: support.type.swift
keyword:
- include: branch-statement-keyword
- include: control-transfer-statement-keyword
- include: loop-statement-keyword
- include: catch-statement-keyword
- include: operator-declaration-modifier
- include: declaration-modifier
- include: access-level-modifier
- match: \b(class|deinit|enum|extension|func|import|init|let|protocol|static|struct|subscript|typealias|var|throws|rethrows)\b
comment: declaration keyword
scope: keyword.declaration.swift
- match: \b(break|case|continue|default|do|else|fallthrough|if|in|for|return|switch|where|while|repeat|catch|guard|defer|try|throw)\b
comment: statement keyword
scope: keyword.statement.swift
- match: \b(as|dynamicType|is|new|super|self|Self|Type)\b
comment: expression and type keyword
scope: keyword.other.statement.swift
- match: \b(associativity|didSet|get|infix|inout|left|mutating|none|nonmutating|operator|override|postfix|precedence|prefix|right|set|unowned((un)?safe)?|weak|willSet)\b
comment: other keyword
scope: keyword.other.swift
literal:
- include: integer-literal
- include: floating-point-literal
- include: nil-literal
- include: string-literal
- include: special-literal
logical-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(!|&&|\|\|)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.logical.swift
loop-statement-keyword:
- match: \b(while|repeat|for|in)\b
comment: loop-statement
scope: keyword.control.loop.swift
nil-literal:
- match: \bnil\b
comment: nil-literal
scope: constant.nil.swift
operator:
- include: comparative-operator
- include: assignment-operator
- include: logical-operator
- include: remainder-operator
- include: increment-decrement-operator
- include: overflow-operator
- include: range-operator
- include: bitwise-operator
- include: arithmetic-operator
- include: ternary-operator
- include: type-casting-operator
- include: custom-operator
operator-declaration-modifier:
- match: \b(operator|prefix|infix|postfix)\b
comment: operator-declaration
scope: keyword.other.operator.swift
optional-type:
- match: \b(Optional)(<)
scope: meta.optional.swift
overflow-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\&(\+|\-|\*|\/|%)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.overflow.swift
parameter-clause:
- match: (\()
comment: parameter-clause
captures:
1: punctuation.definition.function-arguments.begin.swift
push:
- meta_scope: meta.parameter-clause.swift
- match: (\))
captures:
1: punctuation.definition.function-arguments.end.swift
pop: true
- include: main
primitive-type:
- match: \b(Int|Float|Double|String|Bool|Character|Void)\b
comment: Primitive types
scope: support.type.swift
protocol-composition-type:
- match: \b(protocol)(<)
scope: meta.protocol.swift
range-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\.\.(?:\.)?(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.range.swift
remainder-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\%(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.remainder.swift
shebang-line:
- match: ^(#!).*$
comment: Shebang line
scope: comment.line.shebang.swift
captures:
1: punctuation.definition.comment.line.shebang.swift
special-literal:
- match: \b__(FILE|LINE|COLUMN|FUNCTION)__\b
scope: keyword.other.literal.swift
storage-type:
- match: \b(var|func|let|class|enum|struct|protocol|extension|typealias)\b
scope: storage.type.swift
string-literal:
- match: \"
captures:
0: string.quoted.double.swift
push:
- meta_scope: meta.literal.string.swift
- match: \"
captures:
0: string.quoted.double.swift
pop: true
- match: '\\([0tnr\"\''\\]|x\h{2}|u\h{4}|U\h{8})'
scope: constant.character.escape.swift
- match: (\\\()
captures:
1: support.punctuation.expression.begin.swift
push:
- meta_content_scope: meta.expression.swift
- match: (\))
captures:
1: support.punctuation.expression.end.swift
pop: true
- include: scope:source.swift
- match: (\"|\\)
scope: invalid.illegal.swift
- match: (.)
scope: string.quoted.double.swift
switch-statement-keyword:
- match: \b(switch|case|default|where)\b
comment: switch-statement
scope: keyword.control.switch.swift
ternary-operator:
- match: '(?<=[\s(\[{,;:])(\?|:)(?=[\s)\]},;:])'
scope: keyword.operator.ternary.swift
type:
- include: primitive-type
- include: integer-type
- include: collection-type
- include: optional-type
- include: protocol-composition-type
type-casting-operator:
- match: \b(is\b|as(\?\B|\b))
scope: keyword.operator.type-casting.swift

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,149 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Verilog
file_extensions:
- v
- V
scope: source.verilog
contexts:
main:
- match: '^\s*(module|function|primitive)\s+\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
scope: meta.entity.module.verilog
captures:
1: storage.type.verilog
2: entity.name.type.class.verilog
- match: '^\s*(?!else)(?!begin)([a-zA-Z_][a-zA-Z0-9_]*)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(\()'
scope: meta.definition.verilog
captures:
1: entity.name.type.class.verilog
2: entity.name.type.instance.verilog
3: keyword.operator.parenthesis.round.verilog
- 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*(\()'
scope: meta.definition.withparameter.verilog
captures:
1: entity.name.type.class.verilog
2: keyword.other.verilog
3: keyword.operator.parenthesis.round.verilog
4: keyword.other.verilog
5: keyword.operator.parenthesis.round.verilog
6: entity.name.type.instance.verilog
7: keyword.operator.parenthesis.round.verilog
- match: '^\s*\b(?!else)(?!begin)([a-zA-Z_][a-zA-Z0-9_]*)\b\s+([#])'
scope: meta.definition.withparameter.verilog
captures:
1: entity.name.type.class.verilog
2: keyword.other.verilog
- match: '^\s*(defparam)\s+([a-zA-Z_][a-zA-Z0-9_]*)(.[a-zA-Z_][a-zA-Z0-9_]*)\s*(=)'
scope: meta.definition.defparam.verilog
captures:
1: keyword.other.verilog
2: entity.name.type.instance.verilog
3: meta.module.parameters.verilog
4: keyword.other.verilog
- 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
scope: keyword.other.verilog
- match: "(#[0-9]+)"
scope: keyword.delay.verilog
- match: \b(initial|always|wait|force|release|assign)\b
scope: keyword.control.verilog
- match: \b(begin|end|fork|join)\b
scope: keyword.other.verilog
- match: \b(forever|repeat|while|for|if|else|case|casex|casez|default|endcase)\b
scope: keyword.control.verilog
- match: '^\s*(`include)\s+(["<].*[">])'
scope: meta.include.verilog
captures:
1: meta.preprocessor.verilog
2: entity.name.type.include.verilog
- match: '^\s*(`ifdef|`ifndef|`undef|`define)\s+([a-zA-Z_][a-zA-Z0-9_]*)\b'
scope: meta.preprocessor.ifdef.verilog
captures:
1: meta.preprocessor.verilog
2: constant.other.define.verilog
- match: '`(celldefine|default_nettype|define|else|elsif|endcelldefine|endif|ifdef|ifndef|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef)\b'
scope: meta.preprocessor.verilog
- match: "[.][_a-zA-Z0-9]+"
scope: meta.module.parameters.verilog
- match: '`\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
scope: constant.other.define.verilog
- include: comments
- match: \b(endmodule|endfunction|endprimitive)\b
scope: storage.type.verilog
- match: '^\s*\b([a-zA-Z_][a-zA-Z0-9_]*)\b\s*(:)\s*'
scope: meta.case.verilog
captures:
1: entity.name.state.verilog
2: keyword.operator.bitwise.verilog
- include: all-types
- match: (==|===|!=|!==|<=|>=|<|>)
scope: keyword.operator.comparison.verilog
- match: (\-|\+|\*|\/|%)
scope: keyword.operator.arithmetic.verilog
- match: (!|&&|\|\|)
scope: keyword.operator.logical.verilog
- match: (&|\||\^|~|<<|>>|\?|:)
scope: keyword.operator.bitwise.verilog
- match: "({|})"
scope: keyword.operator.parenthesis.curly.verilog
- match: (\(|\))
scope: keyword.operator.parenthesis.round.verilog
- match: '(\[|\])'
scope: keyword.operator.parenthesis.square.verilog
- match: "([;,])"
scope: keyword.delimiter.verilog
- match: (#|@|=)
scope: keyword.other.verilog
- 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'
scope: support.type.verilog
- 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)'
scope: constant.numeric.verilog
- include: strings
- match: '\$\b([a-zA-Z_][a-zA-Z0-9_]*)\b'
scope: support.function.verilog
all-types:
- include: storage-type-verilog
- include: storage-modifier-verilog
comments:
- match: /\*
captures:
0: punctuation.definition.comment.verilog
push:
- meta_scope: comment.block.verilog
- match: \*/
captures:
0: punctuation.definition.comment.verilog
pop: true
- match: (//).*$\n?
scope: comment.line.double-slash.verilog
captures:
1: punctuation.definition.comment.verilog
storage-modifier-verilog:
- match: '\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\b'
scope: storage.modifier.verilog
storage-type-verilog:
- match: '\b(wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|parameter|integer)\b'
scope: storage.type.verilog
strings:
- match: '"'
captures:
0: punctuation.definition.string.begin.verilog
push:
- meta_scope: string.quoted.double.verilog
- match: '"'
captures:
0: punctuation.definition.string.end.verilog
pop: true
- match: \\.
scope: constant.character.escape.verilog
- match: "'"
captures:
0: punctuation.definition.string.begin.verilog
push:
- meta_scope: string.quoted.single.verilog
- match: "'"
captures:
0: punctuation.definition.string.end.verilog
pop: true
- match: \\.
scope: constant.character.escape.verilog

@ -63,7 +63,7 @@ contexts:
- match: \b(if|while|for|try|return|throw|end(if|for|while|try)?|au(g|group)|else(if|)?|do|in|catch|finally|:)\b
scope: keyword.control.viml
number_hex:
- match: "#[0-9a-f]{6}"
- match: "0x[0-9a-f]+"
scope: constant.numeric.hex
number_int:
- match: '-?\d+'

1
assets/syntaxes/02_Extra/Vue vendored Submodule

@ -0,0 +1,19 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: requirements.txt
file_extensions:
- requirements.txt
scope: source.requirementstxt
contexts:
main:
- match: (#).*$\n?
scope: comment.line.requirementstxt
captures:
1: punctuation.definition.comment.requirementstxt
- match: '(?i)^[a-z0-9_\-\.]+'
scope: string.package_name.requirementstxt
- match: (?i)==|<|<=|>=|>
scope: keyword.operator.logical.punctuation.requirementstxt
- match: '(?i)\d+\.[\da-z\-_\.]*'
scope: constant.numeric.verions.requirementstxt

@ -0,0 +1,31 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Highlight non-printables
file_extensions:
- show-nonprintable
scope: whitespace
contexts:
main:
- match: "•"
scope: support.function.show-nonprintable.space
- match: "├─*┤"
scope: constant.character.escape.show-nonprintable.tab
- match: "↹"
scope: constant.character.escape.show-nonprintable.tab
- match: "␊"
scope: keyword.operator.show-nonprintable.line-feed
- match: "␍"
scope: string.show-nonprintable.carriage-return
- match: "␀"
scope: entity.other.attribute-name.show-nonprintable.null
- match: "␇"
scope: entity.other.attribute-name.show-nonprintable.bell
- match: "␛"
scope: entity.other.attribute-name.show-nonprintable.escape
- match: "␈"
scope: entity.other.attribute-name.show-nonprintable.backspace
- match: "\\\\x[A-Z0-9][A-Z0-9]"
scope: comment.block.show-nonprintable.backspace
- match: "\\\\u\\{[a-z0-9]+\\}"
scope: comment.block.show-nonprintable.backspace

Some files were not shown because too many files have changed in this diff Show More