Skip to content

Commit c2e610c

Browse files
author
Giacomo Comitti
committed
Use the effective value of 'shiftwidth'
1 parent 7a5115c commit c2e610c

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

autoload/elixir/indent.vim

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ if !exists("g:elixir_indent_max_lookbehind")
22
let g:elixir_indent_max_lookbehind = 30
33
endif
44

5+
" Return the effective value of 'shiftwidth'
6+
function! s:sw()
7+
return &shiftwidth == 0 ? &tabstop : &shiftwidth
8+
endfunction
9+
510
function! 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
338343
function! 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
372377
endfunction
373378

374379
function! 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()
376381
endfunction
377382

378383
function! 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

Comments
 (0)