diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2015-12-17 10:48:07 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2015-12-17 10:48:07 +0100 |
commit | de3110b733880502b23faf9af4d450f22a4b15f7 (patch) | |
tree | dd18074c197a91640abb246ec158dc1895d980be /indent/ansible.vim | |
parent | 7cbd509b6ca5522b33c8bf299468ec1be9052416 (diff) | |
download | vim-polyglot-2.4.0.tar.gz vim-polyglot-2.4.0.zip |
Add ansible support, closes #96v2.4.0
Diffstat (limited to 'indent/ansible.vim')
-rw-r--r-- | indent/ansible.vim | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/indent/ansible.vim b/indent/ansible.vim new file mode 100644 index 00000000..c802186b --- /dev/null +++ b/indent/ansible.vim @@ -0,0 +1,58 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1 + +let s:save_cpo = &cpo +set cpo&vim + +setlocal indentexpr=GetAnsibleIndent(v:lnum) +setlocal indentkeys=!^F,o,O,0#,0},0],<:>,-,*<Return> +setlocal nosmartindent +setlocal expandtab +setlocal softtabstop=2 +setlocal shiftwidth=2 +setlocal commentstring=#%s +setlocal formatoptions=cl +" c -> wrap long comments, including # +" l -> do not wrap long lines + +let s:comment = '\v^\s*#' " # comment +let s:array_entry = '\v^\s*-\s' " - foo +let s:named_module_entry = '\v^\s*-\s*(name|hosts):\s*\S' " - name: 'do stuff' +let s:dictionary_entry = '\v^\s*[^:-]+:\s*$' " with_items: +let s:key_value = '\v^\s*[^:-]+:\s*\S' " apt: name=package +let s:scalar_value = '\v:\s*[>|\|]\s*$' " shell: > + +if exists('*GetAnsibleIndent') + finish +endif + +function GetAnsibleIndent(lnum) + if a:lnum == 1 || !prevnonblank(a:lnum-1) + return 0 + endif + let prevlnum = prevnonblank(a:lnum - 1) + let maintain = indent(prevlnum) + let increase = maintain + &sw + + let line = getline(prevlnum) + if line =~ s:array_entry + if line =~ s:named_module_entry + return increase + else + return maintain + endif + elseif line =~ s:dictionary_entry + return increase + elseif line =~ s:key_value + if line =~ s:scalar_value + return increase + else + return maintain + endif + else + return maintain + endif +endfunction + +let &cpo = s:save_cpo + +endif |