]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Fix indent with pythonTodo at end of line (#124)
authorDaniel Hahler <git@thequod.de>
Sat, 11 May 2019 13:10:47 +0000 (15:10 +0200)
committerGitHub <noreply@github.com>
Sat, 11 May 2019 13:10:47 +0000 (15:10 +0200)
"pythonTodo" is contained in "pythonComment".
Fix it by adding "pythonTodo" to the pattern to match special chars.

An alternative might be using `synstack()` to get to "pythonComment"
still, but this is not really necessary (and likely slower).

indent/python.vim
spec/indent/indent_spec.rb

index 5da97e92fb590cfd8be21b85031348c96a174d9b..36ff12a86fd06a82a0b1d91e9daef0e8f69effa3 100644 (file)
@@ -69,13 +69,15 @@ let s:stop_statement = '^\s*\(break\|continue\|raise\|return\|pass\)\>'
 let s:skip_after_opening_paren = 'synIDattr(synID(line("."), col("."), 0), "name") ' .
             \ '=~? "\\vcomment|jedi\\S"'
 
 let s:skip_after_opening_paren = 'synIDattr(synID(line("."), col("."), 0), "name") ' .
             \ '=~? "\\vcomment|jedi\\S"'
 
+let s:special_chars_syn_pattern = "\\vstring|comment|^pythonbytes%(contents)=$|pythonTodo|jedi\\S"
+
 if !get(g:, 'python_pep8_indent_skip_concealed', 0) || !has('conceal')
     " Skip strings and comments. Return 1 for chars to skip.
     " jedi* refers to syntax definitions from jedi-vim for call signatures, which
     " are inserted temporarily into the buffer.
     function! s:_skip_special_chars(line, col)
         return synIDattr(synID(a:line, a:col, 0), 'name')
 if !get(g:, 'python_pep8_indent_skip_concealed', 0) || !has('conceal')
     " Skip strings and comments. Return 1 for chars to skip.
     " jedi* refers to syntax definitions from jedi-vim for call signatures, which
     " are inserted temporarily into the buffer.
     function! s:_skip_special_chars(line, col)
         return synIDattr(synID(a:line, a:col, 0), 'name')
-                \ =~? "\\vstring|comment|^pythonbytes%(contents)=$|jedi\\S"
+              \ =~? s:special_chars_syn_pattern
     endfunction
 else
     " Also ignore anything concealed.
     endfunction
 else
     " Also ignore anything concealed.
@@ -90,8 +92,8 @@ else
 
     function! s:_skip_special_chars(line, col)
         return synIDattr(synID(a:line, a:col, 0), 'name')
 
     function! s:_skip_special_chars(line, col)
         return synIDattr(synID(a:line, a:col, 0), 'name')
-                \ =~? "\\vstring|comment|^pythonbytes%(contents)=$|jedi\\S"
-                \ || s:is_concealed(a:line, a:col)
+              \ =~? s:special_chars_syn_pattern
+              \ || s:is_concealed(a:line, a:col)
     endfunction
 endif
 
     endfunction
 endif
 
index 4227b3f7ce144db13be636ec681ab34e8140b383..db66b8f0a877bdc20847f1b2f642b08238a371d8 100644 (file)
@@ -702,7 +702,10 @@ describe "Compact multiline dict" do
 end
 
 describe "Using O" do
 end
 
 describe "Using O" do
-  before { vim.feedkeys 'iif foo:\<CR>' }
+  before {
+    vim.feedkeys '\<ESC>ggdG'
+    vim.feedkeys 'iif foo:\<CR>'
+  }
 
   it "respects autoindent" do
     vim.feedkeys '1\<CR>\<CR>'
 
   it "respects autoindent" do
     vim.feedkeys '1\<CR>\<CR>'
@@ -727,3 +730,17 @@ describe "searchpairpos" do
     indent.should == shiftwidth
   end
 end
     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