12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 1/22
The GUI - fication of Neovim Akin Sowemimo - - PowerPoint PPT Presentation
The GUI - fication of Neovim Akin Sowemimo - - PowerPoint PPT Presentation
12/6/2018 Spectacle Presentation The GUI - fication of Neovim Akin Sowemimo http://localhost:3000/#/?export 1/22 12/6/2018 Spectacle Presentation Hi Software Developer Mon z o Based in the UK Github Akin 909 Twitter @ Akin _
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 2/22
Hi Software Developer Monzo Based in the UK Github Akin909 Twitter @Akin_So
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 3/22
The Team
Bryan Ryan Manuel Tal Akin
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 4/22
Talking Points What is Oni? Oni's Architecture Oni's Extensibility Where are we now? The Future of Oni
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 5/22
What is Oni? Oni is a Graphical User Interface(GUI) for Neovim. It allows users to have all the power of modal editing without the limitations of a terminal UI
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 6/22
But Oni does more than that. Oni allows Neovim to have features
- f an IDE such as integration with
language servers & more advanced syntax highlighting
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 7/22
Syntax Highlighting
Theme Night Owl
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 8/22
Language Server Features
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 9/22
Oni's Architecture Oni is an electron app, written with React & Typescript which speaks with Neovim via it's msgpack API. The editor text is rendered via webgl or canvas
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 10/22
Where are we now?
Syntax highlighting based on Textmate File explorer - which prioritises navigation via the keyboard using vimlike mappings Git Integration - Only git is supported right now but the framework exists to add more version control providers Achievements - This functionality is aimed at getting new users interested in learning to use vim Browser Extension - This allows users to open a browser as an oni split as an oni split.
Some of Oni's most recently implemented features include -
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 11/22
5min Demo
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 12/22
Extensibility
Oni can be extended via plugins.
const activate = Oni => { // Create a new status bar item using oni's api const gitHubRepoItem = Oni.statusBar.createItem(1, gitHubRepo) // We use react and export it as a dependency for plugins to use const React = Oni.dependencies.React // Create a command a user can call from the command palette const openGitHubRepoCommand = () => { Oni.commands.executeCommand("browser.openUrl", "https://github.com/onivim/oni") } const setGitHubRepo = () => { const gitHubIcon = Oni.ui.createIcon({ name: "github", size: Oni.ui.iconSize.Default, }) const element = React.createElement("div", { onClick: openGitHubRepoCommand }, gitHubIcon) gitHubRepoItem.setContents(element) } setGitHubRepo() gitHubRepoItem.show() }; module.exports = { activate };
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 13/22
Some Oni Plugins
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 14/22
Git Blame Plugin
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 15/22
Image Layer Plugin
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 16/22
CSV Layer Plugin
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 17/22
Where are we going?
Performance has always been one of the major advantages of using vim, it has always had a very quick startup time and not been too memory intensive.
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 18/22
We feel that whilst electron and typescript have provided us the advantages of the ecosystem the peformance tradeoff might be too
- great. So
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 19/22
We are prototyping Oni V2 (reOni?) which will use a highly performant ReasonML based desktop application framework we are developing called Revery.
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 20/22
reOni (Oni V2) Proposed architecture
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 21/22
Useful Links
Oni website - https:.onivim.io/ Oni Repository - https:github.com/onivim/oni Oni Api documentation - https:onivim.github.io/oni api/globals.html Discord Link - https:discord.gg/7maEAxV Revery - https:github.com/bryphe/revery Revery Quick start - https:github.com/bryphe/revery quickstart
12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 22/22