我正在用Python编写一个VIM插件。我希望能够运行一个在后台等待事件并在需要时更新缓冲区的函数,而不会冻结整个窗口。这可能吗?
我尝试使用threading
模块运行一个单独的线程,但没有帮助。仅当函数返回时(阻塞线程终止)才会反映缓冲区中的更改。
澄清:我的函数可能需要几十秒才能返回更新。我需要使用返回的数据更新其中一个缓冲区(并再次调用该函数)。
如何“异步”调用它而不冻结窗口?如果我可以通过跨越一个单独的过程来完成它,我该如何设置IPC?
另一次更新:如果我创建一个临时文件,有一个单独的进程写入该文件,并按照建议here监视FileChangedShell
以自动刷新它,该怎么办?< / p>
(如果没有“它不会起作用”的答案而且我脑子里没有更好的想法,我会在一段时间内尝试这个并更新结果)。
答案 0 :(得分:0)
在不知道细节的情况下,这可能是抽象的。但是,对于您的插件,轮询活动数据是否适用?回来我正在为ensime(scala compeletion守护进程)编写一些vim插件,并遇到了类似的问题。对我来说,打开一个新进程并等待套接字中存在的数据工作得很好。这显然是由于服务器本身是异步的,并且用于按照收到的顺序在套接字上写入结果。希望这会有所帮助。