summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fixers/generic_python.vim5
-rw-r--r--test/fixers/test_python_add_blank_lines_fixer.vader26
2 files changed, 30 insertions, 1 deletions
diff --git a/autoload/ale/fixers/generic_python.vim b/autoload/ale/fixers/generic_python.vim
index 1a4e1e93..8bdde505 100644
--- a/autoload/ale/fixers/generic_python.vim
+++ b/autoload/ale/fixers/generic_python.vim
@@ -5,17 +5,20 @@
function! ale#fixers#generic_python#AddLinesBeforeControlStatements(buffer, lines) abort
let l:new_lines = []
let l:last_indent_size = 0
+ let l:last_line_is_blank = 0
for l:line in a:lines
let l:indent_size = len(matchstr(l:line, '^ *'))
- if l:indent_size <= l:last_indent_size
+ if !l:last_line_is_blank
+ \&& l:indent_size <= l:last_indent_size
\&& match(l:line, '\v^ *(return|if|for|while|break|continue)') >= 0
call add(l:new_lines, '')
endif
call add(l:new_lines, l:line)
let l:last_indent_size = l:indent_size
+ let l:last_line_is_blank = empty(split(l:line))
endfor
return l:new_lines
diff --git a/test/fixers/test_python_add_blank_lines_fixer.vader b/test/fixers/test_python_add_blank_lines_fixer.vader
index 04ae8b45..4a91aa10 100644
--- a/test/fixers/test_python_add_blank_lines_fixer.vader
+++ b/test/fixers/test_python_add_blank_lines_fixer.vader
@@ -83,3 +83,29 @@ Expect python(Newlines should be added):
pass
else:
pass
+
+Given python(A file with a main block):
+ import os
+
+
+ def main():
+ print('hello')
+
+
+ if __name__ == '__main__':
+ main()
+
+Execute(Fix the file):
+ let g:ale_fixers = {'python': ['add_blank_lines_for_python_control_statements']}
+ ALEFix
+
+Expect python(extra newlines shouldn't be added to the main block):
+ import os
+
+
+ def main():
+ print('hello')
+
+
+ if __name__ == '__main__':
+ main()