Vim Tips Wiki
Advertisement

Use this page to discuss script 3003 3003

  • Add constructive comments, bug reports, or discuss improvements (see the guideline).
  • Do not document the script here (the author should do that on vim.org).
  • This page may be out of date: check the script's vim.org page above, and its release notes.

Python indenting script

This is my attempt at indenting Python to conform to PEP8. Based on the 7.2 Python indentation, with bits of script#974 hacked in.

Sample data

This is the Python code I tested with:

import line2, line3, line4, line5

class B:
    def foo():
        line1 = (line3({[a, b]
                        : 3,
                       }
                      ),
                 (
                  ( "hello" ),
                  99,
                 ),
                 line4)
        line5("foo",
              ("bar",
               "bat",
               "baz"),
              "snaf")

def bar(b, c):
    a = (b
         + c) - (c
                 + b)

class Rectangle(Blob):
    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        """
        fjlaskdjf
        """
        if width == 0 and height == 0 and \
           color == 'red' and emphasis == 'strong' or \
           highlight > 100:
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
            Blob.__init__(self, width, height,
                          color, emphasis, highlight)

Comments

This is largely a huge improvement, but the indentation inside braces, brackets, etc. is a little aggressive.

For example:

 some_really_long_thing = {
    'foo': 'bar',<ENTER>

Hitting <ENTER> will always indent the cursor to the level of the "{", ignoring the previous lines indentation level.

Advertisement