Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remote LSP projects #146

Open
traxys opened this issue Mar 13, 2023 · 6 comments
Open

Remote LSP projects #146

traxys opened this issue Mar 13, 2023 · 6 comments
Labels
enhancement/request New feature or request
Milestone

Comments

@traxys
Copy link

traxys commented Mar 13, 2023

In some languages (like C, rust,...) you can't have a LSP on single file, you need to find the repo root and then execute some code according to that.

For example in C you need a compile_command.json, and the file contains a lot of absolute paths.

Is it possible to use the remote filesystem for this, or would you need a mirror of the remote repository on the local side just to have the correct file structure ?

@miversen33
Copy link
Owner

So the big issue with LSPs right now is that they are external processes (IE, they live outside the neovim process). This means that netman doesn't have direct control of how the LSPs see the remote filesystem.

Additionally, the underlying file isn't actually presented to external processes. The external processes will see the URI of the file instead of the underlying file name.

This is on my list of stuff to deal with, I just haven't fleshed out a great solution yet. I am absolutely open to ideas though!

Please note though, getting LSPs to play nice is definitely a backlog item. I need to get Async completed (and probably finalize the neo-tree integration) before I feel comfortable looking deeper into this issue.

That said, I am more than happy to accept PRs :)

@miversen33 miversen33 added enhancement/request New feature or request question Further information is requested labels Mar 14, 2023
@miversen33
Copy link
Owner

I suppose I didn't really answer your question, just dumped some general info about why netman and LSPs don't play super great together.

To the actual question, in order to make the LSP scenario described above work, there needs to be some way for the external LSP process to "read" the remote file system. That doesn't necessarily mean the a duplicate of the remote needs to exist locally, just that the process can query a directory like structure that presents itself like the remote structure.

Fuse is a great option for this, and I'm currently exploring how that would look but it's a bit complicated and thus relegated to the backlog for now. Fuse also is a Linux only thing (I assume it works on Mac too so maybe it's a unix thing?) So I'd need to consider an option to work with Windows, as I do eventually want to make this thing work there too.

Anyway the long short, any kind of in-depth LSP stuff is a ways off from functioning with netman:/

@traxys
Copy link
Author

traxys commented Mar 14, 2023

Yeah I guessed that LSP was not ready at all, but I wanted to have some clarifications on what would and would not be supported right now

@miversen33
Copy link
Owner

Supported? Nothing at this time.

What can you get working? Single file LSP support (stuff like what python, java, JavaScript, etc provide) probably works but I wouldn't rely on it.

It's on my list :)

@miversen33 miversen33 removed the question Further information is requested label Mar 14, 2023
@miversen33 miversen33 added this to the Backlog milestone Mar 14, 2023
@traxys
Copy link
Author

traxys commented Mar 14, 2023

Thank you very much for the clarifications! It was not imposing any kinds of expectations, just intersted in the plugin & what I can do with it today!

@miversen33
Copy link
Owner

I didn't read it as such :) If you have further questions, please let me know! I am still working through updating the documentation and I understand it can be a bit daunting looking at it.

I am keeping this issue open as the technical request (Remote LSP Projects) is one that does need addressing eventually. I've added it to the backlog and maybe someday before the heat death of the universe, I will be able to get around to it :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement/request New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants