vim: improve *.nix plugin (#4662)

- Sync syntax from source.
- Add indentation conventions.
This commit is contained in:
Vladimír Čunát 2014-11-14 22:05:57 +01:00
parent 4fe383de48
commit 6d6695ec14

View File

@ -23,39 +23,42 @@ new file mode 100644
index 0000000..a2f9918 index 0000000..a2f9918
--- /dev/null --- /dev/null
+++ b/runtime/syntax/nix.vim +++ b/runtime/syntax/nix.vim
@@ -0,0 +1,47 @@ @@ -0,0 +1,56 @@
+" Vim syntax file +" Vim syntax file
+" Language: nix +" Language: nix
+" Maintainer: Marc Weber <marco-oweber@gmx.de> +" Maintainer: Marc Weber <marco-oweber@gmx.de>
+" Modify and commit if you feel that way +" Modify and commit if you feel that way
+" Last Change: 2007 Dec +" Last Change: 2011 Jun
+" +"
+" this syntax file can be still be enhanced very much.. +" this syntax file can be still be enhanced very much..
+" Don't ask, do it :-) +" Don't ask, do it :-)
+" This file (github.com/MarcWeber/vim-addon-nix) is periodically synced with
+" the patch found in vim_configurable (nixpkgs)
+ +
+" Quit when a (custom) syntax file was already loaded +" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax") +if exists("b:current_syntax")
+ finish + finish
+endif +endif
+ +
+syn keyword nixKeyword let in rec assert inherit import true false null with ... +
+syn keyword nixBuiltin import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation +sy cluster nixStrings contains=nixStringParam,nixStringIndented
+
+syn keyword nixKeyword let throw inherit import true false null with
+syn keyword nixConditional if else then +syn keyword nixConditional if else then
+syn keyword nixBrace ( ) { } = +syn keyword nixBrace ( ) { } =
+syn keyword nixBuiltin __currentSystem __currentTime __isFunction __getEnv __trace __toPath __pathExists +syn keyword nixBuiltin __currentSystem __currentTime __isFunction __getEnv __trace __toPath __pathExists
+ \ __readFile __toXML __toFile __filterSource __attrNames __getAttr __hasAttr __isAttrs __listToAttrs __isList + \ __readFile __toXML __toFile __filterSource __attrNames __getAttr __hasAttr __isAttrs __listToAttrs __isList
+ \ __head __tail __add __sub __lessThan __substring __stringLength + \ __head __tail __add __sub __lessThan __substring __stringLength
+ +
+syn match nixAttr "[a-zA-Z0-9-_]\+\ze\s*=" +syn region nixStringIndented start=+''+ skip=+'''\|''${\|"+ end=+''+ contains=nixStringParam
+syn match nixFuncArg "\zs[a-zA-Z0-9-_]\+\ze\s*:" +" syn region nixString start=+"+ skip=+\\"+ end=+"+
+syn region nixStringParam start=+\${+ end=+}+ +syn match nixAttr "\w\+\ze\s*="
+syn match nixFuncArg "\zs\w\+\ze\s*:"
+syn region nixStringParam start=+\${+ end=+}+ contains=@nixStrings
+syn region nixMultiLineComment start=+/\*+ skip=+\\"+ end=+\*/+ +syn region nixMultiLineComment start=+/\*+ skip=+\\"+ end=+\*/+
+syn match nixEndOfLineComment "#.*$" +syn match nixEndOfLineComment "#.*$"
+syn region nixStringIndented start=+''+ skip=+'''\|''${\|"+ end=+''+ contains=nixStringParam
+syn region nixString start=+"+ skip=+\\"+ end=+"+ contains=nixStringParam
+ +
+hi def link nixKeyword Keyword +hi def link nixKeyword Keyword
+hi def link nixBuiltin Function
+hi def link nixConditional Conditional +hi def link nixConditional Conditional
+hi def link nixBrace Special +hi def link nixBrace Special
+hi def link nixString String +hi def link nixString String
@ -67,9 +70,20 @@ index 0000000..a2f9918
+hi def link nixAttr Identifier +hi def link nixAttr Identifier
+hi def link nixFuncArg Identifier +hi def link nixFuncArg Identifier
+ +
+syn sync maxlines=20000
+syn sync minlines=50000
+
+let b:current_syntax = "nix" +let b:current_syntax = "nix"
+ +
+" thanks to iElectric
+" scan backwards to find begining of multiline statements +" scan backwards to find begining of multiline statements
+syn sync ccomment nixMultiLineComment minlines=10 maxlines=500 +syn sync ccomment nixMultiLineComment minlines=10 maxlines=500
+syn sync ccomment nixStringIndented minlines=10 maxlines=500 +syn sync ccomment nixStringIndented minlines=10 maxlines=500
+syn sync ccomment nixString maxlines=10 +syn sync ccomment nixString maxlines=10
diff --git a/runtime/ftplugin/nix.vim b/runtime/ftplugin/nix.vim
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/nix.vim
@@ -0,0 +1,2 @@
+" coding conventions
+setlocal sw=2 ts=2 expandtab