Skip to content
Native, lightweight modal code editor
Reason JavaScript Shell OCaml Inno Setup PowerShell Dockerfile
Branch: master
Clone or download
bryphe Feature - Terminal - Part 3: Terminal renderer (#1353)
* Some more cleanup

* Formatting

* Refactoring to move syntax highlighting to subscription

* Clean up syntax hl further

* Refactoring: upgrade to isolinear -> 3.0.0

* Fix up warnings

* Formatting

* Remove SyntaxHighlightingEnabled action, replace by passing cli options in Init

* Split out syntaxHighlightingEnabled

* Fixes

* Initial terminal service

* Initial scaffolding for terminal service

* Create -> terminal

* Resize effect shouldn't be necessary; should be inferred from params

* Start wiring up terminal commands

* Add commands for terminal

* Formatting

* Stub out service

* Start wiring up to extension host:

* Move terminal state to a feature

* Initial terminal command

* Update lockfiles

* Pick up args

* Remove some hard coding

* Update path

* Create handleExtensionMessage method

* Wire up ext host client message -> subscriptions

* Formatting

* Move subscription to feature

* Add interface for Feature_Terminal; refactor subscription to feature

* Formatting

* Initial integration test

* Get terminal test passing

* Add libtool

* First round of feedback

* Formatting

* Remove let ()

* Fix indentation

* Switch to outMsg model

* Refactor msg + formatting

* Updates based on feedback

* Update test

* Add perl as dependency

* Add ReveryTerminal.lib dependency

* Add dep to service project too

* Add new messages

* Wire up exthost onProcessData to push into revery terminal

* Wire up revery-terminal.lib state in service / feature

* Add terminal renderer

* Start hooking up a custom renderer for terminal

* Get terminal rendering

* Formatting

* Constrain terminal to bounds

* Factor out TerminalView

* Update revery-terminal; streamline write

* Remove superfluous terminal

* Formatting / clean up

* Update lockfiles

* Update TerminalView
Latest commit baa0754 Feb 24, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ci Skia Integration (#1206) Feb 5, 2020
assets Feature - UX - Semibold / italic font for UI (#1182) Jan 25, 2020
bench.esy.lock Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
bench Editor Refactor - Part 2 (#1324) Feb 13, 2020
development_extensions/oni-dev-extension Developer: Add command to show the list of workspaceFolders (#1320) Feb 11, 2020
docs [docs] add libtool requirement to build instructions for macOS (#1363) Feb 24, 2020
esy.lock Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
extensions Dependency - Extensions (NPM): Add 'which' and other deps for vscode … Jan 30, 2020
integration_test Bugfix: Don't clear notifications with <ESC> (#1360) Feb 24, 2020
integrationtest.esy.lock Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
node Dependency: vscode-exthost -> 1.33.4 (#1323) Feb 11, 2020
scripts Tests: Integrate address sanitizer in integration_test (on Linux) (#1355 Feb 22, 2020
src Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
test.esy.lock Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
test Make when expression parser (almost) fully compatible with vscode (#1361 Feb 24, 2020
vendor Extension: Vendor reason-language-server binaries (#1006) Dec 5, 2019
.gitattributes Fix #1215: Clean up extension collateral (#1228) Jan 21, 2020
.gitignore Experimental Feature: Auto-closing pairs (#746) Sep 10, 2019
.prettierrc Textmate: Buffer sync protocol (#111) Mar 6, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#255) Apr 18, 2019
Oni2.opam Module: Core (#8) Jan 7, 2019
OniBench.opam Performance: Initial benchmarking infra (#60) Feb 19, 2019
OniIntegrationTests.opam Initial integration test framework (#400) Jul 11, 2019
OniUnitTestRunner.opam Module: Core (#8) Jan 7, 2019
Outrun-Labs-EULA-v1.1.md Fix typo in EULA (#925) Nov 12, 2019
README.md
ThirdPartyLicenses.txt ocaml-decoders conversion experiment (#1280) Feb 3, 2020
azure-pipelines.yml Feature - Terminal - Part 2: Service / Feature scaffolding (#1348) Feb 22, 2020
bench.json Developer Experience - Speed up Oni2 build (#241) Apr 16, 2019
dune Fix #1148: Feature - Logging: Bundle in commitId / version (#1210) Jan 16, 2020
dune-project Input: 'when' clause parser (#905) Nov 16, 2019
install-node-deps.js Exthost: Integrate css-language-features plugin (#957) Nov 27, 2019
integrationtest.json Initial integration test framework (#400) Jul 11, 2019
package.json Feature - Terminal - Part 3: Terminal renderer (#1353) Feb 24, 2020
test.json Fix #1238 - File Explorer (Windows): Nodes not expanding (#1292) Feb 4, 2020
update-lockfiles.sh Initial integration test framework (#400) Jul 11, 2019

README.md

Build Status Discord

Onivim 2

Lightweight, Modal Code Editor

⚠️ Alpha - may be bugs or instability - use with caution ⚠️

Onivim 2

Introduction

Onivim 2 is a reimagination of the Oni editor. Onivim 2 aims to bring the speed of Sublime, the language integration of VSCode, and the modal editing experience of Vim together, in a single package.

Onivim 2 is built in reason using the revery framework.

Onivim 2 uses libvim to manage buffers and provide authentic modal editing, and features a fast, native front-end. In addition, Onivim 2 leverages the VSCode Extension Host process in its entirety - meaning, eventually, complete support for VSCode extensions and configuration.

Goals

  • Modern UX - an experience on par with modern code editors like VSCode and Atom
  • VSCode Plugin Support - use all of the features of VSCode plugins, including language servers and debuggers
  • Cross-Platform - works on Windows, OSX, and Linux
  • Batteries Included - works out of the box
  • Performance - no compromises: native performance, minimal input latency
  • Easy to Learn - Onivim 2 should be comfortable for non-vimmers, too!

The goal of this project is to build an editor that doesn't exist today - the speed of a native code editor like Sublime, the power of modal editing, and the rich tooling that comes with a lightweight editor like VSCode.

Non-goals

  • 100% VimL compatibility - we may not support all features of VimL plugins / configuration.

Documentation

Contributing

We'd ❤️ help building Onivim 2!

If you are interested in fixing issues and contributing directly to the code, please see the How to Contribute document, which includes the following:

Please also see our Code of Conduct.

Feedback

License

Onivim 2 is licensed under the Outrun Labs EULA 1.1.

The TL;DR is:

  • Free for non-commercial and educational use.
  • Commercial use requires the purchase of a license.
  • You may not redistribute source code or binaries under a different license.

You can pre-order a commercial license here: https://v2.onivim.io

As we get closer to shipping our MVP, we'll increase the pre-order price, until we settle on our full pricing model.

NOTE: Anyone who contributed financially to Onivim v1 via our past funding sources (BountySource, Patreon, PayPal, OpenCollective) - gets a lifetime license. If you haven't received your license key, and you contributed previously, please contact me at bryphe@outrunlabs.com (or feel free to reach out at Twitter or our Discord). Thank you for supporting the project!

Alternatively, you can contribute to the project through Patreon, which helps us with ongoing costs.

'Time-Delay' Dual License

Because of the support we've received from open source communities, we've decided to dual-license the code after 18 months - every commit, starting with 017c513, will be dual-licensed via the MIT License 18 months from that commit's date to master. For commit 017c513, as it was committed to master on 4/18/2019 that means it would be dual-licensed with MIT License on 10/18/2020.

For convenience, we will maintain an oni2-mit repo containing the MIT-licensed code. The first commit to that repo will be on July 2, 2020.

Any external contributions to the project from outside Outrun Labs, LLC will not be subject to this 'time-delay' - they'll be dual-licensed immediately under the MIT License.

We hope that this approach will bring us the best of worlds - the ability to have a commercially sustainable product, with high quality - as well as giving back to the open source communities by having our work eventually end up in the open, and ensuring that external contributions are always open source.

Third-Party Code

Several dependencies have their own set of license terms here: ThirdPartyLicenses.txt

Copyright 2019 Outrun Labs, LLC.

You can’t perform that action at this time.