Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neovim/neovim-ruby
Ruby support for Neovim
https://github.com/neovim/neovim-ruby
neovim neovim-clients neovim-plugin neovim-remote ruby ruby-bindings
Last synced: about 19 hours ago
JSON representation
Ruby support for Neovim
- Host: GitHub
- URL: https://github.com/neovim/neovim-ruby
- Owner: neovim
- License: mit
- Created: 2014-05-18T20:33:36.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2024-10-06T01:54:25.000Z (3 months ago)
- Last Synced: 2024-10-29T15:13:41.771Z (about 2 months ago)
- Topics: neovim, neovim-clients, neovim-plugin, neovim-remote, ruby, ruby-bindings
- Language: Ruby
- Homepage:
- Size: 928 KB
- Stars: 344
- Watchers: 8
- Forks: 17
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Neovim Ruby
[![Build Status](https://github.com/neovim/neovim-ruby/workflows/Tests/badge.svg)](https://github.com/neovim/neovim-ruby/actions)
[![Gem Version](https://badge.fury.io/rb/neovim.svg)](https://badge.fury.io/rb/neovim)Ruby support for [Neovim](https://github.com/neovim/neovim).
## Installation
Add this line to your application's Gemfile:
```ruby
gem "neovim"
```And then execute:
```shell
bundle
```Or install it yourself as:
```shell
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:
```shell
$ nvim --listen /tmp/nvim.sock
```You can then connect to that socket path to get a `Neovim::Client`:
```ruby
require "neovim"
client = Neovim.attach_unix("/tmp/nvim.sock")
```Refer to the [`Neovim` docs](https://www.rubydoc.info/github/neovim/neovim-ruby/main/Neovim) for other ways to connect to `nvim`, and the [`Neovim::Client` docs](https://www.rubydoc.info/github/neovim/neovim-ruby/main/Neovim/Client) for a summary of the client interface.
### Remote Modules
Remote modules allow users to define custom handlers in Ruby. To implement a remote module:
- Define your handlers in a plain Ruby script that imports `neovim`
- Spawn the script from lua using `jobstart`
- Define commands in lua using `nvim_create_user_command` that route to the job's channel IDFor usage examples, see:
- [`example_remote_module.rb`](spec/acceptance/runtime/example_remote_module.rb)
- [`example_remote_module.lua`](spec/acceptance/runtime/plugin/example_remote_module.lua)
- [`remote_module_spec.vim`](spec/acceptance/remote_module_spec.vim)*Note*: Remote modules are a replacement for the deprecated "remote plugin" architecture. See https://github.com/neovim/neovim/issues/27949 for details.
### 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](https://neovim.io/doc/user/if_ruby.html).
## Links
* Source:
* Bugs:
* CI:
* Documentation:
* Latest Gem:
* Main:## Contributing
1. Fork it ()
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