From 12e5596aa15463ff6cf8a503be4b22b98eff7698 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 22 Oct 2016 20:09:11 -0700 Subject: [PATCH 1/4] check for case statement in switch also removes a dependency on cindent options --- indent/javascript.vim | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 07f4bc1f..7bd4423a 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -205,14 +205,6 @@ function GetJavascriptIndent() let l:line = substitute(l:line,'^\s*\%(\/\*.\{-}\*\/\s*\)*','','') - if l:line =~# '^' . s:expr_case - let cpo_switch = &cpo - set cpo+=% - let ind = cindent(v:lnum) - let &cpo = cpo_switch - return ind - endif - " the containing paren, bracket, curly. Many hacks for performance call cursor(v:lnum,1) let idx = strlen(l:line) ? stridx('])}',l:line[0]) : -1 @@ -247,10 +239,15 @@ function GetJavascriptIndent() let pline = s:Trimline(l:lnum) call call('cursor',b:js_cache[1:]) let bchar = getline('.')[col('.')-1] == '{' - let switch_offset = !num || !bchar || !(search(')\_s*\%#','bW') && - \ s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && search('\C\ 0 && search('\C\ Date: Sat, 22 Oct 2016 21:09:13 -0700 Subject: [PATCH 2/4] optimizations --- indent/javascript.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 7bd4423a..a0d0ab98 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -240,8 +240,10 @@ function GetJavascriptIndent() call call('cursor',b:js_cache[1:]) let bchar = getline('.')[col('.')-1] == '{' let switch_offset = 0 + let in_switch = 0 if num && bchar && search(')\_s*\%#','bW') && \ s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && search('\C\ Date: Sat, 22 Oct 2016 21:13:45 -0700 Subject: [PATCH 3/4] move cursor call --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index a0d0ab98..8c8e9fce 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -235,9 +235,9 @@ function GetJavascriptIndent() return indent(line('.')) endif + call call('cursor',b:js_cache[1:]) let s:W = s:sw() let pline = s:Trimline(l:lnum) - call call('cursor',b:js_cache[1:]) let bchar = getline('.')[col('.')-1] == '{' let switch_offset = 0 let in_switch = 0 From 3fdfb760c18da985c45edd86870b4d9096167ea7 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 22 Oct 2016 21:31:36 -0700 Subject: [PATCH 4/4] ws --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 8c8e9fce..4aeeb6da 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -252,7 +252,7 @@ function GetJavascriptIndent() endif " most significant, find the indent amount - let isOp = l:line =~# s:opfirst || (in_switch && pline =~# s:expr_case . '$' ? 0 : pline =~# s:continuation) + let isOp = l:line =~# s:opfirst || (in_switch && pline =~# s:expr_case . '$' ? 0 : pline =~# s:continuation) let bL = s:iscontOne(l:lnum,num,isOp) let bL -= (bL && l:line[0] == '{') * s:W if isOp && (!num || in_switch || bchar && call('cursor',b:js_cache[1:])+1 && s:IsBlock())