Thursday, September 20, 2012

Re: Strange error with python interface

On Thu, September 20, 2012 09:44, Fermat618 wrote:
> 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.

Yes, use the -N switch for force non-compatible vi mode (see :h -N)

regards,
Christian

--
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: