X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/659ef8fe6e0fdaa4672bccf54f30f2a4b51f5917..b0bb7f66733400fe8ac914fab8860aec8d38b915:/indent/python.vim?ds=sidebyside diff --git a/indent/python.vim b/indent/python.vim index 9c3aa0c..4d1edc2 100644 --- a/indent/python.vim +++ b/indent/python.vim @@ -3,7 +3,6 @@ " Maintainer: Hynek Schlawack " Prev Maintainer: Eric Mc Sween (address invalid) " Original Author: David Bustos (address invalid) -" Last Change: 2012-06-21 " License: Public Domain " Only load this indent file when no other was loaded. @@ -160,20 +159,28 @@ function! GetPythonPEPIndent(lnum) return -1 endif - " If this line is explicitly joined, try to find an indentation that looks - " good. + " If this line is explicitly joined, find the first indentation that is a + " multiple of four and will distinguish itself from next logical line. if pline =~ '\\$' - let compound_statement = '^\s*\(if\|while\|for\s.*\sin\|except\)\s*' - let maybe_indent = matchend(getline(sslnum), compound_statement) - if maybe_indent != -1 - return maybe_indent + let maybe_indent = indent(sslnum) + &sw + let control_structure = '^\s*\(if\|while\|for\s.*\sin\|except\)\s*' + if match(getline(sslnum), control_structure) != -1 + " add extra indent to avoid E125 + return maybe_indent + &sw else - return indent(sslnum) + &sw * 2 + " control structure not found + return maybe_indent endif endif " If the previous line ended with a colon and is not a comment, indent " relative to statement start. + let pline = substitute(pline, '\\\\', '', 'g') + if v:version > 703 || (v:version == 703 && has('patch1037')) + let pline = substitute(pline, '".\{-}\\\@1