summaryrefslogtreecommitdiffstats
path: root/indent/mustache.vim
diff options
context:
space:
mode:
Diffstat (limited to 'indent/mustache.vim')
-rw-r--r--indent/mustache.vim126
1 files changed, 1 insertions, 125 deletions
diff --git a/indent/mustache.vim b/indent/mustache.vim
index fbff2fa0..3387485e 100644
--- a/indent/mustache.vim
+++ b/indent/mustache.vim
@@ -1,129 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1
-" Mustache & Handlebars syntax
-" Language: Mustache, Handlebars
-" Maintainer: Juvenn Woo <machese@gmail.com>
-" Screenshot: http://imgur.com/6F408
-" Version: 3
-" Last Change: 26 Nov 2018
-" Remarks: based on eruby indent plugin by tpope
-" References:
-" [Mustache](http://github.com/defunkt/mustache)
-" [Handlebars](https://github.com/wycats/handlebars.js)
-" [ctemplate](http://code.google.com/p/google-ctemplate/)
-" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html)
-" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html)
-
-if exists("b:did_indent_hbs")
- finish
-endif
-
-unlet! b:did_indent
-setlocal indentexpr=
-
-runtime! indent/html.vim
-unlet! b:did_indent
-
-" Force HTML indent to not keep state.
-let b:html_indent_usestate = 0
-
-if &l:indentexpr == ''
- if &l:cindent
- let &l:indentexpr = 'cindent(v:lnum)'
- else
- let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
- endif
-endif
-let b:handlebars_subtype_indentexpr = &l:indentexpr
-
-let b:did_indent = 1
-let b:did_indent_hbs = 1
-
-setlocal indentexpr=GetHandlebarsIndent()
-setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when
-
-" Only define the function once.
-if exists("*GetHandlebarsIndent")
- finish
-endif
-
-function! GetHandlebarsIndent(...)
- " The value of a single shift-width
- if exists('*shiftwidth')
- let sw = shiftwidth()
- else
- let sw = &sw
- endif
-
- if a:0 && a:1 == '.'
- let v:lnum = line('.')
- elseif a:0 && a:1 =~ '^\d'
- let v:lnum = a:1
- endif
- let vcol = col('.')
- call cursor(v:lnum,1)
- call cursor(v:lnum,vcol)
- exe "let ind = ".b:handlebars_subtype_indentexpr
-
- " Workaround for Andy Wokula's HTML indent. This should be removed after
- " some time, since the newest version is fixed in a different way.
- if b:handlebars_subtype_indentexpr =~# '^HtmlIndent('
- \ && exists('b:indent')
- \ && type(b:indent) == type({})
- \ && has_key(b:indent, 'lnum')
- " Force HTML indent to not keep state
- let b:indent.lnum = -1
- endif
- let lnum = prevnonblank(v:lnum-1)
- let prevLine = getline(lnum)
- let currentLine = getline(v:lnum)
-
- " all indent rules only apply if the block opening/closing
- " tag is on a separate line
-
- " indent after block {{#block
- if prevLine =~# '\v\s*\{\{[#^].*\s*'
- let ind = ind + sw
- endif
- " but not if the block ends on the same line
- if prevLine =~# '\v\s*\{\{\#(.+)(\s+|\}\}).*\{\{\/\1'
- let ind = ind - sw
- endif
- " unindent after block close {{/block}}
- if currentLine =~# '\v^\s*\{\{\/\S*\}\}\s*'
- let ind = ind - sw
- endif
- " indent after component block {{a-component
- if prevLine =~# '\v\s*\{\{\w'
- let ind = ind + sw
- endif
- " but not if the component block ends on the same line
- if prevLine =~# '\v\s*\{\{\w(.+)\}\}'
- let ind = ind - sw
- endif
- " unindent }} lines, and following lines if not inside a block expression
- let savedPos = getpos('.')
- if currentLine =~# '\v^\s*\}\}\s*$' || (currentLine !~# '\v^\s*\{\{\/' && prevLine =~# '\v^\s*[^\{\} \t]+\}\}\s*$')
- let closingLnum = search('}}\s*$', 'Wbc', lnum)
- let [openingLnum, col] = searchpairpos('{{', '', '}}', 'Wb')
- if openingLnum > 0 && closingLnum > 0
- if strpart(getline(openingLnum), col - 1, 3) !~ '{{[#^]'
- let ind = ind - sw
- endif
- else
- call setpos('.', savedPos)
- endif
- endif
- " unindent {{else}}
- if currentLine =~# '\v^\s*\{\{else.*\}\}\s*$'
- let ind = ind - sw
- endif
- " indent again after {{else}}
- if prevLine =~# '\v^\s*\{\{else.*\}\}\s*$'
- let ind = ind + sw
- endif
-
- return ind
-endfunction
+runtime! indent/handlebars.vim
endif