efficient vim config
[dotfiles/.git] / .local / lib / python3.9 / site-packages / pynvim / msgpack_rpc / __init__.py
1 """Msgpack-rpc subpackage.
2
3 This package implements a msgpack-rpc client. While it was designed for
4 handling some Nvim particularities(server->client requests for example), the
5 code here should work with other msgpack-rpc servers.
6 """
7 from pynvim.msgpack_rpc.async_session import AsyncSession
8 from pynvim.msgpack_rpc.event_loop import EventLoop
9 from pynvim.msgpack_rpc.msgpack_stream import MsgpackStream
10 from pynvim.msgpack_rpc.session import ErrorResponse, Session
11 from pynvim.util import get_client_info
12
13
14 __all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session',
15            'ErrorResponse')
16
17
18 def session(transport_type='stdio', *args, **kwargs):
19     loop = EventLoop(transport_type, *args, **kwargs)
20     msgpack_stream = MsgpackStream(loop)
21     async_session = AsyncSession(msgpack_stream)
22     session = Session(async_session)
23     session.request(b'nvim_set_client_info',
24                     *get_client_info('client', 'remote', {}), async_=True)
25     return session
26
27
28 def tcp_session(address, port=7450):
29     """Create a msgpack-rpc session from a tcp address/port."""
30     return session('tcp', address, port)
31
32
33 def socket_session(path):
34     """Create a msgpack-rpc session from a unix domain socket."""
35     return session('socket', path)
36
37
38 def stdio_session():
39     """Create a msgpack-rpc session from stdin/stdout."""
40     return session('stdio')
41
42
43 def child_session(argv):
44     """Create a msgpack-rpc session from a new Nvim instance."""
45     return session('child', argv)