The GUI - fication of Neovim Akin Sowemimo - - PowerPoint PPT Presentation

the gui fication of neovim
SMART_READER_LITE
LIVE PREVIEW

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 _


slide-1
SLIDE 1

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 1/22

Akin Sowemimo

The GUI-fication of Neovim

slide-2
SLIDE 2

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 2/22

Hi Software Developer Monzo Based in the UK Github Akin909 Twitter @Akin_So

slide-3
SLIDE 3

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 3/22

The Team

Bryan Ryan Manuel Tal Akin

slide-4
SLIDE 4

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

slide-5
SLIDE 5

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

slide-6
SLIDE 6

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

slide-7
SLIDE 7

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 7/22

Syntax Highlighting

Theme Night Owl

slide-8
SLIDE 8

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 8/22

Language Server Features

slide-9
SLIDE 9

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

slide-10
SLIDE 10

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 -

slide-11
SLIDE 11

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 11/22

5min Demo

slide-12
SLIDE 12

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 };

slide-13
SLIDE 13

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 13/22

Some Oni Plugins

slide-14
SLIDE 14

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 14/22

Git Blame Plugin

slide-15
SLIDE 15

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 15/22

Image Layer Plugin

slide-16
SLIDE 16

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 16/22

CSV Layer Plugin

slide-17
SLIDE 17

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.

slide-18
SLIDE 18

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
slide-19
SLIDE 19

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.

slide-20
SLIDE 20

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 20/22

reOni (Oni V2) Proposed architecture

slide-21
SLIDE 21

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

slide-22
SLIDE 22

12/6/2018 Spectacle Presentation http://localhost:3000/#/?export 22/22

Questions?