zbirenbaum / copilot.lua

Fully featured & enhanced replacement for copilot.vim complete with API for interacting with Github Copilot
MIT License
2.43k stars 65 forks source link

RFC: Custom LSP Integration #209

Open zbirenbaum opened 10 months ago

zbirenbaum commented 10 months ago

So my custom copilot-lsp implementation https://github.com/zbirenbaum/copilot-rs finally seems to be in a pretty decent state and can now be used as a drop in replacement excluding panel completions (barely work in the official release anyways), which means its time to start considering integration here. This is mostly an RFC post regarding a couple of things:

How should we handle distribution of the alternative LSP?

We could distribute an equivalent agent.js using wasm bindings but there are two points for consideration:

How should we handle feature integration?

The goal of developing an alternative LSP client has always been to achieve (at least) the following:

Since these features will eventually be present in copilot-rs, but not the official agent.js, client side support becomes a bit more complicated

@MunifTanjim would love to hear your thoughts. I'm leaning towards creating a new fork of copilot.lua just to support and redistribute copilot-rs and putting a note about it in the README. It's not ideal since requiring a whole different plug-in will slow testing and adoption dramatically, but at least it would keep the api clean and this plug-in protected from any potential backlash.

If anyone has input or knows of any projects that successfully navigated the telemetry problem please feel free to comment and discuss here.

MunifTanjim commented 10 months ago

Even if it's included in this repo, it should be somewhat separated (either opt-in or opt-out) from the current implementation that mimics everything from https://github.com/github/copilot.vim. Then the user can choose which implementation to use.

zbirenbaum commented 10 months ago

Even if it's included in this repo, it should be somewhat separated (either opt-in or opt-out) from the current implementation that mimics everything from https://github.com/github/copilot.vim. Then the user can choose which implementation to use.

Yeah this was what I was thinking. I'm really hesitant to put it in this repo at all though unless I can find some precedent to show it's remotely safe. It doesn't break any license terms but not sure that will matter.