mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-12 05:23:51 -05:00
Add ansible support, closes #96
This commit is contained in:
58
indent/ansible.vim
Normal file
58
indent/ansible.vim
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user