This happens: ![](VimAutoIndentJavascriptHtml_001.png) That is: ``` if( dur.match(/:/) ) { let xs = dur.split(":") if( xs.length > 3 ) return nan() if( xs.length == 3 ) { let [ h, m, s ] = xs h = parseInt(h) m = parseInt(m) s = parseFloat(s) if( isNaN(h) || isNaN(m) || isNaN(s) ) return nan() dur = s + 60 * m + 3600 * h } else if( xs.length == 2 ) { let [ m, s ] = xs m = parseInt(m) s = parseFloat(s) if( isNaN(m) || isNaN(s) ) return nan() dur = s + 60 * m } else { return nan() } } else { dur = parseFloat(dur) if( isNaN(dur) ) return nan() } ``` where there are two extra right shifts after an open brace. I suspect that three different autoindent facilities are trying to indent, and are adding to each other.