与neovim远程插件一起使用asyncio

问题描述 投票:0回答:1

我想编写一个监听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是一个好主意。显然,...

python-asyncio vim-plugin neovim
1个回答
0
投票

不确定这是否是最佳答案,但这是我发现的有效方法:

© www.soinside.com 2019 - 2024. All rights reserved.