Thursday, September 20, 2012

Re: Strange error with python interface

On 09:56 Thu 20 Sep , Christian Brabandt wrote:
> 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
>

Thanks, that's a good point. I moved the code to a python module which
is imported with python import statement.

Best,
Marcin

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