Code Monkey home page Code Monkey logo

veonim's Introduction

veonim is a simple modal IDE built on neovim. the goal is to create my ideal programming environment

project status

veonim is still very early alpha and experimental. nothing is guaranteed. UX is lacking.

if you are feeling brave, maybe checkout the User Guide

currently in progress

  • WebGL renderer (~30-60ms canvas render -> under 1ms webgl render lolololololol)
  • super fast custom msgpack decoder (faster render, less GC/memory pressure)
  • implement neovim ext_multigrid API (much faster render/more accurate than previous window splits logic) - neovim/neovim#8455

coming soon

  • built-in debugger via debug adapter protocol & vscode extensions
  • advanced neovim-native window management
  • vscode extension api <-> neovim/veonim api bridge

features

  • rich language integration built on language servers (any language supporting LSP can work - see http://langserver.org)
    • auto completion
    • go to definition
    • go to type definition
    • go to implementation
    • find references
    • symbol search
    • show hover information
    • provide signature hint info
    • diagnostics (errors/warnings)
    • refactoring (rename, quick fix, code actions, etc.)
    • highlight symbols
  • multiple concurrent multiplexed vim instances (kinda like tmux sessions/windows. in fact this feature originated from the desire to use a neovim gui with the same workflow as tmux)
  • built-in vim plugin manager
  • (limited) vscode extension support - should support language server extensions - more api support can be added as needed
  • rich key mapping support with support for keyup + keydown events (think karabiner) - for example:
    • remap caps lock to escape
    • map commands to all modifiers such as ctrl + shift + alt + key
    • swap modifiers -> switch command and control
    • create additional modifiers with custom key transforms (e.g. create layers: mappings like <c-s> <c-m> but with another key ;s ;m)
  • project find based on ripgrep
  • fuzzy find for files and buffers
  • fuzzy viewport search
  • fuzzy buffer search
  • improved vim search UI
  • high performance optimized GPU rendering
  • keyboard driven fuzzy file/directory explorer
  • built-in "easymotion-style" jump to labels and jump to search results
  • graphical neovim ui including windows, tabs, command line, status line, messages, cursor, cursorline, colorscheme adaptable interface etc.
  • project/workspace/cd management
  • reload vim buffers when modified (e.g. when edited in another program)
  • open file from :terminal in current vim window
  • everything configured via vim config file (init.vim) and scriptable from vimscript or remote plugins (any language)
  • create fuzzy overlay menus and floating overlay menus with user defined options (built-in FZF.vim alternative)
  • built-in statusline (displays current project, git branch, git changes, warning/problem count, cursor position, and tabpages)
  • color picker + live vim colorscheme editing
  • (experimental) parse :term compiler output and display problems in editor
    • the idea is that you may have an incremental compiler build script (i.e. npm scripts + typescript watch mode) that is running in the background, and you want to parse the compiler output and add it to IDE problems. compiler output may be different than language server diagnostics (and the compiler is the source of truth). also there may be other tasks that are happening in the incremental build script that would not occur with langserv diagnostics.
  • and more!

screenshots

auto completion

fuzzy file finder

find in project

symbol search

signature hint

hover information

problems

explorer

references

user defined menus

custom task menus

color support

vim command line

notifications

nyan cat

similar projects

the great neovim team have allowed the community to build some kick-ass projects. some of the more interesting ones that i'm excited about are:

development

install dependencies and start automagic watch build and live reload instance

npm i
npm start

neovim configuration

when starting the development build of veonim (via npm start) the app is configured to load configurations from a local folder instead of the default XDG_CONFIG_HOME location. in other words, pretend this is your ~/.config folder when running veonim in dev mode.

for example, place/copy your neovim configurations relative to the veonim source folder

  • ./xdg_config/nvim/init.vim - init.vim
  • ./xdg_config/nvim/colors/gruvbox.vim - colors

veonim will also download and install neovim plugins and veonim extensions to this local dev config folder.

if the folder does not exist, an empty one will be created. the default veonim configurations will be used (same configurations that would apply if no ~/.config/XDG_CONFIG_HOME folder existed)

release build

build with release configuration

npm run build

test it out

npm run start:release

creating releases

travis/appveyor will publish new github releases on tags

you can use npm to upversion package.json and create a tag:

  • npm version patch
  • npm version minor
  • npm version major

or manually create tag (note that the package release version is lifted from package.json)

git tag v0.8.0-alpha.1

then push the git tag

git push origin v0.8.0-alpha.1

to create a local release package for your current operating system:

npm run package

you will find various binaries available for testing under dist folder

veonim's People

Contributors

jakubjecminek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.