diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2016-09-11 13:50:56 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2016-09-11 13:50:56 +0200 | 
| commit | 74652b465d7eff97070001317a4ea5557717378d (patch) | |
| tree | 5bf1df2e0decbedf0bebef7e5b1640d75b0c2f14 | |
| parent | 7575da2064c81f4d44cd5a10cc419e8fb97a2dba (diff) | |
| download | vim-polyglot-74652b465d7eff97070001317a4ea5557717378d.tar.gz vim-polyglot-74652b465d7eff97070001317a4ea5557717378d.zip | |
Update twig sourcev2.13.0
| -rw-r--r-- | README.md | 2 | ||||
| -rwxr-xr-x | build | 2 | ||||
| -rw-r--r-- | indent/twig.vim | 80 | 
3 files changed, 82 insertions, 2 deletions
| @@ -111,7 +111,7 @@ If you need full functionality of any plugin, please use it directly with your p  - [tmux](https://github.com/keith/tmux.vim) (syntax, ftplugin, ftdetect)  - [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)  - [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin, ftdetect) -- [twig](https://github.com/evidens/vim-twig) (syntax, ftplugin) +- [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin)  - [typescript](https://github.com/leafgarland/typescript-vim) (syntax, indent, compiler, ftplugin, ftdetect)  - [vala](https://github.com/tkztmk/vim-vala) (syntax, indent, ftdetect)  - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax) @@ -184,7 +184,7 @@ PACKS="    tmux:keith/tmux.vim    tomdoc:wellbredgrapefruit/tomdoc.vim    toml:cespare/vim-toml -  twig:evidens/vim-twig +  twig:lumiliet/vim-twig    typescript:leafgarland/typescript-vim    vala:tkztmk/vim-vala    vbnet:vim-scripts/vbnet.vim diff --git a/indent/twig.vim b/indent/twig.vim new file mode 100644 index 00000000..421f7201 --- /dev/null +++ b/indent/twig.vim @@ -0,0 +1,80 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'twig') == -1 +   +if exists("b:ran_once") +	finish +endif + +let b:ran_once = 1 + +let s:baseIndentExpr=&indentexpr +setlocal indentexpr=GetTwigIndent(v:lnum) + +fun! GetTwigIndent(currentLineNumber) +	let currentLine = getline(a:currentLineNumber) +	let previousLineNumber = prevnonblank(a:currentLineNumber - 1) +	let previousLine = getline(previousLineNumber) + +	if (previousLine =~ s:startStructures || previousLine =~ s:middleStructures) && (currentLine !~ s:endStructures && currentLine !~ s:middleStructures) +		return indent(previousLineNumber) + &shiftwidth +	elseif currentLine =~ s:endStructures || currentLine =~ s:middleStructures +		let previousOpenStructureNumber = s:FindPreviousOpenStructure(a:currentLineNumber) +		let previousOpenStructureLine = getline(previousOpenStructureNumber) +		return indent(previousOpenStructureNumber) +	endif + +    return s:CallBaseIndent() +endf + +function! s:CallBaseIndent() +    exe 'redir => s:outputOfBaseIndent' +    exe 'silent echo ' . s:baseIndentExpr +    exe 'redir END' +    return split(s:outputOfBaseIndent)[0] +endf + + +function! s:FindPreviousOpenStructure(lineNumber) +	let countOpen = 0 +	let countClosed = 0 +	let lineNumber = a:lineNumber +	while lineNumber != 1 && countOpen <= countClosed +		let lineNumber -= 1 +		let currentLine = getline(lineNumber) + +		if currentLine =~ s:startStructures +			let countOpen += 1 +		elseif currentLine =~ s:endStructures +			let countClosed += 1 +		endif +	endwhile + +	return lineNumber +endfunction + +function! s:StartStructure(name) +	return '^\s*{%\s*' . a:name . '.*%}' +endfunction + +function! s:EndStructure(name) +	return '^\s*{%\s*end' . a:name . '.*%}' +endfunction + +function! s:Map(Fun, list) +    if len(a:list) == 0 +        return [] +    else +        return [a:Fun(a:list[0])] + s:Map(a:Fun, a:list[1:]) +    endif +endfunction + +fun! s:BuildStructures() +	let structures = ['if','for','block'] +	let mStructures = ['elseif','else'] +	let s:startStructures = join(s:Map(function('s:StartStructure'), structures), '\|') +	let s:endStructures = join(s:Map(function('s:EndStructure'), structures), '\|') +	let s:middleStructures = join(s:Map(function('s:StartStructure'), mStructures), '\|') +endfun + +call s:BuildStructures() + +endif | 
