|
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