|
2 | 2 | " Language: Javascript
|
3 | 3 | " Maintainer: Chris Paul ( https://github.com/bounceme )
|
4 | 4 | " URL: https://github.com/pangloss/vim-javascript
|
5 |
| -" Last Change: Octember 31, 2016 |
| 5 | +" Last Change: November 5, 2016 |
6 | 6 |
|
7 | 7 | " Only load this indent file when no other was loaded.
|
8 | 8 | if exists('b:did_indent')
|
@@ -137,7 +137,7 @@ function s:IsBlock(...)
|
137 | 137 | let l:ln = get(a:000,0,line('.'))
|
138 | 138 | if search('\S','bW')
|
139 | 139 | let char = s:token()
|
140 |
| - let syn = synIDattr(synID(line('.'),col('.')-(char == '{'),0),'name') |
| 140 | + let syn = char =~ '[{>/]' || l:ln != line('.') ? synIDattr(synID(line('.'),col('.')-(char == '{'),0),'name') : '' |
141 | 141 | if syn =~? '\%(xml\|jsx\)'
|
142 | 142 | return char != '{'
|
143 | 143 | elseif syn =~? 'comment'
|
@@ -241,20 +241,16 @@ function GetJavascriptIndent()
|
241 | 241 | let num = b:js_cache[1]
|
242 | 242 |
|
243 | 243 | let [s:W, pline, isOp, stmt, bL, switch_offset] = [s:sw(), s:Trim(l:lnum),0,0,0,0]
|
244 |
| - if num |
245 |
| - if s:current_char() == '{' |
246 |
| - if search(')\_s*\%#','bW') |
247 |
| - let stmt = 1 |
248 |
| - if s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' |
249 |
| - let switch_offset = &cino !~ ':' || !has('float') ? s:W : |
250 |
| - \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) |
251 |
| - if l:line =~# '^' . s:expr_case |
252 |
| - return indent(num) + switch_offset |
253 |
| - endif |
254 |
| - let stmt = pline !~# s:expr_case . '$' |
| 244 | + if num |
| 245 | + if s:current_char() == '{' && s:IsBlock() |
| 246 | + let stmt = 1 |
| 247 | + if s:current_char() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' |
| 248 | + let switch_offset = &cino !~ ':' || !has('float') ? s:W : |
| 249 | + \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) |
| 250 | + if l:line =~# '^' . s:expr_case |
| 251 | + return indent(num) + switch_offset |
255 | 252 | endif
|
256 |
| - elseif s:IsBlock() |
257 |
| - let stmt = 1 |
| 253 | + let stmt = pline !~# s:expr_case . '$' |
258 | 254 | endif
|
259 | 255 | endif
|
260 | 256 | else
|
|
0 commit comments