end
describe "when an else is used inside of a nested if" do
- before { vim.feedkeys 'iif foo:\<CR>\<TAB>if bar:\<CR>\<TAB>\<TAB>pass\<CR>' }
- it "indents an else to the inner if" do
+ before { vim.feedkeys 'iif foo:\<CR>if bar:\<CR>pass\<CR>' }
+ it "indents the else to the inner if" do
vim.feedkeys 'else:'
- indent.should == shiftwidth * 2
+ indent.should == shiftwidth
+ end
+ end
+
+ describe "when an else is used outside of a nested if" do
+ before { vim.feedkeys 'iif True:\<CR>if True:\<CR>pass\<CR>\<Esc>0' }
+ it "indents the else to the outer if" do
+ indent.should == 0
+ proposed_indent.should == shiftwidth
+
+ vim.feedkeys 'ielse:'
+ indent.should == 0
+ proposed_indent.should == 0
end
end
end
describe "when after a docstring" do
- before { vim.feedkeys 'i """' }
it "it does indent the next line to the docstring" do
- vim.feedkeys '\<CR>'
+ vim.feedkeys 'i """\<CR>'
+ indent.should == 4
+ proposed_indent.should == 4
+ end
+
+ it "indents the closing docstring quotes" do
+ vim.feedkeys 'i """\<CR>\<CR>"""'
indent.should == 4
proposed_indent.should == 4
+ vim.echo('getline(3)').should == ' """'
+ end
+
+ it "indents non-matching docstring quotes" do
+ vim.feedkeys 'i """\<CR>\<Esc>'
+ vim.feedkeys "0C'''"
+ vim.echo('line(".")').should == "4"
+ vim.echo('getline(".")').should == "'''"
+ indent.should == 0
+ proposed_indent.should == -1
end
end
proposed_indent.should == 0
end
end
+
+describe "Using O" do
+ before {
+ vim.feedkeys '\<ESC>ggdG'
+ vim.feedkeys 'iif foo:\<CR>'
+ }
+
+ it "respects autoindent" do
+ vim.feedkeys '1\<CR>\<CR>'
+ indent.should == shiftwidth
+ vim.feedkeys '\<Esc>ko'
+ indent.should == shiftwidth
+ vim.feedkeys '\<Esc>kO'
+ indent.should == shiftwidth
+ # Uses/keeps indent from line above
+ vim.feedkeys '\<Esc>i2\<Esc>O'
+ indent.should == shiftwidth
+ # Uses/keeps indent from line above
+ vim.feedkeys '\<Esc>j\<Esc>O'
+ indent.should == 0
+ end
+end
+
+describe "searchpairpos" do
+ before { vim.feedkeys '\<ESC>ggdG' }
+ it "handles nested parenthesis" do
+ vim.feedkeys 'iif foo.startswith("("):\<CR>'
+ indent.should == shiftwidth
+ end
+end
+
+describe "o within TODO" do
+ before {
+ vim.feedkeys '\<ESC>ggdG'
+ vim.feedkeys 'iif 1: # TODO\<Esc>'
+ # Assertion that we have a pythonTodo here.
+ vim.echo('synIDattr(synID(line("."), col("."), 0), "name")').should match 'pythonTodo'
+ }
+
+ it "respects autoindent" do
+ vim.feedkeys 'o'
+ indent.should == shiftwidth
+ end
+end