summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2016-09-11 13:50:56 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2016-09-11 13:50:56 +0200
commit74652b465d7eff97070001317a4ea5557717378d (patch)
tree5bf1df2e0decbedf0bebef7e5b1640d75b0c2f14
parent7575da2064c81f4d44cd5a10cc419e8fb97a2dba (diff)
downloadvim-polyglot-74652b465d7eff97070001317a4ea5557717378d.tar.gz
vim-polyglot-74652b465d7eff97070001317a4ea5557717378d.zip
Update twig sourcev2.13.0
-rw-r--r--README.md2
-rwxr-xr-xbuild2
-rw-r--r--indent/twig.vim80
3 files changed, 82 insertions, 2 deletions
diff --git a/README.md b/README.md
index e5407d2a..17fabe26 100644
--- a/README.md
+++ b/README.md
@@ -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)
diff --git a/build b/build
index a63a0f52..d6151cfd 100755
--- a/build
+++ b/build
@@ -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