X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/10228215c76da4004b5ac4b60cfdf94682ea6e22..720eb2b9821a4147dbd124ff595e36fa2b9b45b2:/spec/indent/indent_spec.rb diff --git a/spec/indent/indent_spec.rb b/spec/indent/indent_spec.rb index ecdbcad..23c1629 100644 --- a/spec/indent/indent_spec.rb +++ b/spec/indent/indent_spec.rb @@ -161,6 +161,41 @@ shared_examples_for "vim" do end end + describe "when line is empty inside a block" do + it "is indented like the previous line" do + vim.feedkeys 'idef a():\1\\2\kcc' + indent.should == shiftwidth + end + end + + describe "when an empty line is after empty line / before non-empty" do + it "is indented like the next line" do + vim.feedkeys 'idef a():\1\\\2\<1\\\\0i\2\kcc' + indent.should == shiftwidth + end + end + + describe "when line is empty inside a block following multi-line statement" do + it "is indented like the previous line" do + vim.feedkeys 'idef a():\x = (1 +\2)\\y\kcc' + indent.should == shiftwidth + end + end + + describe "when line is empty inside a block following stop statement" do + it "is indented like the previous line minus shiftwidth" do + vim.feedkeys 'iif x:\if y:\pass\\z\kcc' + indent.should == shiftwidth + end + end + describe "when using simple control structures" do it "indents shiftwidth spaces" do vim.feedkeys 'iwhile True:\pass' @@ -361,6 +396,14 @@ shared_examples_for "vim" do end end + describe "when an else is used inside of a nested if" do + before { vim.feedkeys 'iif foo:\\if bar:\\\pass\' } + it "indents an else to the inner if" do + vim.feedkeys 'else:' + indent.should == shiftwidth * 2 + end + end + describe "when jedi-vim call signatures are used" do before { vim.command 'syn match jediFunction "JEDI_CALL_SIGNATURE" keepend extend' } @@ -377,6 +420,17 @@ shared_examples_for "vim" do end shared_examples_for "multiline strings" do + before(:each) { + # clear buffer + vim.normal 'gg"_dG' + + # Insert two blank lines. + # The first line is a corner case in this plugin that would shadow the + # correct behaviour of other tests. Thus we explicitly jump to the first + # line when we require so. + vim.feedkeys 'i\\\' + } + describe "when after an '(' that is followed by an unfinished string" do before { vim.feedkeys 'itest("""' } @@ -448,6 +502,16 @@ shared_examples_for "multiline strings" do proposed_indent.should == 4 end end + + describe "when breaking a string after opening parenthesis" do + before { vim.feedkeys 'i foo("""bar' } + it "it does indent the next line as after an opening multistring" do + vim.feedkeys '\' + expected_proposed, expected_indent = multiline_indent(4, 4 + shiftwidth) + indent.should == expected_indent + proposed_indent.should == expected_proposed + end + end end describe "vim when using width of 4" do @@ -501,6 +565,12 @@ describe "vim for cython" do vim.command "enew" vim.command "set ft=cython" vim.command "runtime indent/python.vim" + + # Insert two blank lines. + # The first line is a corner case in this plugin that would shadow the + # correct behaviour of other tests. Thus we explicitly jump to the first + # line when we require so. + vim.feedkeys 'i\\\' } describe "when using a cdef function definition" do