Neovim Ruby
Ruby bindings for Neovim.
Warning: This project follows Semantic Versioning, thus its API should be considered unstable until it reaches v1.0.0 (spec).
Installation
Add this line to your application's Gemfile:
gem "neovim"
And then execute:
$ bundle
Or install it yourself as:
$ gem install neovim
Usage
You can control a running nvim
process by connecting to $NVIM_LISTEN_ADDRESS
. For example, to connect to nvim
over a UNIX domain socket, start it up like this:
$ NVIM_LISTEN_ADDRESS=/tmp/nvim.sock nvim
You can then connect to that socket path to get a Neovim::Client
:
require "neovim"
client = Neovim.attach_unix("/tmp/nvim.sock")
Refer to the Neovim
docs for other ways to connect to nvim
, and the Neovim::Client
docs for a summary of the client interface.
Plugins
The neovim-ruby-host
executable can be used to spawn Ruby plugins via the rpcstart
command. A plugin can be defined like this:
# $VIMRUNTIME/rplugin/ruby/my_plugin.rb
Neovim.plugin do |plug|
# Define a command called "SetLine" which sets the contents of the current
# line. This command is executed asynchronously, so the return value is
# ignored.
plug.command(:SetLine, :nargs => 1) do |nvim, str|
nvim.current.line = str
end
# Define a function called "Sum" which adds two numbers. This function is
# executed synchronously, so the result of the block will be returned to nvim.
plug.function(:Sum, :nargs => 2, :sync => true) do |nvim, x, y|
x + y
end
# Define an autocmd for the BufEnter event on Ruby files.
plug.autocmd(:BufEnter, :pattern => "*.rb") do |nvim|
nvim.command("echom 'Ruby file, eh?'")
end
end
Ruby plugins go in the $VIMRUNTIME/rplugin/ruby
directory, and are auto-loaded after calling :UpdateRemotePlugins
. Refer to the Neovim::Plugin::DSL
docs for a more complete overview.
The Neovim gem also acts as a compatibility layer for Ruby plugins written for legacy vim
. The :ruby
, :rubyfile
, and :rubydo
commands are intended to behave the same as they did in vim
, and their documentation can be found here.
Links
- Source: http://github.com/alexgenco/neovim-ruby
- Bugs: http://github.com/alexgenco/neovim-ruby/issues
- CI: http://travis-ci.org/alexgenco/neovim-ruby
- Documentation:
Contributing
- Fork it (http://github.com/alexgenco/neovim-ruby/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request