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

On neovim decompile does not work #21

Open
Decodetalkers opened this issue Mar 8, 2022 · 15 comments
Open

On neovim decompile does not work #21

Decodetalkers opened this issue Mar 8, 2022 · 15 comments

Comments

@Decodetalkers
Copy link
Contributor

When I use csharpls, and use the jump of nvimlsp, it do not return a decompile file.

I see that you have support decompile, I think it should work

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

hi @chen244

support for decompilation is an (custom) extension of lsp protocol and needs work on the client to be supported (works on emacs only for now, AFAIK)

if you're willing to do this I can provide pointers; you should probably check java/clojure or other related nvimlsp client where decompilation is supported, copy the code and I can help you hack it in

@Decodetalkers
Copy link
Contributor Author

hi @chen244

support for decompilation is an extension of lsp protocol and needs work on the client to be supported (works on emacs only for now, AFAIK)

if you're willing to do this I can provide pointers; you should probably check java/clojure or other related nvimlsp client where decompilation is supported, copy the code and I can help you hack it in

Thanks. what should I do , how to make a lsp extension to support decompile? I will try. Can you help me?

@razzmatazz
Copy link
Owner

can you find an existing nvimlsp client that suports decompilation? so we can have some starting base. maybe java or clojure or some other?

@Decodetalkers
Copy link
Contributor Author

Decodetalkers commented Mar 8, 2022

can you find an existing nvimlsp client that suports decompilation? so we can have some starting base. maybe java or clojure or some other?

Hoffs/omnisharp-extended-lsp.nvim#6
It is decompile for omnisharp
But it is the autor says it is because the bug of omnisharp..

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

this is a great start!

I have no experience in nvim/lua but copying most of the logic plus doing a couple of changes should work as the protocol for csharp-ls "get metadata" is not that different from omnisharp-lsp "get metadata" op

@Decodetalkers
Copy link
Contributor Author

Thanks very much

@Decodetalkers
Copy link
Contributor Author

local result, err = client.request_sync("o#/metadata", params, 10000)

in omnisharp , it get the decompile from o#/metadata, but how can I get the result in csharp_ls

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

the handler for this on csharp-ls is "csharp/metadata":

you need to send this:

and the response is:

you can see emacs lsp-mode implementation here:

please ask if you need request examples, I may be able to provide lsp traces for what emacs sends and receives so you can emulate this

@Decodetalkers
Copy link
Contributor Author

the handler for this on csharp-ls is "csharp/metadata":

* https://github.com/razzmatazz/csharp-language-server/blob/master/src/CSharpLanguageServer/Server.fs#L1206

you need to send this:

* https://github.com/razzmatazz/csharp-language-server/blob/master/src/CSharpLanguageServer/Server.fs#L72

and the response is:

* https://github.com/razzmatazz/csharp-language-server/blob/master/src/CSharpLanguageServer/Server.fs#L76

you can see emacs lsp-mode implementation here:

* https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-csharp.el#L381

please ask if you need request examples, I may be able to provide lsp traces for what emacs sends and receives so you can emulate this

For example ,I get
csharp:/metadata/projects/trainning2/assemblies/System.Console/symbols/System.Console.cs
this url

and I will get

{
      assymblyName = "System.Console", 
     projectName = "trainning2",
      typeName = "System.Console"
}

Then I send this to csharp/metadata. is it right?

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

emacs trace for go-to-def to string:

Screenshot 2022-03-08 at 13 15 02

resolving definition:

Screenshot 2022-03-08 at 13 17 28

then it sees that the url is csharp:/ and retrieves metadata:

Screenshot 2022-03-08 at 13 18 17

@Decodetalkers
Copy link
Contributor Author

Decodetalkers commented Mar 8, 2022

emacs trace for go-to-def to string:

Screenshot 2022-03-08 at 13 15 02

resolving definition:

Screenshot 2022-03-08 at 13 17 28

then it sees that the url is csharp:/ and retrieves metadata:

Screenshot 2022-03-08 at 13 18 17

I Got it! will

https://github.com/chen244/csharpls_extend-lsp.nvim

I finished it!!

@razzmatazz
Copy link
Owner

great!

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

btw, could you add PR with FAQ entry to README.md on this project on how to make it work?

@Decodetalkers
Copy link
Contributor Author

btw, could you add PR with FAQ entry to README.md on this project on how to make it work?

Ok , I see. btw, you means your project, the csharp-language-server?

@razzmatazz
Copy link
Owner

razzmatazz commented Mar 8, 2022

btw, could you add PR with FAQ entry to README.md on this project on how to make it work?

Ok , I see. btw, you means your project, the csharp-language-server?

yes, here https://github.com/razzmatazz/csharp-language-server/blob/master/README.md

I see there is not FAQ yet, -- just add new FAQ section and then you could just drop a line with reference to your project or general directions on to make metadata work on nvim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants