@urbit/hoon-language-server v0.1.2
hoon-language-server
Earth-side component of a language server for Hoon. Enables two-way communication between supported text editors and the language-server agent on an urbit ship.
Installation
npm
npm install -g @urbit/hoon-language-servernix
nix-build -E 'with import <nixpkgs> {}; callPackage ./default.nix {}'
nix-env -i ./resultRunning
NOTE: Usually your editor will handle this, you just need to set the correct parameters in your editor configuration.
hoon-language-server -p 80 -d 0 -u http://localhost -s zod -c lidlut-tabwed-pillex-ridrup
Configuration
-p: HTTP port of your (running) ship-d:didSaveevent delay-u: ship url-s:@pof ship (without a sig)-c:+codeof ship (without a sig)
Urbit Setup
You must have an urbit ship running (can be a livenet ship) with the language-server agent started. To create and start a fake ~zod:
urbit -F zod -c zodIn the urbit dojo, start the language server:
dojo> |start %language-serverget the +code
dojo> +codeTo start the same ship again in the future just run:
urbit zodin the same directory it was created in.
Editor Setup
Your code editor now needs to use hoon-language-server as an LSP provider. Supported plugins:
VSCode
Emacs
Vim
hoon.vim does not use the language server itself, but the github page describes a setup using vim-lsp.
Neovim
Neovim users should use hoon.vim with one of the following LSP setups:
Native LSP
Install nvim-lspconfig. To use the default configuration, add the following to init.lua:
require'lspconfig'.hoon_ls.setup{}To modify the default options use:
require'lspconfig'.hoon_ls.setup{
cmd = {"hoon-language-server", "-p", "8080"}
}You can include lua snippets in your init.vim like so:
lua << EOF
require'lspconfig'.hoon_ls.setup{}
EOFcoc.nvim
Install and configure coc.nvim, then add a languageserver entry to ~/.config/nvim/coc-settings.json:
{
"languageserver": {
"hoon-language-server": {
"command": "hoon-language-server",
"args": ["-p", "8080"],
"filetypes": ["hoon"]
}
}
}