All Projects → neovimhaskell → Nvim Hs

neovimhaskell / Nvim Hs

Licence: other
Neovim API for Haskell plugins as well as the plugin provider

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Nvim Hs

Paq Nvim
🌚 Neovim package manager
Stars: ✭ 131 (-37.02%)
Mutual labels:  neovim, nvim
Darcula
A Vim color scheme reproduction of the official JetBrains IDE Darcula theme
Stars: ✭ 158 (-24.04%)
Mutual labels:  neovim, nvim
Shades Of Purple.vim
Dark theme for vim
Stars: ✭ 132 (-36.54%)
Mutual labels:  neovim, nvim
Awesome Vim Colorschemes
Collection of awesome color schemes for Neo/vim, merged for quick use.
Stars: ✭ 1,951 (+837.98%)
Mutual labels:  neovim, nvim
Lualine.nvim
A blazing fast and easy to configure neovim statusline written in pure lua.
Stars: ✭ 198 (-4.81%)
Mutual labels:  neovim, nvim
Nvimpager
Use nvim as a pager to view manpages, diffs, etc with nvim's syntax highlighting
Stars: ✭ 131 (-37.02%)
Mutual labels:  neovim, nvim
Nvcode
An IDE layer for Neovim with sane defaults. Completely free and community driven.
Stars: ✭ 6,714 (+3127.88%)
Mutual labels:  neovim, nvim
Neovim
Vim-fork focused on extensibility and usability
Stars: ✭ 49,389 (+23644.71%)
Mutual labels:  neovim, nvim
Nvim Config
My custom Neovim configuration with full battery for Python, C++, Markdown, LaTeX and more...
Stars: ✭ 176 (-15.38%)
Mutual labels:  neovim, nvim
Kommentary
Neovim commenting plugin, written in lua.
Stars: ✭ 172 (-17.31%)
Mutual labels:  neovim, nvim
Nvim Bqf
Better quickfix window in Neovim, polish old quickfix window.
Stars: ✭ 120 (-42.31%)
Mutual labels:  neovim, nvim
Twf
Standalone tree view file explorer, inspired by fzf.
Stars: ✭ 196 (-5.77%)
Mutual labels:  neovim, nvim
Nvim Lspconfig
Quickstart configurations for the Nvim LSP client
Stars: ✭ 3,410 (+1539.42%)
Mutual labels:  neovim, nvim
Vim Sneak
The missing motion for Vim 👟
Stars: ✭ 2,467 (+1086.06%)
Mutual labels:  neovim, nvim
Nvim Autopairs
autopairs for neovim written by lua
Stars: ✭ 112 (-46.15%)
Mutual labels:  neovim, nvim
Acid.nvim
Asynchronous Clojure Interactive Development
Stars: ✭ 147 (-29.33%)
Mutual labels:  neovim, nvim
Gnvim
GUI for neovim, without any web bloat
Stars: ✭ 1,271 (+511.06%)
Mutual labels:  neovim, nvim
Ncm R
R autocompletion for Neovim and vim 8 📝 📊 ⚡️
Stars: ✭ 102 (-50.96%)
Mutual labels:  neovim, nvim
Vim Subversive
Vim plugin providing operator motions to quickly replace text
Stars: ✭ 168 (-19.23%)
Mutual labels:  neovim, nvim
Lsp Status.nvim
Utility functions for getting diagnostic status and progress messages from LSP servers, for use in the Neovim statusline
Stars: ✭ 201 (-3.37%)
Mutual labels:  neovim, nvim

nvim-hs

Neovim API for Haskell plugins as well as a plugin provider. This library and executable should provide a basis for developing plugins. This package should only contain broadly useful interfaces to write plugins for Neovim in haskell. The design goal is to create an easy to use API that avoids most of the boilerplate while still retaining some sense of reliability and type safety. Since Template Haskell is used to generate the neovim bindings and to avoid some of the boilerplate handy work, some exotic operating systems and architectures may not work.

Build Status Hackage version nvim-hs on latest Stackage LTS nvim-hs on Stackage Nightly

What do I have to expect if I were to use it now?

Check the issue list here on github.

How do I start using this?

You need to install nvim-hs.vim, a plugin that manages starting of nvim-hs plugins. To do that, just follow the instructions outlined here.

Once you have installed nvim-hs.vim, you can use nvim-hs plugins as you would normal vim plugins. Note that every plugin you install is started as a separate process, which should be fine unless you have a lot of them.

Scripting with Haskell

The entry point for all Haskell-based scripts is a plugin. An nvim-hs plugin is a plain Haskell project with two conventions:

  1. You need an executable that starts a msgpack-rpc compatible client.

  2. You need a tiny bit of vimL in your runtime path that starts the plugin.

The simplest way to get started is using the stack template from this repository/package inside your Neovim configuration folder, but you can also manually create a project by doing everything that is explained in :help nvim-hs.txt (which should be available if you installed nvim-hs.vim as mentioned in the previous section).

To use that template, you'll first need to install stack and have the Neovim executable on the path (the API code generation calls nvim --api-info so it needs access to nvim).

After you've done that, you can run these commands to setup the template (assuming your Neovim configuration folder is in $XDG_CONFIG_HOME/nvim):

$ cd $XDG_CONFIG_HOME/nvim
$ stack new my-nvim-hs \
https://raw.githubusercontent.com/neovimhaskell/nvim-hs/master/stack-template.hsfiles \
--bare --omit-packages --ignore-subdirs

If you start Neovim now, it will compile the example plugins which may take a few minutes. Once it is started you can use the predefined functions from the template, for example by running :echo NextRandom(), which should print a random number.

To start writing your own functions and plugins, read through the files generated by the template and also check out the library documentation on hackage.

Contributing

Documentation, typo fixes, and the like will almost always be merged.

If you want to bring forward new features or convenience libraries for interacting with Neovim, you should create an issue first. The features of this (cabal) project should be kept small as this helps reduce the development time. (For some tests it is necessary to issue cabal install, so any change to to a module can significantly increase the compilation time.) If your idea solves a general problem, feel free to open an issue in the library project of nvim-hs, nvim-hs-contrib.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].