I am pretty excited about this patch and hope it makes it in.

Ben, why should asynchronous receive any type of restriction not already placed 
on code that runs some milliseconds after a key press (an existing hook).  
Cancelling asynchronous requests can lead to unpredictable behavior is probably 
never desirable. I've already experienced plugins that block for too long and 
what I do is, I just remove the plugin.

On Tuesday, September 3, 2013 9:04:40 AM UTC-7, Ben Fritz wrote:
> On Sunday, September 1, 2013 8:42:25 PM UTC-5, Geoff Greer wrote:
> > This patch adds asynchronous functions to vimscript. If you want to perform 
> > an action in 700ms, simply:
> > 
> > let timeout_id = settimeout(700, 'echo("hello")')
> > 
> > To cancel the timeout before it's fired:
> > 
> > canceltimeout(timeout_id)
> > 
> > setinterval() also returns an id that can be used with canceltimeout.
> > 
> > The reason for this patch is simple: asynchronous functionality is needed 
> > to implement real-time collaborative editing in Vim. This is one of the 
> > most voted-for features (see http://www.vim.org/sponsor/vote_results.php).
> > 
> > Along with Matt Kaniaris, I founded Floobits to build real-time 
> > collaboration into every editor. We wrote a plugin for Vim, but we had to 
> > use hacks to get async behavior (abusing feedkeys or client-server). These 
> > methods had side-effects such as breaking leaderkeys or other shortcuts. 
> > After a lot of experimenting, we decided to try patching Vim.
> > 
> > Since Vim is character-driven, we had to munge some low-level input 
> > functions to get the desired behavior. We changed gui_wait_for_chars() and 
> > mch_inchar() so that call_timeouts() is run every ticktime milliseconds. 
> > The default ticktime is 100ms.
> > 
> > This patch isn't finished yet, but it works on unix-based OSes. If the 
> > reaction is positive, our intention is to change mch_inchar() (or something 
> > similar) in other OS-specific files. That will get async functions working 
> > for everyone.
> > 
> > Even if our patch isn't the best approach, we'd love to help get async 
> > functions in Vim. Doing so will open the door to a lot of cool plugins.
> > 
> > Oh, and this is the first time either myself or Matt have submitted a patch 
> > to Vim, so please be gentle.
> > 
> > Sincerely,
> > 
> > Geoff Greer
> 
> Forgive me if I'm wrong, I didn't spend more than a few minutes looking over 
> the patch.
> 
> It looks like this is not really "asynchronous" behavior, but rather adding a 
> timer-like hook into the main loop. Pro: no worries about thread safety, race 
> conditions, etc. Con: if the function called by the timer event takes a long 
> time, Vim hangs until it's done.
> 
> If I'm correct, and this gets included, the help will need to be very 
> explicit about making sure to limit the time taken by the function called! 
> And there should definitely be a way to interrupt the action.

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