From b96f5845ed7594cdc38355f6fae49a55a3725b2c Mon Sep 17 00:00:00 2001 From: w0rp Date: Tue, 20 Jun 2017 09:39:58 +0100 Subject: [PATCH] Fix #667 - Do not add extra blank lines for add_blank_lines_for_python_control_statements --- autoload/ale/fixers/generic_python.vim | 5 +++- .../test_python_add_blank_lines_fixer.vader | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/autoload/ale/fixers/generic_python.vim b/autoload/ale/fixers/generic_python.vim index 1a4e1e9..8bdde50 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 04ae8b4..4a91aa1 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()