diff --git a/indent/javascript.vim b/indent/javascript.vim index 77b2453..5af1977 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -34,7 +34,7 @@ let b:indented = 0 let b:in_comment = 0 setlocal indentexpr=GetJsIndent() -setlocal indentkeys+==},=),=],0=*/,0=/*,0=\,,0=;,* +setlocal indentkeys+==},=),=],0=*/,0=/*,0=\,,0=\.,0=;,* if exists("*GetJsIndent") finish endif @@ -50,6 +50,9 @@ let s:expr_comment_end = 'c\*/' let s:expr_comma_start = '^\s*,' let s:expr_var = '^\s*var\s' let s:expr_var_stop = ';' + +let s:expr_op_start = '^\s*\(\.\|+ \|&&\|||\)' + " add $ to Fix " ;(function() { " something; @@ -175,6 +178,24 @@ function! DoIndent(ind, str, pline) endif endif + " a + " .foo <- + " .bar <- + if (match(line, s:expr_op_start) != -1) + if (match(pline, s:expr_op_start) == -1) + let ind = ind + &sw + endif + endif + + " a + " .bar + " newline <- + if (match(pline, s:expr_op_start) != -1) + if (match(line, s:expr_op_start) == -1) + let ind = ind - &sw + endif + endif + if (match(line, s:expr_semic_start) != -1 && match(pline, s:expr_comma_start) != -1) let ind = ind - 2 endif diff --git a/test.js b/test.js index 1e304d6..98f6b23 100644 --- a/test.js +++ b/test.js @@ -217,6 +217,9 @@ var a = a , b = b , c = c; +var a = a + , b = c + var a = a , b = b ; @@ -227,10 +230,35 @@ foo({ , c : c , d : { e : e - f : f + , f : f } , g : {[ h : h , i : i ]} }); + +foo() + .foo + .ff + +bar() + .foo + .bar + +if( a == b + && c == d + && e == f + || g == h + || i == j ) { + + a = b + + c + + d + + a = b + + c + + d +} + +