blob: a71135145a01515551af2af9ddb99613e4b72d46 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  | 
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
  
" Language:    CoffeeScript
" Maintainer:  Mick Koch <mick@kochm.co>
" URL:         http://github.com/kchmck/vim-coffee-script
" License:     WTFPL
" Load the coffee and html indent functions.
silent! unlet b:did_indent
runtime indent/coffee.vim
let s:coffeeIndentExpr = &l:indentexpr
" Load html last so it can overwrite coffee settings.
silent! 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
endif
  |