我想编写一个监听Server-sent events的vim插件。因为我最精通python3并使用neovim,所以我认为使用neovim remote plugin API是个好主意。
显然,侦听来自网络的消息一定不能阻止,因此必须以某种方式涉及异步。但是我无法弄清楚如何将两者结合起来。我必须在某个地方运行事件循环。但是,pynvim已经运行了自己的事件循环,因此我可能应该了解一下。
@pynvim.plugin class MyPlugin: def __init__(self, nvim): self.nvim = nvim @pynvim.command('Connect', nargs='1') async def connect(self, args): url = base_url + args[0] async with sse_client.EventSource(url) as event_source: for raw in event_source: try: msg = json.loads(raw) except json.JSONDecodeError: continue do_something(msg)
此示例不起作用。
Connect
命令在neovim中不可用(这是在我使它异步之前)。
我想编写一个vim插件来监听服务器发送的事件。由于我最精通python3并使用neovim,因此我认为使用neovim远程插件API是一个好主意。显然,...
不确定这是否是最佳答案,但这是我发现的有效方法: