On Nov 11, 2013 6:38 PM, "Marcin Szamotulski" <[email protected]> wrote:
>
> On 09:10 Mon 11 Nov     , Vlad Irnov wrote:
> > On 11/4/13, ZyX <[email protected]> wrote:
> > >> This means in Vim 7.4 Vim script stops after a Vim error occurs in
> > >> Python code. This seems very wrong to me. Vim script writers are used
> > >> to the fact that VimL code execution does not stop after an error
> > >> unless there is a try/catch or when function has "abort" argument.
> > >
> > > Code that relies on this is broken. No matter how is some
functionality used
> > > it *can* be put inside try/catch by the user*. I already got a few
“nice” to
> > > debug bugs when was assuming `echoerr` is not breaking execution flaw
(note:
> > > without any traces of python). Now they will be easier to fix: now
when I
> > > see `echoerr` I say I must remove it.
> > >
> > > For echoing errors from python there is `sys.stderr`.
> > >
> > > Besides, any error shown to user indicates a bug.
> > >
> > > *:
> > >
> > > - Any command and function can be naturally put inside :try/catch in a
> > > script.
> > > - Any mapping can be called with :normal that can be put inside
:try/catch.
> > > - Any autocommand can be called either directly with :doau inside
:try/catch
> > > or by putting commands that invoke autocommand inside :try/catch
(i.e. :e
> > > for BufRead*).
> > >
> > > There is no way write code that will never stop execution on error
without
> > > using :silent! or :try/catch catching the error on your own. Hence
any error
> > > must be considered to break execution. Any code that considers error
not
> > > breaking execution is broken.
> >
> > All this is true in theory. In practice, nobody ever puts the entire
> > Vim script plugin inside try/finally/endtry. The simplest case:
> >
> > let s:keepcpo= &cpo
> > set cpo&vim
> > echo 1
> > let a = bogus
> > echo 2
> > python a = bogus
> > echo 3
> > python vim.command("let a=bogus")
> > " execution stops here
> > echo 4
> > let &cpo= s:keepcpo
> > unlet s:keepcpo
> >
> > When such script is sourced, execution does not stop after a Vim
> > script error or a regular Python error. Why should it stop after a
> > Python vim.error error? This is an inconsistent behavior of Vim error
> > handling that is bound to cause confusion.
> >
> > Regards,
> > Vlad
>
> Just throwing an idea.  Maybe:
>     vim.command("echoerr 'py-vim-Error'")
> should raise a Python exception?

It does raise exception.

> Best regards,
> Marcin
>
> --
> --
> You received this message from the "vim_dev" 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
>
> ---
> You received this message because you are subscribed to the Google Groups
"vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
You received this message from the "vim_dev" 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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Raspunde prin e-mail lui