go-client

module
v1.2.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2022 License: Apache-2.0

README

Image for: README ¶

go-client

Neovim/go-client is a Neovim client and plugin host for Go.

This example plugin adds the Hello command to Nvim.

package main

import (
    "strings"
    "github.com/neovim/go-client/nvim/plugin"
)

func hello(args []string) (string, error) {
    return "Hello " + strings.Join(args, " "), nil
}

func main() {
    plugin.Main(func(p *plugin.Plugin) error {
        p.HandleFunction(&plugin.FunctionOptions{Name: "Hello"}, hello)
            return nil
    })
}

Build the program with the go tool to an executable named hello. Ensure that the executable is on your path.

// Use the go build to generate an executable
// Enusre this hello executable on your path
// you can move hello to your $GOPATH/bin
// or set the current dir into env variable `path`
go build -o hello

Add the following plugin to Nvim:

if exists('g:loaded_hello')
    finish
endif
let g:loaded_hello = 1

function! s:Requirehello(host) abort
    " 'hello' is the binary created by compiling the program above.
    return jobstart(['hello'], {'rpc': v:true})
endfunction

call remote#host#Register('hello', 'x', function('s:Requirehello'))
" The following lines are generated by running the program
" command line flag --manifest hello
call remote#host#RegisterPlugin('hello', '0', [
    \ {'type': 'function', 'name': 'Hello', 'sync': 1, 'opts': {}},
    \ ])

" vim:ts=4:sw=4:et

Start Nvim and run the following command:

:echo Hello('world')

Directories

Image for: Directories ¶
Path Synopsis
Package msgpack implements MessagePack encoding and decoding.
Package msgpack implements MessagePack encoding and decoding.
rpc
Package rpc implements MessagePack RPC.
Package rpc implements MessagePack RPC.
Package nvim implements a Nvim client.
Package nvim implements a Nvim client.
plugin
Package plugin is a Nvim remote plugin host.
Package plugin is a Nvim remote plugin host.