Function editing with Vim throws IndentError

Matimus mccredie at gmail.com
Wed Jul 23 10:55:50 EDT 2008


On Jul 22, 2:02 pm, ptn <tn.pa... at gmail.com> wrote:
> Hi everybody,
>
> I have a weird problem.  Say I have a .py file with some functions in
> it, like this:
>
>     # (...)
>     def foo():
>         print("bar")
>
> When I open it and add a line to one of the functions,
>
>     # (...)
>     def foo():
>         troz = "bar"
>         print(troz)
>
> I get the following traceback from the interpreter:
>
>     Traceback (most recent call last):
>       File "SOMEWHERE/example.py", line ??
>         troz = "bar"
>                           ^
>     IndentationError: unindent does not match any outer indentation
> level
>
> And so I'm forced to rewrite the function entirely just to add the new
> line.
>
> I thought that my problem was the w option from formatoptions, so I
> changed my .vimrc file to this:
>
>     augroup filetype
>       autocmd BufNewFile,BufRead *.txt set filetype=human
>     augroup END
>     autocmd FileType human setlocal formatoptions+=ta2w
>     autocmd FileType lisp,scheme,python,c,java,vim setlocal
> formatoptions-=ta2w
>
> But the problem didn't go away.  I don't think this has anything to
> do
> with the tabs and spaces, because I have them set up like this:
>
>     set tabstop=4 shiftwidth=4 expandtab
>
> which is the standard way to handle them.
>
> The scripts I load are: qbuf, TagList, indent/python.vim and a reduced
> version of the standard python.vim
>
> Could someone provide some pointers?
>
> Thanks,
>
> Pablo Torres N.

That isn't the standard. With that setup tabs will show up as 4
spaces, and still confuse you. You want this:

set shiftwidth=4
set tabstop=8
set softtabstop=4
set expandtab

tab characters in the file will show up as 8 characters long (which is
how the python interpreter sees them also) but pressing tab will
insert 4 spaces.

Matt



More information about the Python-list mailing list