Neovim: Plan for extending the UI protocol and externalizing window layout and control

Created on 28 Apr 2018  路  3Comments  路  Source: neovim/neovim

Hi, I am excited to be working with Neovim for the following 3 months as a GSoC student for the project mentioned in the title with @bfredl as my mentor. Here is a plan that we decided on for the same:

First Evaluation (Jun 11)

  • Split the windows internally into separate grids. Neovim still manages window layout and all window commands (:wincmd ...).
  • Add API for the external UI to get/set window grid sizes. This will allow windows with different font size, even if the overall layout remains fixed.
  • Implementation of the client side of this API in the screen.lua module of the test suite, and preferably also in a GUI such as the python-gui.

Second Evaluation (Jul 09)

  • Finalize the API described in the first step with documentation and examples.
    Design the API for embedders to take control of window commands, and start work on the implementation.
  • Externalize cursorline highlighting (ideally, as first example of a general abstraction for highlighting overlays).
  • Externalize relativenumber (optional).

Final Evaluation (Aug 06)

  • Complete the implementation of an API that give embedders full control of window layout and interpreting window commands. The embedders can subscribe to and receive events for individual windows.
  • Complete the working prototype of this API in a GUI.

Any suggestions, improvements and/or comments are welcome and encouraged. _Let's have a great summer of code!_

gsoc ui-ext

Most helpful comment

I'm also excited to mentor this project!

I should also mention the GSOC coding period officially starts the 14th of May. Before that I will ensure that #8221 and #6619, if probably not both merged, at least the public and internal interfaces are finalized so this work can reliably start build on them.

All 3 comments

I'm also excited to mentor this project!

I should also mention the GSOC coding period officially starts the 14th of May. Before that I will ensure that #8221 and #6619, if probably not both merged, at least the public and internal interfaces are finalized so this work can reliably start build on them.

The GSOC program is now complete, and this project has been very successful! Thank you @UtkarshMe for this significant contribution to neovim in form of refactors and feature enhancements to one of the oldest and most complex part of the codebase. And thanks to Google for making this project possible.

The project has resulted in two strong PRs #8455 and #8707 which we plan to merge as soon as possible, pending code review and a bit more testing (focusing first on #8455, as #8707 builds upon it). Further discussion can be done in the PR threads, so closing this.

UtkashMe's summary can be read here.

GSoC was a very great learning experience for me. Thanks to Neovim and @bfredl for making it possible! :heart:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

JelteF picture JelteF  路  3Comments

hauleth picture hauleth  路  3Comments

jdowd picture jdowd  路  3Comments

mqudsi picture mqudsi  路  3Comments

Shougo picture Shougo  路  3Comments