• Stars
    star
    318
  • Rank 127,348 (Top 3 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 10 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ruby support for Neovim

Neovim Ruby

Build Status Gem Version

Ruby support for Neovim.

Installation

Add this line to your application's Gemfile:

gem "neovim"

And then execute:

bundle

Or install it yourself as:

gem install neovim

Usage

Neovim supports the --listen option for specifying an address to serve its RPC API. To connect to Neovim over a Unix socket, start it up like this:

$ nvim --listen /tmp/nvim.sock

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

Plugins are Ruby files loaded from the $VIMRUNTIME/rplugin/ruby/ directory. Here's an example plugin:

# ~/.config/nvim/rplugin/ruby/example_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

When you add or update a plugin, you will need to call :UpdateRemotePlugins to update the remote plugin manifest. See :help remote-plugin-manifest for more information.

Refer to the Neovim::Plugin::DSL docs for a more complete overview of the Neovim.plugin DSL.

Vim Plugin Support

The Neovim gem also acts as a compatibility layer for Ruby plugins written for vim. The :ruby, :rubyfile, and :rubydo commands are intended to match their original behavior, and their documentation can be found here.

Links

Contributing

  1. Fork it (https://github.com/neovim/neovim-ruby/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request