Onivim 2 User Manual

Onivim 2 User Manual

  • Early Access
  • About
  • Timeline
  • Docs

›For Developers

Getting Started

  • Why Onivim?
  • Installation
  • Vim Differences
  • Tips for Vim Users
  • Tips for VSCode Users
  • Modal Editing 101

Basic Usage

  • Moving Around
  • Editing and Deleting Text
  • Visual Mode (Selection)
  • Working with Files
  • Formatting
  • Language Features
  • Command Line
  • Integrated Terminal
  • Emmet
  • Snippets

Configuration

  • Settings
  • Key Bindings
  • Extensions

Languages

  • Reason & OCaml
  • ReScript
  • Python
  • Go
  • Java
  • C / C++
  • C#
  • Rust

For Developers

  • Architecture
  • Building from Source
  • How to Contribute
  • Style Guide
  • License Key Bounty

Other

  • FAQ
  • Appendix A: v2 Design Doc
  • Appendix B: More Resources
Edit

How to Contribute

Where to Contribute

Logging Issues

You can help us by logging any issues you find, as well as 'thumbs-upping' any issues relevant to you. As a small team, prioritization is critical, so knowing which issues are impactful for many users can help us with that prioritization.

Pull Requests

Check out the full issues list for ideas of where to start. Note that just because an issue exists does not mean we will accept a PR for it.

There are several reason we may not accept a pull request, like:

  • Performance - Onivim 2 is lightweight and fast. Changes should not introduce performance regressions.
  • User Experience - The UX should be smooth, polished, consistent, and not cluttered.
  • Architectural - Maintainers must approve any architectural impact or change.
  • Maintenance Burden - If a PR would incur a maintenance burden on the maintainers, it will be rejected.

To improve the chances to get a pull request merged, you should select an issue that is labeled with bug or help wanted.

In addition, Onivim 2 is built on Revery - any work or improvements there will directly improve Onivim 2, as well!

Changelog Generation

We use a script to generate the change log based on metadata picked up from the commit message, and pull request title and body. For the changelog to be generated successfully it's therefore important that these follow the exact format explained below.

Pull Request Title

Pull request titles should have the following format:

<type>(<scope>): <subject>

where type can be one of

  • feat: A new feature
  • fix: A bug fix
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing or correcting existing tests
  • docs: Documentation only changes
  • chore: Changes to the build process or auxiliary tools and libraries such as documentation generation

scope is optional, but "encouraged". It is typically one of the "area" issue labels or the name of a feature project. Supplementary information, like associated issues, can be added to the scope following a /. For example, a PR that fixes issue #123 regarding vim could have the type and scope fix(vim/#123).

subject should contain a succinct description of the change:

  • use the imperative, present tense: "change" not "changed" nor "changes"
  • don't capitalize first letter
  • no dot (.) at the end

Do NOT add temporary tags, like [WIP], to the title. Instead use GitHub's draft function and/or labels.

Some examples:

  • feat(scm): add support for multiple providers
  • fix(vim/#123): get_op_type error when using gcc
  • refactor(editor): remove duplication
  • chore(ci): fix build failure on CentOS VM

Attribution: Adapted from Angular's commit guidelines

Pull Request Body

More details can be provided in a changelog code block in the body of the pull request if a longer description is needed or if there are beaking changes:

```changelog    
Detailed description of the change
Can span multiple lines

<breaking>This change breaks my brain</breaking>
```

Text inside <breaking> tags will be listed in the changelog as separate items so that they can be emphasized. ALL breaking changes MUST be listed in this way. If in doubt, list it anyway. We'll remove it later in the process if it's considered insignificant.

The rest of the text will become the overall description of the change and can include anything considered text content in XML. Use predefined entities in place of characters with special meaning in XML. And please do still try to be brief!

Commit Message

Note: this section is relevant only to maintainers who merge PRs. Contributors can safely ignore this.

Commits messages pushed to master should have the following format:

<type>(<scope>): <subject> (#<PR number>)

where type and scope is as described above. This is usually what Github generates automatically when squashing a PR, assuming the PR title was formatted correctly.

Submitting a Pull Request

Before we can accept a pull request from you, you'll need to sign a a Contributor License Agreement (CLA). It is an automated process and you'll be guided through it the first time you open a PR.

To enable us to quickly review and accept your pull requests, follow these guidelines:

  • Always create one pull request per issue and link the issue in the pull request. Never merge multiple requests into one.
  • Keep code changes as small as possible. Break large PRs or features into smaller, incremental PRs where possible.
  • Make our maintainer's life easy and keep changes as simple as possible.
  • Avoid pure formatting changes for code that has not been otherwise modified.
  • Include tests whenever possible.
  • Include benchmarks whenever possible.

To avoid duplicate work, if you decide to start working on an issue, please leave a comment on the issue.

Log levels

The following conventions are used to determine the priority level of log messages, based on the conventions suggested by @dbuenzli/logs:

  • Error if it WILL cause unexpected behaviour
  • Warn if it MIGHT cause unexpected behaviour, but also might not, i.e. it's suspicious, but not a definite problem.
  • Info if it is both understandable AND actionable by the end-user
  • Debug otherwise
  • Trace if the output is overwhelming or just excessively detailed. Namespace filtering is expected at this level

Branch Naming

We recommend this scheme for naming branches: <type>/<scope>/<description>

where type and scope are as defined in the Pull Request title section above

description is a short, hyphen-delimited blurb to very briefly describe the change.

Some examples:

  • fix/vim/gd-crash
  • feat/exthost/go-to-definition
  • refactor/editor-component/remove-duplication

Discussion Etiquette

We strictly enforce a Code of Conduct and have a zero-tolerance policy towards infractions. Be considerate to others, and try to be courteous and professional at all times.

← Building from SourceStyle Guide →
  • Where to Contribute
    • Logging Issues
    • Pull Requests
    • Submitting a Pull Request
    • Log levels
    • Branch Naming
  • Discussion Etiquette
Onivim 2 User Manual
Docs
Getting StartedBasic UsageFor DevelopersFAQ
Community
RedditDiscordTwitter
More
GitHubStar
Copyright © 2022 Outrun Labs, LLC