如何正确地运行一个无限循环,并且仍然使用VIM插件中的缓冲区?

2024-10-03 23:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个VIM插件。我希望能够运行一个函数,在后台等待事件,并在需要时更新缓冲区,而不冻结整个窗口。有可能吗?在

我尝试使用threading模块运行一个单独的线程,但没有用。(只有在阻塞线程时,才会在缓冲区中反映更改)。在

澄清:我有一个函数,可能需要几十秒才能返回更新。我需要用返回的数据更新其中一个缓冲区(并再次调用该函数)。在

如何称之为“异步”而不冻结窗口?如果我可以跨越一个单独的进程来完成,那么如何设置IPC?在

另一个更新:如果我创建了一个临时文件,让一个单独的进程对其进行写入,然后观察FileChangedShell以自动刷新它?在

(如果没有“这不起作用”的答案,也没有更好的想法,我会在一段时间内尝试这个,并更新结果)。


Tags: 模块数据函数答案插件进程事件vim
1条回答
网友
1楼 · 发布于 2024-10-03 23:23:38

这可能是抽象的,而不知道细节。但是,轮询事件数据是否对你的插件有效?很久以前,我正在为ensime(scala completion守护进程)编写一些vim插件,也遇到了类似的问题。对我来说,打开一个新的进程并等待数据出现在socket中的效果非常好。这显然是由于服务器本身是异步的,并且用于按照接收结果的顺序在套接字上写入结果。希望这有帮助。在

相关问题 更多 >