summaryrefslogtreecommitdiffstats
path: root/after/indent/html.vim
diff options
context:
space:
mode:
Diffstat (limited to 'after/indent/html.vim')
-rw-r--r--after/indent/html.vim33
1 files changed, 33 insertions, 0 deletions
diff --git a/after/indent/html.vim b/after/indent/html.vim
new file mode 100644
index 00000000..10ca6ce5
--- /dev/null
+++ b/after/indent/html.vim
@@ -0,0 +1,33 @@
+" Language: CoffeeScript
+" Maintainer: Mick Koch <kchmck@gmail.com>
+" URL: http://github.com/kchmck/vim-coffee-script
+" License: WTFPL
+
+" Load the coffee and html indent functions.
+unlet b:did_indent
+runtime indent/coffee.vim
+let s:coffeeIndentExpr = &l:indentexpr
+
+" Load html last so it can overwrite coffee settings.
+unlet b:did_indent
+runtime indent/html.vim
+let s:htmlIndentExpr = &l:indentexpr
+
+" Inject our wrapper indent function.
+setlocal indentexpr=GetCoffeeHtmlIndent(v:lnum)
+
+function! GetCoffeeHtmlIndent(curlinenum)
+ " See if we're inside a coffeescript block.
+ let scriptlnum = searchpair('<script [^>]*type="text/coffeescript"[^>]*>', '',
+ \ '</script>', 'bWn')
+ let prevlnum = prevnonblank(a:curlinenum)
+
+ " If we're in the script block and the previous line isn't the script tag
+ " itself, use coffee indenting.
+ if scriptlnum && scriptlnum != prevlnum
+ exec 'return ' s:coffeeIndentExpr
+ endif
+
+ " Otherwise use html indenting.
+ exec 'return ' s:htmlIndentExpr
+endfunction