diff --git a/indent/javascript.vim b/indent/javascript.vim index e6af48a8..4f0301da 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -129,13 +129,31 @@ endfunction " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader function s:IsBlock() - return getline(line('.'))[col('.')-1] == '{' && !search('\C\') !~# - \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' - \ : !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') && (search('>\_s*\%#','bW') ? search('=\%#','bW') || - \ synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' : - \ search(s:expr_case . '\_s*\%#','nbW') || !search('[{:]\_s*\%#','bW') || s:IsBlock())) + if getline(line('.'))[col('.')-1] == '{' + if search('\C\') !~# + \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' + elseif char == '>' + return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' + elseif char == ':' + return strpart(getline(line('.')),0,col('.')) =~# s:expr_case . '$' + elseif char == '{' + return s:IsBlock() + else + return char !~# '[-=~!<*+,./?^%|&\[(]' + endif + else + return 1 + endif + endif endfunction " Find line above 'lnum' that isn't empty, in a comment, or in a string.