From 21d015721aed69d630db7a32b2757a870514ab08 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 5 Nov 2016 14:28:50 -0700 Subject: [PATCH 1/4] refactoring block conditions --- indent/javascript.vim | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index f4df091c..271127b5 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -137,7 +137,7 @@ function s:IsBlock(...) let l:ln = get(a:000,0,line('.')) if search('\S','bW') let char = s:token() - let syn = synIDattr(synID(line('.'),col('.')-(char == '{'),0),'name') + let syn = char =~ '[{>/]' || l:ln != line('.') ? synIDattr(synID(line('.'),col('.')-(char == '{'),0),'name') : '' if syn =~? '\%(xml\|jsx\)' return char != '{' elseif syn =~? 'comment' @@ -241,20 +241,20 @@ function GetJavascriptIndent() let num = b:js_cache[1] let [s:W, pline, isOp, stmt, bL, switch_offset] = [s:sw(), s:Trim(l:lnum),0,0,0,0] - if num + if num if s:current_char() == '{' - if search(')\_s*\%#','bW') + if s:IsBlock() let stmt = 1 - if s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' - let switch_offset = &cino !~ ':' || !has('float') ? s:W : - \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) - if l:line =~# '^' . s:expr_case - return indent(num) + switch_offset + if s:current_char() == ')' + if s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' + let switch_offset = &cino !~ ':' || !has('float') ? s:W : + \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) + if l:line =~# '^' . s:expr_case + return indent(num) + switch_offset + endif + let stmt = pline !~# s:expr_case . '$' endif - let stmt = pline !~# s:expr_case . '$' endif - elseif s:IsBlock() - let stmt = 1 endif endif else From a40629414e379c393552b99434c38b4ce4a659ef Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 5 Nov 2016 14:32:38 -0700 Subject: [PATCH 2/4] Update javascript.vim --- indent/javascript.vim | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 271127b5..eb42324f 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -245,15 +245,13 @@ function GetJavascriptIndent() if s:current_char() == '{' if s:IsBlock() let stmt = 1 - if s:current_char() == ')' - if s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' - let switch_offset = &cino !~ ':' || !has('float') ? s:W : - \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) - if l:line =~# '^' . s:expr_case - return indent(num) + switch_offset - endif - let stmt = pline !~# s:expr_case . '$' + if s:current_char() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' + let switch_offset = &cino !~ ':' || !has('float') ? s:W : + \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) + if l:line =~# '^' . s:expr_case + return indent(num) + switch_offset endif + let stmt = pline !~# s:expr_case . '$' endif endif endif From b40a7442235911e23e994b637fe50e744186dcef Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 5 Nov 2016 14:36:37 -0700 Subject: [PATCH 3/4] Update javascript.vim --- indent/javascript.vim | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index eb42324f..05f47273 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -242,17 +242,15 @@ function GetJavascriptIndent() let [s:W, pline, isOp, stmt, bL, switch_offset] = [s:sw(), s:Trim(l:lnum),0,0,0,0] if num - if s:current_char() == '{' - if s:IsBlock() - let stmt = 1 - if s:current_char() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' - let switch_offset = &cino !~ ':' || !has('float') ? s:W : - \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) - if l:line =~# '^' . s:expr_case - return indent(num) + switch_offset - endif - let stmt = pline !~# s:expr_case . '$' + if s:current_char() == '{' && s:IsBlock() + let stmt = 1 + if s:current_char() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 && s:previous_token() ==# 'switch' + let switch_offset = &cino !~ ':' || !has('float') ? s:W : + \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:W : 1)) + if l:line =~# '^' . s:expr_case + return indent(num) + switch_offset endif + let stmt = pline !~# s:expr_case . '$' endif endif else From 2bd103bb45d2fc8eba35faa833d1e0a4891f8bb5 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Sat, 5 Nov 2016 14:43:16 -0700 Subject: [PATCH 4/4] Update javascript.vim --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 05f47273..c2e4af60 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -2,7 +2,7 @@ " Language: Javascript " Maintainer: Chris Paul ( https://github.com/bounceme ) " URL: https://github.com/pangloss/vim-javascript -" Last Change: Octember 31, 2016 +" Last Change: November 5, 2016 " Only load this indent file when no other was loaded. if exists('b:did_indent')