From d9efc9643da118f0928f204d2c5d3ce0e987eb44 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 26 Jul 2018 11:04:30 +0200 Subject: [PATCH] Handle byte strings in s:skip_special_chars (#113) Fixes https://github.com/Vimjas/vim-python-pep8-indent/issues/72. Closes https://github.com/Vimjas/vim-python-pep8-indent/pull/71. Closes https://github.com/Vimjas/vim-python-pep8-indent/pull/68. --- indent/python.vim | 2 +- spec/indent/bytes_spec.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 spec/indent/bytes_spec.rb diff --git a/indent/python.vim b/indent/python.vim index c56c2dc..8fb5a9b 100644 --- a/indent/python.vim +++ b/indent/python.vim @@ -61,7 +61,7 @@ let s:stop_statement = '^\s*\(break\|continue\|raise\|return\|pass\)\>' " jedi* refers to syntax definitions from jedi-vim for call signatures, which " are inserted temporarily into the buffer. let s:skip_special_chars = 'synIDattr(synID(line("."), col("."), 0), "name") ' . - \ '=~? "\\vstring|comment|jedi\\S"' + \ '=~? "\\vstring|comment|pythonbytes|jedi\\S"' let s:skip_after_opening_paren = 'synIDattr(synID(line("."), col("."), 0), "name") ' . \ '=~? "\\vcomment|jedi\\S"' diff --git a/spec/indent/bytes_spec.rb b/spec/indent/bytes_spec.rb new file mode 100644 index 0000000..260a2ab --- /dev/null +++ b/spec/indent/bytes_spec.rb @@ -0,0 +1,26 @@ +require "spec_helper" + +describe "handles byte strings" do + before(:all) { + vim.command 'syn region pythonBytes start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell' + } + + 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\\\' + } + + it "it does not indent to bracket in byte string" do + vim.feedkeys 'ireg = b"["\' + vim.echo('map(synstack(line("."), col(".")), "synIDattr(v:val, \"name\")")' + ).should == "['pythonBytes']" + vim.feedkeys 'o' + indent.should == 0 + end +end -- 2.39.5