|
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: October 9, 2016 |
| 5 | +" Last Change: October 12, 2016 |
6 | 6 |
|
7 | 7 | " Only load this indent file when no other was loaded.
|
8 | 8 | if exists('b:did_indent')
|
|
38 | 38 | endif
|
39 | 39 |
|
40 | 40 | let s:line_pre = '^\s*\%(\%(\%(\/\*.\{-}\)\=\*\+\/\s*\)\=\)\@>'
|
41 |
| -let s:line_term = '\s*\%(\%(\/\%(\%(\*.\{-}\*\/\)\|\%(\*\+\)\)\)\s*\)\=$' |
42 | 41 |
|
43 | 42 | let s:expr_case = '\<\%(\%(case\>\s*\S.\{-}\)\|default\)\s*:\C'
|
44 | 43 | " Regex of syntax group names that are or delimit string or are comments.
|
@@ -130,25 +129,32 @@ endfunction
|
130 | 129 | " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
|
131 | 130 | function s:IsBlock()
|
132 | 131 | if getline(line('.'))[col('.')-1] == '{'
|
133 |
| - if search('\C\<return\s*\%#','nbW') |
134 |
| - return 0 |
135 |
| - endif |
136 |
| - if search('\*\/\_s*\%#','bW') && synIDattr(synID(line('.'),col('.'),0),'name') =~? 'comment' |
137 |
| - call searchpair('\/\*','','\*\/','bW') |
138 |
| - endif |
| 132 | + let l:ln = line('.') |
139 | 133 | if search('\S','bW')
|
140 | 134 | let char = getline(line('.'))[col('.')-1]
|
141 |
| - if char =~# '\l' |
| 135 | + let prechar = getline(line('.'))[col('.')-2] |
| 136 | + if char == '/' && prechar == '*' && synIDattr(synID(line('.'),col('.'),0),'name') =~? 'comment' |
| 137 | + if !(search('\/\*','bW') && search('\S','bW')) |
| 138 | + return 1 |
| 139 | + endif |
| 140 | + let char = getline(line('.'))[col('.')-1] |
| 141 | + let prechar = getline(line('.'))[col('.')-2] |
| 142 | + endif |
| 143 | + let syn = synIDattr(synID(line('.'),col('.')-1,0),'name') |
| 144 | + if syn =~? '\%(xml\|jsx\)' |
| 145 | + return char != '{' |
| 146 | + elseif char =~# '\l' |
| 147 | + if line('.') == l:ln && expand('<cword>') ==# 'return' |
| 148 | + return 0 |
| 149 | + endif |
142 | 150 | return expand('<cword>') !~#
|
143 |
| - \ '^\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)$' |
| 151 | + \ '^\%(var\|const\|let\|import\|export\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)$' |
144 | 152 | elseif char == '>'
|
145 |
| - return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' |
| 153 | + return prechar == '=' || syn =~? '^jsflow' |
146 | 154 | elseif char == ':'
|
147 | 155 | return strpart(getline(line('.')),0,col('.')) =~# s:expr_case . '$'
|
148 |
| - elseif char == '{' |
149 |
| - return s:IsBlock() |
150 | 156 | else
|
151 |
| - return char !~# '[-=~!<*+,./?^%|&\[(]' |
| 157 | + return char !~# '[-=~!<*+,/?^%|&([]' |
152 | 158 | endif
|
153 | 159 | else
|
154 | 160 | return 1
|
|
0 commit comments