Skip to content

Commit e0be8bf

Browse files
aldanorblueyed
authored andcommitted
Indent next line if prev line is empty (+tests) (#88)
1 parent 90e00b6 commit e0be8bf

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

indent/python.vim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ function! s:indent_like_previous_line(lnum)
301301

302302
let empty = getline(a:lnum) =~# '^\s*$'
303303

304+
" Current and prev line are empty, next is not -> indent like next.
305+
if empty && a:lnum > 1 &&
306+
\ (getline(a:lnum - 1) =~# '^\s*$') &&
307+
\ !(getline(a:lnum + 1) =~# '^\s*$')
308+
return indent(a:lnum + 1)
309+
endif
310+
304311
" If the previous statement was a stop-execution statement or a pass
305312
if getline(start) =~# s:stop_statement
306313
" Remove one level of indentation if the user hasn't already dedented

spec/indent/indent_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,20 @@
168168
end
169169
end
170170

171+
describe "when an empty line is after empty line / before non-empty" do
172+
it "is indented like the next line" do
173+
vim.feedkeys 'idef a():\<CR>1\<CR>\<CR>\<CR>2\<ESC><<kcc'
174+
indent.should == 0
175+
end
176+
end
177+
178+
describe "when an empty line is after empty line / before non-empty (nested)" do
179+
it "is indented like the next line" do
180+
vim.feedkeys 'idef a():\<CR>1\<CR>\<CR>\<CR>\<ESC>0i\<TAB>2\<ESC>kcc'
181+
indent.should == shiftwidth
182+
end
183+
end
184+
171185
describe "when line is empty inside a block following multi-line statement" do
172186
it "is indented like the previous line" do
173187
vim.feedkeys 'idef a():\<CR>x = (1 +\<CR>2)\<CR>\<CR>y\<ESC>kcc'

0 commit comments

Comments
 (0)