👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The issue you are trying to fix or the feature you are trying to implement may actually be part of Metals, maybe part of Bloop, or even coc.nvim so it's always best to double check if you're not sure.
coc-metals is a coc.nvim
extension, so firstly, it's important to get an idea
of how coc.nvim
works. They have a great wiki with a lot of resources about
how to configure and use coc.nvim
, and they have a specific page dedicated to
extension which can be found
here.
coc.nvim
will try to load extensions that are located under
$VIMCONFIG/coc/extensions
. What I've found to be the easiest to do while
developing is to add "coc-metals": "*"
to dependences in the package.json
file located in this directory. Then, create a symbolic link from where you have
cloned this repo to the node_modules
directory. On my machine, it looks like
this.
ln -s ~/Documents/js-workspace/coc-metals ~/.config/coc/extensions/node_modules/coc-metals
This will allow you be able to just build in the git repo, and then restart coc, and have the new extension working.
coc-metals
is basically the Metals VS Code
extension
ported over to be a coc.nvim
extension. The API's are very similar, so you'll
see identical code in some situations. The project is written in
TypeScript, built with
Parcel, and formatted with
Prettier.
To build the project locally
yarn build
To format the project
yarn format
More than likely, whatever you are looking to implement will have something to do with LSP. It will be helpful to read through the official Language Server Protocol site if you're not familiar with the spec. It's a great resource.
Finally, don't be afraid to ask questions.