Thursday, September 20, 2012

Re: Strange error with python interface

On Do 20 Sep 2012 15:21:43 CST, Marcin Szamotulski wrote:
> Hello,
>
> I stumbled upon a strange error which I cannot figure out why it
> happens. Let us write a small vim script (attached to this email) and
> save it somewhere on the HD:
>
> python << EOF
> import re
> patstr = r"""
> ^(?:[^%]|\\%)*(?:
> \\def|
> \\providecommand\s*{|
> \\(?:re)?newcommand\s*{|
> \\(?:re)?newenvironment\s*{|
> \\(?:re)?newtheorem\s*{|
> \\definecolor\s*{)
> ([^{}]*)"""
> print("'%s'" % patstr.strip())
> pat = re.compile(patstr, re.VERBOSE)
> EOF
>
> The script just defines a python verbose regular expression, and prints
> it. When I open this file with
>
> vim -u NONE script.vim
>
> everythings works fine and as expected. The output of the script is:
>
> '^(?:[^%]|\\%)*(?:
> \\def|
> \\providecommand\s*{|
> \\(?:re)?newcommand\s*{|
> \\(?:re)?newenvironment\s*{|
> \\(?:re)?newtheorem\s*{|
> \\definecolor\s*{)
> ([^{}]*)'
>
>
> , but when I open it with
> vim script.vim
> or
> vim --noplugin script.vim
>
> I got the following error:
>
> '^(?:[^%]|\\%)*(?:\def|\providecommand\s*{|\(?:re)?newcommand\s*{|\(?:re)?newenvironment\s*{|\(?:re)?newtheorem\s*{|\definecolor\s*{)
> ([^{}]*)'
> Error detected while processing /tmp/script.vim:
> line 14:
> Traceback (most recent call last):
> File "<string>", line 6, in <module>
> File "/usr/lib64/python2.7/re.py", line 190, in compile
> return _compile(pattern, flags)
> File "/usr/lib64/python2.7/re.py", line 242, in _compile
> raise error, v # invalid expression
> sre_constants.error: unbalanced parenthesis
>
> Note that this time the new lines are not shown when the print()
> statement is executed (why?).
>
> So I started bisecting my vimrc file. Then I ended in the 0 line with
> the 'finish' command and the behaviour presists, I also added 'finish'
> at the very begining of my system vimrc file and the vimrc file. And
> nothing changed (still got the sre_constants.error)
>
> Any ideas?
>
> Best regards,
> Marcin
>
I think you have found a bug.

The line started with backslash(\) is treated by vim as a continuation
line. This is a vim feature, not vi's. So when you use vim -u NONE, it
behaves like vi, but as long as you have a .vimrc, even nothing in it,
vim will change it's behaver to vim.

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments:

Post a Comment