2
2
" Language: Javascript
3
3
" Maintainer: Chris Paul ( https://github.com/bounceme )
4
4
" URL: https://github.com/pangloss/vim-javascript
5
- " Last Change: October 15 , 2016
5
+ " Last Change: October 19 , 2016
6
6
7
7
" Only load this indent file when no other was loaded.
8
8
if exists (' b:did_indent' )
@@ -50,7 +50,7 @@ function s:skip_func(lnum)
50
50
return ! s: free
51
51
endif
52
52
let s: looksyn = line (' .' )
53
- return (search ( ' \/ ' , ' nbW ' , line (' .' )) || search (' ['' "\\]' ,' nW' ,line ( ' . ' ) )) && eval (s: skip_expr )
53
+ return (strridx ( getline ( ' . ' ), ' / ' , col (' .' )-1 ) + 1 || search (' ['' "\\]' ,' nW' ,s: looksyn )) && eval (s: skip_expr )
54
54
endfunction
55
55
56
56
if has (' reltime' )
@@ -65,10 +65,10 @@ endif
65
65
66
66
function s: Trimline (ln )
67
67
let pline = substitute (getline (a: ln ),' \s*$' ,' ' ,' ' )
68
- let max = max ([strridx (pline,' //' ),strridx (pline,' /*' ),0 ])
69
- while max && synIDattr (synID (a: ln , strlen (pline), 0 ), ' name' ) = ~? ' \%(comment\|doc\)'
70
- let pline = substitute (strpart (pline, 0 , max ),' \s*$' ,' ' ,' ' )
71
- let max = max ([strridx (pline,' //' ),strridx (pline,' /*' ),0 ])
68
+ let l: max = max ([strridx (pline,' //' ),strridx (pline,' /*' ),0 ])
69
+ while l: max && synIDattr (synID (a: ln , strlen (pline), 0 ), ' name' ) = ~? ' \%(comment\|doc\)'
70
+ let pline = substitute (strpart (pline, 0 , l: max ),' \s*$' ,' ' ,' ' )
71
+ let l: max = max ([strridx (pline,' //' ),strridx (pline,' /*' ),0 ])
72
72
endwhile
73
73
return pline
74
74
endfunction
@@ -85,8 +85,8 @@ let g:javascript_opfirst = '^' . g:javascript_opfirst
85
85
let g: javascript_continuation .= ' $'
86
86
87
87
function s: OneScope (lnum,text)
88
- return cursor (a: lnum , match (' ' . a: text , ' \%(\<else\|\<do\|=>\)$' )) > - 1 ||
89
- \ cursor (a: lnum , match (' ' . a: text , ' )$' )) > - 1 &&
88
+ return cursor (a: lnum , match (' ' . a: text , ' \%(\<else\|\<do\|=>\)$' )) + 1 ||
89
+ \ cursor (a: lnum , match (' ' . a: text , ' )$' )) + 1 &&
90
90
\ s: GetPair (' (' , ' )' , ' bW' , s: skip_expr , 100 ) > 0 &&
91
91
\ search (' \C\<\%(for\%(\_s\+\%(await\|each\)\)\=\|if\|let\|w\%(hile\|ith\)\)\_s*\%#' ,' bW' )
92
92
endfunction
@@ -121,15 +121,15 @@ endfunction
121
121
function s: IsBlock ()
122
122
let l: ln = line (' .' )
123
123
if search (' \S' ,' bW' )
124
- let char = getline (line ( ' .' ) )[col (' .' )-1 ]
125
- let pchar = getline (line ( ' .' ) )[col (' .' )-2 ]
124
+ let char = getline (' .' )[col (' .' )-1 ]
125
+ let pchar = getline (' .' )[col (' .' )-2 ]
126
126
let syn = synIDattr (synID (line (' .' ),col (' .' )-1 ,0 ),' name' )
127
127
if pchar . char == ' */' && syn = ~? ' comment'
128
128
if ! search (' \/\*' ,' bW' ) || ! search (' \S' ,' bW' )
129
129
return 1
130
130
endif
131
- let char = getline (line ( ' .' ) )[col (' .' )-1 ]
132
- let pchar = getline (line ( ' .' ) )[col (' .' )-2 ]
131
+ let char = getline (' .' )[col (' .' )-1 ]
132
+ let pchar = getline (' .' )[col (' .' )-2 ]
133
133
let syn = synIDattr (synID (line (' .' ),col (' .' )-1 ,0 ),' name' )
134
134
endif
135
135
if syn = ~? ' \%(xml\|jsx\)'
@@ -143,7 +143,7 @@ function s:IsBlock()
143
143
elseif char == ' >'
144
144
return pchar == ' =' || syn = ~? ' ^jsflow'
145
145
elseif char == ' :'
146
- return strpart (getline (line ( ' .' ) ),0 ,col (' .' )) = ~# s: expr_case . ' $'
146
+ return strpart (getline (' .' ),0 ,col (' .' )) = ~# s: expr_case . ' $'
147
147
else
148
148
return char !~# ' [-=~!<*+,/?^%|&([]'
149
149
endif
@@ -254,7 +254,7 @@ function GetJavascriptIndent()
254
254
let s: W = s: sw ()
255
255
let pline = s: Trimline (l: lnum )
256
256
call cursor (b: js_cache [1 ],b: js_cache [2 ])
257
- let bchar = getline (b: js_cache [ 1 ])[ b: js_cache [ 2 ] -1 ] == ' {'
257
+ let bchar = getline (' . ' )[ col ( ' . ' ) -1 ] == ' {'
258
258
let switch_offset = ! num || ! bchar || ! (search (' )\_s*\%#' ,' bW' ) &&
259
259
\ s: GetPair (' (' , ' )' , ' bW' , s: skip_expr , 100 ) > 0 && search (' \C\<switch\_s*\%#' ,' bW' )) ? 0 :
260
260
\ &cino !~ ' :' || ! has (' float' ) ? s: W :
@@ -264,7 +264,7 @@ function GetJavascriptIndent()
264
264
let isOp = l: line = ~# g: javascript_opfirst || pline !~# s: expr_case . ' $' && pline = ~# g: javascript_continuation
265
265
let bL = s: iscontOne (l: lnum ,num,isOp)
266
266
let bL -= (bL && l: line = ~ ' ^{' ) * s: W
267
- if isOp && (! num || cursor (b: js_cache [1 ],b: js_cache [2 ]) || (bchar && s: IsBlock () ))
267
+ if isOp && (! num || bchar && cursor (b: js_cache [1 ],b: js_cache [2 ])+ 1 && s: IsBlock ())
268
268
return (num ? indent (num) : - s: W ) + (s: W * 2 ) + switch_offset + bL
269
269
elseif num
270
270
return indent (num) + s: W + switch_offset + bL
0 commit comments