Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plan for extending the UI protocol and externalizing window layout and control #8320

coditva opened this issue Apr 28, 2018 · 3 comments


Copy link

@coditva coditva commented Apr 28, 2018

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!

Copy link

@bfredl bfredl commented Apr 28, 2018

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.

Copy link

@bfredl bfredl commented Aug 25, 2018

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.

@bfredl bfredl closed this Aug 25, 2018
Copy link
Contributor Author

@coditva coditva commented Aug 26, 2018

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

@neovim neovim locked as resolved and limited conversation to collaborators Mar 17, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants