@@ -2,6 +2,11 @@ if !exists("g:elixir_indent_max_lookbehind")
22 let g: elixir_indent_max_lookbehind = 30
33endif
44
5+ " Return the effective value of 'shiftwidth'
6+ function ! s: sw ()
7+ return &shiftwidth == 0 ? &tabstop : &shiftwidth
8+ endfunction
9+
510function ! elixir#indent#indent (lnum)
611 let lnum = a: lnum
712 let text = getline (lnum)
@@ -141,7 +146,7 @@ function! elixir#indent#handle_following_trailing_do(lnum, text, prev_nb_lnum, p
141146 if s: starts_with (a: text , s: keyword (' end' ), a: lnum )
142147 return indent (a: prev_nb_lnum )
143148 else
144- return indent (a: prev_nb_lnum ) + & sw
149+ return indent (a: prev_nb_lnum ) + s: sw ()
145150 end
146151 else
147152 return -1
@@ -152,7 +157,7 @@ function! elixir#indent#handle_following_trailing_binary_operator(lnum, text, pr
152157 let binary_operator = ' \%(=\|<>\|>>>\|<=\|||\|+\|\~\~\~\|-\|&&\|<<<\|/\|\^\^\^\|\*\)'
153158
154159 if s: ends_with (a: prev_nb_text , binary_operator, a: prev_nb_lnum )
155- return indent (a: prev_nb_lnum ) + & sw
160+ return indent (a: prev_nb_lnum ) + s: sw ()
156161 else
157162 return -1
158163 endif
@@ -175,7 +180,7 @@ function! elixir#indent#handle_starts_with_pipe(lnum, text, prev_nb_lnum, prev_n
175180 else
176181 let next_word_pos = match (strpart (a: prev_nb_text , pos+ 1 , len (a: prev_nb_text )-1 ), ' \S' )
177182 if next_word_pos == -1
178- return indent (a: prev_nb_lnum ) + & sw
183+ return indent (a: prev_nb_lnum ) + s: sw ()
179184 else
180185 return pos + 1 + next_word_pos
181186 end
@@ -231,7 +236,7 @@ function! elixir#indent#handle_starts_with_binary_operator(lnum, text, prev_nb_l
231236 else
232237 let next_word_pos = match (strpart (a: prev_nb_text , pos+ 1 , len (a: prev_nb_text )-1 ), ' \S' )
233238 if next_word_pos == -1
234- return indent (a: prev_nb_lnum ) + & sw
239+ return indent (a: prev_nb_lnum ) + s: sw ()
235240 else
236241 return pos + 1 + next_word_pos
237242 end
@@ -296,7 +301,7 @@ function! s:do_handle_inside_with(pair_lnum, pair_col, lnum, text, prev_nb_lnum,
296301
297302 if s: starts_with (a: text , ' \Cdo:' , a: lnum )
298303 call s: debug (" current line is do:" )
299- return pair_col - 1 + & sw
304+ return pair_col - 1 + s: sw ()
300305 elseif s: starts_with (a: text , ' \Celse:' , a: lnum )
301306 call s: debug (" current line is else:" )
302307 return pair_col - 1
@@ -305,13 +310,13 @@ function! s:do_handle_inside_with(pair_lnum, pair_col, lnum, text, prev_nb_lnum,
305310 return pair_col - 1
306311 elseif s: starts_with (pair_text, ' \C\(do\|else\):' , pair_lnum)
307312 call s: debug (" inside do:/else:" )
308- return pair_col - 1 + & sw
313+ return pair_col - 1 + s: sw ()
309314 elseif pair_char == ' w'
310315 call s: debug (" inside with/do" )
311316 return pair_col + 4
312317 elseif pair_char == ' d'
313318 call s: debug (" inside do/else|end" )
314- return pair_col - 1 + & sw
319+ return pair_col - 1 + s: sw ()
315320 else
316321 call s: debug (" inside else/end" )
317322 return s: do_handle_inside_pattern_match_block (pair_lnum, a: text , a: prev_nb_lnum , a: prev_nb_text )
@@ -325,7 +330,7 @@ function! s:do_handle_inside_keyword_block(pair_lnum, _pair_col, _lnum, text, pr
325330 " last line is a "receive" or something
326331 if s: starts_with (a: prev_nb_text , keyword_pattern, a: prev_nb_lnum )
327332 call s: debug (" prev nb line is keyword" )
328- return indent (a: prev_nb_lnum ) + & sw
333+ return indent (a: prev_nb_lnum ) + s: sw ()
329334 else
330335 return s: do_handle_inside_pattern_match_block (a: pair_lnum , a: text , a: prev_nb_lnum , a: prev_nb_text )
331336 end
@@ -338,10 +343,10 @@ endfunction
338343function ! s: do_handle_inside_pattern_match_block (block_start_lnum, text, prev_nb_lnum, prev_nb_text)
339344 if a: text = ~ ' ->'
340345 call s: debug (" current line contains ->" )
341- return indent (a: block_start_lnum ) + & sw
346+ return indent (a: block_start_lnum ) + s: sw ()
342347 elseif a: prev_nb_text = ~ ' ->'
343348 call s: debug (" prev nb line contains ->" )
344- return indent (a: prev_nb_lnum ) + & sw
349+ return indent (a: prev_nb_lnum ) + s: sw ()
345350 else
346351 return indent (a: prev_nb_lnum )
347352 end
@@ -364,21 +369,21 @@ function! s:do_handle_inside_square_brace(pair_lnum, pair_col, _lnum, _text, _pr
364369 if indent_pos != -1
365370 return indent_pos + a: pair_col
366371 else
367- return indent (a: pair_lnum ) + & sw
372+ return indent (a: pair_lnum ) + s: sw ()
368373 endif
369374 else
370375 return -1
371376 end
372377endfunction
373378
374379function ! s: do_handle_inside_curly_brace (pair_lnum, _pair_col, _lnum, _text, _prev_nb_lnum, _prev_nb_text)
375- return indent (a: pair_lnum ) + & sw
380+ return indent (a: pair_lnum ) + s: sw ()
376381endfunction
377382
378383function ! s: do_handle_inside_parens (pair_lnum, pair_col, _lnum, _text, prev_nb_lnum, prev_nb_text)
379384 if a: pair_lnum
380385 if s: ends_with (a: prev_nb_text , ' (' , a: prev_nb_lnum )
381- return indent (a: prev_nb_lnum ) + & sw
386+ return indent (a: prev_nb_lnum ) + s: sw ()
382387 elseif a: pair_lnum == a: prev_nb_lnum
383388 " Align indent (e.g. "def add(a,")
384389 let pos = s: find_last_pos (a: prev_nb_lnum , a: prev_nb_text , ' [^(]\+,' )
@@ -401,9 +406,9 @@ function! elixir#indent#handle_inside_generic_block(lnum, _text, prev_nb_lnum, p
401406 " TODO: @jbodah 2017-03-29: this should probably be the case in *all*
402407 " blocks
403408 if s: ends_with (a: prev_nb_text , ' ,' , a: prev_nb_lnum )
404- return indent (pair_lnum) + 2 * & sw
409+ return indent (pair_lnum) + 2 * s: sw ()
405410 else
406- return indent (pair_lnum) + & sw
411+ return indent (pair_lnum) + s: sw ()
407412 endif
408413 else
409414 return -1
0 commit comments