Nix
Nix syntax highlighting for Sublime Text
Details
Installs
- Total 4K
- Win 423
- Mac 2K
- Linux 2K
Dec 22 | Dec 21 | Dec 20 | Dec 19 | Dec 18 | Dec 17 | Dec 16 | Dec 15 | Dec 14 | Dec 13 | Dec 12 | Dec 11 | Dec 10 | Dec 9 | Dec 8 | Dec 7 | Dec 6 | Dec 5 | Dec 4 | Dec 3 | Dec 2 | Dec 1 | Nov 30 | Nov 29 | Nov 28 | Nov 27 | Nov 26 | Nov 25 | Nov 24 | Nov 23 | Nov 22 | Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
Mac | 0 | 3 | 3 | 0 | 1 | 1 | 1 | 2 | 5 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 2 | 2 | 3 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 1 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 2 | 1 | 0 | 0 | 0 |
Linux | 0 | 0 | 4 | 2 | 0 | 2 | 1 | 1 | 2 | 0 | 3 | 1 | 2 | 0 | 0 | 1 | 2 | 1 | 1 | 1 | 3 | 2 | 1 | 6 | 0 | 0 | 0 | 0 | 1 | 4 | 1 | 1 | 0 | 0 | 1 | 1 | 2 | 2 | 0 | 0 | 0 | 3 | 0 | 1 | 1 |
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.