Skip to content

Latest commit

 

History

History
50 lines (35 loc) · 2.13 KB

CONTRIBUTING.md

File metadata and controls

50 lines (35 loc) · 2.13 KB

Contributing to coc-metals

👍🎉 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 or even coc.nvim so it's always best to double check if you're not sure.

coc.nvim

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

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

LSP

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.