@@ -206,18 +206,15 @@ function s:ExprCol()
206
206
let bal = 0
207
207
while s: SearchLoop (' [{}?:]' ,' bW' ,s: skip_expr )
208
208
if s: LookingAt () == ' :'
209
- if getline (' .' )[col (' .' )-2 ] == ' :'
210
- call cursor (0 ,col (' .' )-1 )
211
- continue
212
- endif
213
- let bal -= 1
209
+ let bal -= ! search (' \m:\%#' ,' bW' )
214
210
elseif s: LookingAt () == ' ?'
215
211
if getline (' .' )[col (' .' ): col (' .' )+ 1 ] = ~ ' ^\.\d\@!'
216
- continue
212
+ " ?. conditional chain, not ternary start
217
213
elseif ! bal
218
214
return 1
215
+ else
216
+ let bal += 1
219
217
endif
220
- let bal += 1
221
218
elseif s: LookingAt () == ' {'
222
219
return ! s: IsBlock ()
223
220
elseif ! s: GetPair (' {' ,' }' ,' bW' ,s: skip_expr )
@@ -365,8 +362,8 @@ function GetJavascriptIndent()
365
362
return -1
366
363
endif
367
364
368
- let s: l1 = max ([ 0 , prevnonblank ( v: lnum ) - ( s: rel ? 2000 : 1000 ),
369
- \ get ( get ( b: , ' hi_indent ' ,{}), ' blocklnr ' ) ])
365
+ let nest = get ( get ( b: , ' hi_indent ' ,{}), ' blocklnr ' )
366
+ let s: l1 = max ([ 0 , prevnonblank ( v: lnum ) - ( s: rel ? 2000 : 1000 ), nest ])
370
367
call cursor (v: lnum ,1 )
371
368
if s: PreviousToken () is ' '
372
369
return
@@ -468,9 +465,7 @@ function GetJavascriptIndent()
468
465
return num_ind
469
466
elseif num
470
467
return s: Nat (num_ind + get (l: ,' case_offset' ,s: sw ()) + l: switch_offset + b_l + is_op)
471
- endif
472
- let nest = get (get (b: ,' hi_indent' ,{}),' blocklnr' )
473
- if nest
468
+ elseif nest
474
469
return indent (nest) + s: sw () + b_l + is_op
475
470
endif
476
471
return b_l + is_op
0 commit comments