Nix
Nix syntax highlighting for Sublime Text
Details
Installs
- Total 5K
- Win 437
- Mac 2K
- Linux 2K
Feb 22 | Feb 21 | Feb 20 | Feb 19 | Feb 18 | Feb 17 | Feb 16 | Feb 15 | Feb 14 | Feb 13 | Feb 12 | Feb 11 | Feb 10 | Feb 9 | Feb 8 | Feb 7 | Feb 6 | Feb 5 | Feb 4 | Feb 3 | Feb 2 | Feb 1 | Jan 31 | Jan 30 | Jan 29 | Jan 28 | Jan 27 | Jan 26 | Jan 25 | Jan 24 | Jan 23 | Jan 22 | Jan 21 | Jan 20 | Jan 19 | Jan 18 | Jan 17 | Jan 16 | Jan 15 | Jan 14 | Jan 13 | Jan 12 | Jan 11 | Jan 10 | Jan 9 | Jan 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
Mac | 0 | 1 | 1 | 1 | 2 | 0 | 0 | 2 | 1 | 0 | 2 | 6 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 4 | 4 | 0 | 0 | 0 | 1 | 0 | 1 | 3 | 0 | 2 | 1 | 0 | 2 | 1 | 2 | 1 | 0 | 0 | 2 | 0 | 0 | 3 | 2 |
Linux | 1 | 1 | 1 | 1 | 0 | 2 | 1 | 3 | 2 | 1 | 1 | 1 | 3 | 3 | 7 | 1 | 2 | 0 | 0 | 1 | 1 | 2 | 1 | 2 | 1 | 3 | 2 | 2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 1 | 2 | 1 | 0 | 3 | 3 |
Readme
- Source
- raw.githubusercontent.com
sublime-nix
Nix syntax highlighting for Sublime Text.
This syntax tries to be complete, and marks illegal code as such.
Unfortunately, the syntax highlighter in Sublime Text does not implement a full state machine and therefore this is an approximation of the actual syntax Nix allows. It's a bit looser and will mark things as illegal in corner cases.
Specifically, it has to guess whether { starts an attribute set or a function call, and it can't look ahead to the next lines, so it allows both until it's sure. However, this means that on column 0 the expression end-condition can match on a , or } and this breaks the syntax highlighting. As soon as it is sure of one or the other, this no longer applies. So this is only applicable to empty {} and comma-first function calls on column 0, not a big problem.
Tested against the nixpkgs code and the Nix test suite, it seems to render those ok.
There is some fun code in here, approximating a proper parser by recursing into rules with end conditions matching end of expression.