Justin M. Keyes wrote:

> On Wed, Feb 3, 2016 at 2:10 PM, LCD 47 <[email protected]> wrote:
> > On 3 February 2016, Bram Moolenaar <[email protected]> wrote:
> >>
> >> Lcd wrote:
> >>
> >> > On 3 February 2016, Danek Duvall <[email protected]> wrote:
> >> > [...]
> >> > > I think the most reliable thing to do here is to have a way to
> >> > > know the pid and kill it directly, but since ! goes through
> >> > > a shell, you don't have any way of knowing what the pid of
> >> > > test_channel.py is.
> >> >
> >> >     Or just make the server write its PID to a file with an unique
> >> > name.  This is still not ideal, but it's probably good enough for
> >> > tests.
> >>
> >> Like we do for the port number.  OK, that can work for now.  But we
> >> need job control functionality anyway.  We should use that once it's
> >> implemented.
> >>
> >> Vim can already start jobs, but currently always waits for them to
> >> finish (with "!cmd" or system("cmd")).  Should not be too difficult to
> >> run a job in the background and get its PID.  At least on Unix, not
> >> sure about MS-Windows.
> >
> >     Sure, job control is long overdue, but IMO it wouldn't be simple.
> > Once you can put a process in background you need to be able to deal
> > with a table of background processes, and this means waitpid(), SIGCHLD
> > (perhaps mapped to an autocmd), kill(), timeouts, select(), pipes, the
> > full range of file redirections, and careful (OS-dependent) handling of
> > a pile of signals.
> >
> >     That said, it would be a game changer.  People came up with things
> > like vimproc:
> >
> >         https://github.com/Shougo/vimproc.vim
> >
> >     And then vimproc's interface was found to be too low-level, so they
> > came up with quickrun, which builds over vimproc:
> >
> >         https://github.com/thinca/vim-quickrun
> >
> >     A simpler (but in many ways less satisfactory) aproach might be
> > dispatch:
> >
> >         https://github.com/tpope/vim-dispatch
> >
> >     There are other, somewhat less popular approches:
> >
> >         https://github.com/idbrii/AsyncCommand
> >         https://github.com/xolox/vim-misc
> >         https://github.com/xolox/vim-shell
> >
> >     And then there's NeoVim, which has an embedded terminal to deal with
> > all this. :)
> 
> Neovim uses libuv[1] to achieve job control in a well-tested,
> widely-used (node.js...) cross-platform manner. The embedded terminal
> is provided by libvterm[2]. libuv runs on every platform that Vim *in
> reality* runs on. Recently, Vim finally admitted that it doesn't run
> on DOS, Win95, and Amiga. Perhaps using a widely-used cross-platform
> library like libuv is worth considering for Vim, instead of
> re-inventing it.
> 
> [1] https://github.com/libuv/libuv
> [2] http://bazaar.leonerd.org.uk/c/libvterm/

libuv looks much to big.  And I don't have it on my system, thus it
means it's an extra dependency.  I rather rely on the stuff that's
already in Vim, most of the things needed for job control are already
there in some form.  We can take pieces of libuv when needed (assuming
the license allows that).

-- 
"Hit any key to continue" is very confusing when you have two keyboards.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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/d/optout.

Raspunde prin e-mail lui