Language Server for Hoon. Middleware to translate between the Language Server Protocol and your Urbit.
Go to file
Jake Miller 1024fbf219
Merge pull request #28 from ericfode/patch-1
Make it work on windows
2022-06-24 10:53:40 -04:00
bin Initial commit 2020-01-13 18:00:17 +11:00
src Make it work on windows 2022-05-22 21:56:50 -07:00
.gitignore Initial commit 2020-01-13 18:00:17 +11:00
default.nix various logging fixes 2022-04-21 16:27:09 -04:00
LICENSE initial commit 2019-11-03 22:38:43 -08:00
node-composition.nix nix build 2022-03-24 16:43:46 -04:00
node-env.nix nix build 2022-03-24 16:43:46 -04:00
node-packages.nix updates 2022-03-31 14:21:42 -04:00
package-lock.json version updates 2022-04-21 16:33:40 -04:00
package.json version updates 2022-04-21 16:33:40 -04:00
README.md Update README.md 2022-04-21 16:36:34 -04:00
tsconfig.json depend on urbit-airlock for HTTP communication 2020-03-31 12:53:36 +10:00

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-server

nix

nix-build -E 'with import <nixpkgs> {}; callPackage ./default.nix {}'
nix-env -i ./result

Running

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: didSave event delay
  • -u: ship url
  • -s: @p of ship (without a sig)
  • -c: +code of 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 zod

In the urbit dojo, start the language server:

dojo> |start %language-server

get the +code

dojo> +code

To start the same ship again in the future just run:

urbit zod

in 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{}
EOF

coc.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"]
    }
  }
}