Nvim works as both a server and a client. “Nvim client” can connect to any other “Nvim server” and Nvim GUIs can show the screen of a remote “Nvim server”. But the built in Nvim TUI cannot show the screen of a remote Nvim server. The goal of this project is to bring this functionality to Neovim.

The aim of the project can be summarized as: Whenever the user starts Nvim as

nvim --connect {addr}

the Nvim will connect to the Nvim server running at {addr}, where {addr} is either a pipe or a tcp address. The Nvim client instance would send input to the remote Nvim server and reflects the UI of the remote Nvim server. So the Nvim client acts like any other external GUI.

Thus, this project makes TUI an RPC client. This enables us to convert nvim from a multi-threaded process, where TUI and nvim server ran on separate threads, to a multi-process system with TUI and the server running as separate processes and interacting with each other using the RPC API (MessagePack) of nvim.

Organization

Student

H.L Praveen Raj

Mentors

  • Björn Linse
close

2019