Skip to content

What about using LSP4IJ? #53

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

Closed
angelozerr opened this issue Jun 18, 2024 · 98 comments · Fixed by #60
Closed

What about using LSP4IJ? #53

angelozerr opened this issue Jun 18, 2024 · 98 comments · Fixed by #60
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@angelozerr
Copy link

angelozerr commented Jun 18, 2024

I noticed that you have implemented your own lsp support, but I would like to notify you that it exists now a free LSP support for IntelliJ https://github.com/redhat-developer/lsp4ij

You can read an article about LSP4IJ at https://idetools.dev/blog/lsp4ij-announcement/

Hope you could be interested with LSP4IJ and don't hesitate to answer me if you have any questions.

Thanks!

@angelozerr angelozerr added the enhancement New feature or request label Jun 18, 2024
@ericdallo
Copy link
Member

ericdallo commented Jul 1, 2024

Hey @angelozerr, thanks for bringing that, I was not aware of that and it's awesome to see free open source alternatives like that one! I'll take a closer look, but some things I noticed:

  • When I hold Ctrl, and hover over a symbol, I see the whole buffer text underlined, seems a little bit weird
  • Do you support semantic tokens?
  • When I click on a code lens I see this, which I'm not entirely sure what means:
    image
  • clojure-lsp-intellij has a good feedback during initialization which I don't see easily, I need to click on LanguageServers and even so have logs enabled, check the $/progress notifications:
    image

When I created this plugin, the idea is to provide LSP support but in a way intellij users don't need to setup nothing, like just works out of the box, with minor customization as possible, is it possible to have a plugin that uses lsp4ij under the hood and have all those things configured already out of the box?
Most Clojure Intellij users came from Cursive which is a great Clojure paid plugin, and works really well out of the box, so I'd change this plugin base only if it could have the same things and work out of the box as possible

@angelozerr
Copy link
Author

angelozerr commented Jul 1, 2024

When I hold Ctrl, and hover over a symbol, I see the whole buffer text underlined, seems a little bit weird

I think it is the same issue than redhat-developer/lsp4ij#98 It is because if you have use just TextMate or TEXT language, the PsiFile is not tokenized and the range is the full file content. It is badly not possible to customize that with gotoDeclarationHandler extension point -( But if you have a plugin which tokenized the PsiFile with PsiElement you will not have this problem.

Do you support semantic tokens?

I have pushed last hours this support, see doc at https://github.com/redhat-developer/lsp4ij/blob/main/docs/UserGuide.md#semantic-tokens-support but it is experimental and it seems that there is a CPU issue redhat-developer/lsp4ij#394 but if you want to play with this feature you can install nightly build https://github.com/redhat-developer/lsp4ij?tab=readme-ov-file#testing-nightly-builds

I have played with clojure lsp and it seems it colorizes some tokens.

When I click on a code lens I see this, which I'm not entirely sure what means:

It means that language server report Codelens with command code-lens-references, you can see those CodeLens by using LSP console https://github.com/redhat-developer/lsp4ij/blob/main/docs/UserGuide.md#lsp-console

If language server doesn't provide this command, it tries to search if it exists a command on client side, if this command doesn't exist, you have this popup error and you have a link which suggest to implement an IJ plugin which register the expected command.

I think you have implemente this LSP command in your plugin, right?

clojure-lsp-intellij has a good feedback during initialization which I don't see easily, I need to click on LanguageServers and even so have logs enabled, check the $/progress notifications

$/progress has been implemented with IntelliJ Backgroind Task, see https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPSupport.md#progress-support

What is your suggestion to improve that?

When I created this plugin, the idea is to provide LSP support but in a way intellij users don't need to setup nothing, like just works out of the box, with minor customization as possible, is it possible to have a plugin that uses lsp4ij under the hood and have all those things configured already out of the box?

Yes! It is the goal of LSP4IJ that we use https://github.com/redhat-developer/intellij-quarkus and we have the luck that some projects are based on LSP4IJ https://github.com/redhat-developer/lsp4ij?tab=readme-ov-file#who-is-using-lsp4ij

See the section of our article https://idetools.dev/blog/lsp4ij-announcement/#how-to-integrate-your-language-server-in-an-intellij-plugin

It seems that you have played with https://github.com/redhat-developer/lsp4ij/blob/main/docs/user-defined-ls/clojure-lsp.md which is working just with few settings and you don't need to write an IJ plugin, but it is better to develop an IJ plugin:

  • to embed the clojure-lsp in the plugin
  • provide required LSP command like the code-lens-references command.

In other words, my suggestion is to update your IJ plugin, by removing all LSP features and based on LSP4IJ and register the Clojure LSP with the LSP4IJ server extension point https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md

The goal of your plugin is to:

  • embed default clojure lsp
  • provide an action to download last version of clojure lsp
  • implement required LSP command like code-lens-references command

@ericdallo
Copy link
Member

@angelozerr thanks for the explanation, it completly makes sense!
I wish we had that plugin when I started developing this one hehe, but I agree it makes sense to leave the LSP logic to LSP4IJ indeed, especially because of semantic tokens which I know is hard to support on client side, it's just that it's a huge transition we'd need to make carefully, especially because there are lots of people already using clojure-lsp-intellij plugin.

But if you have a plugin which tokenized the PsiFile with PsiElement you will not have this problem.

clojure-lsp-intellij already has a language parser for Clojure, why that still happens?

So, just summarizing some things I have in mind so we can be aligned:

  • I still need to test each existing feature and check it's working or the most important ones are working
  • we would need to launch a 3.0.0 (next major version) of clojure-lsp-intellij, which would delegate all LSP connection to LSP4IJ
  • I wanna a way to download clojure-lsp automatically the same way it does ATM, is there any way to have this logic working and after downloaded manually trigger the LSP start like we do today?
  • about the code-lens-reference, got it, it should be easy to support it.
  • we would need to fix this underlined issue
  • Also, there is a behavior I'd like you to consider supporting, which is when Ctrl+click on a definition, we show the references, it's something I brought from Cursive which Intellij users use a lot instead the need to manually triggering the find-references shortcut, WDYT?

@ericdallo
Copy link
Member

BTW, really cool project the LSP4IJ, it remembers me when we extracted clojure-lsp logic to https://github.com/clojure-lsp/lsp4clj 😄

@angelozerr
Copy link
Author

clojure-lsp-intellij already has a language parser for Clojure, why that still happens?

How have you tested LSP4IJ,with your plugin? If you did that you should have duplicate completion (one from your pluin, and one from LSP4IJ), right?

I still need to test each existing feature and check it's working or the most important ones are working

Exactly, when I discovered your project, I have spend some time to check the feature that you have implemented before annoying you and I think a feature that you will loose is the code action available from the refactor menu. I have not implemented this feature. Perhaps LSP4IJ will need to provide some customization, I don't know, I'm waiting for feedback from adaptor like you if you decide to migrate to LSP4IJ.

we would need to launch a 3.0.0 (next major version) of clojure-lsp-intellij, which would delegate all LSP connection to LSP4IJ

Indeed it will be more careful if you decide to adopt LSP4IJ.

I wanna a way to download clojure-lsp automatically the same way it does ATM, is there any way to have this logic working and after downloaded manually trigger the LSP start like we do today?

Yes, LSP4IJ provide an API to enable/disable and start/stop language server. See https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md#language-server-manager

about the code-lens-reference, got it, it should be easy to support it.

I think.Please note that it exists the default command https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md#editoractionshowreferences perhaps you could declare you action by using the class of this action?

we would need to fix this underlined issue

Also, there is a behavior I'd like you to consider supporting, which is when Ctrl+click on a definition, we show the references, it's something I brought from Cursive which Intellij users use a lot instead the need to manually triggering the find-references shortcut, WDYT?

Today Ctrl+Click is associate to the textDocument/definition, you woule like to associate to textDocument/references? I would like to avoid doing that because references can be expensive, but if you need it we could provide a customization or perhaps you could implement on your side the GoToDeclarationHandler with references. The main thing to do is to create issues on LSP4IJ to discuss about that

@ericdallo
Copy link
Member

How have you tested LSP4IJ,with your plugin? If you did that you should have duplicate completion (one from your pluin, and one from LSP4IJ), right?

I disabled my plugin, enabled yours and restarted intellij

a feature that you will loose is the code action available from the refactor menu.

TBH, That's not a core feature, if code actions are provided via the context menu (lightbulb), that's its good enough. It'd be nice though to support that in the future

provide an API to enable/disable and start/stop language server.

awesome, so I think that will keep working as expected

perhaps you could declare you action by using the class of this action?

Ah, yeah, that should be enough!

Today Ctrl+Click is associate to the textDocument/definition, you woule like to associate to textDocument/references?

Yeah, first time I heard about that I disliked too, but I understood later, the point is that if you are already on the definition, you don't want to go to definition, but the references of it, so users can use the same shortcut to go and come back.
IMO would be nice to have this in the core without the need to support any customization, but if you disagree, a customization would be really useful.

I'll find some time during the next week to deep dive and check if there are other bugs, thanks again for raising this.

@angelozerr
Copy link
Author

I disabled my plugin, enabled yours and restarted intellij

Ok so it means that you have not a PsiFile for clojure, right?

TBH, That's not a core feature, if code actions are provided via the context menu (lightbulb), that's its good enough.

It is and with fast performance (it should)

It'd be nice though to support that in the future

Please create a new ossue for that with your detailled idea (ex : do you want some customization of the icon,etc)

IMO would be nice to have this in the core without the need to support any customization, but if you disagree, a customization would be really useful.

Let's create a new issue to discuss about that and see the feedback from the community.

I'll find some time during the next week to deep dive and check if there are other bugs, thanks again for raising this.

Great!

@ericdallo
Copy link
Member

Ok so it means that you have not a PsiFile for clojure, right?

Ah makes sense 😅, so if we had clojure-lsp-intellij using lsp4ij and defining a Parser like it does today, that would work, right? BTW, with lsp4ij, would be required to change anything related to Langauge declaration, like parser, lexer etc?

Please create a new ossue for that with your detailled idea (ex : do you want some customization of the icon,etc)

Will do!

@angelozerr
Copy link
Author

Ok so it means that you have not a PsiFile for clojure, right?

Ah makes sense 😅, so if we had clojure-lsp-intellij using lsp4ij and defining a Parser like it does today, that would worinspecter?

Yes!

BTW, with lsp4ij, would be required to change anything related to Langauge declaration, like parser, lexer etc?

No LSP4IJ works with or without a PsiFile

Please create a new ossue for that with your detailled idea (ex : do you want some customization of the icon,etc)

Will do!

@angelozerr
Copy link
Author

@ericdallo just for your information, we will release 0.6.0 next week and we provide a cool new feature with document symbol.

Here a screenshot with clojure:

image

@ericdallo
Copy link
Member

Awesome!
I still need to check the feature parity with current features so we can consider switch to LSP4IJ

@angelozerr
Copy link
Author

Awesome!

Glad it pleases you!

For some shortcut, I think it will not the same thing than you, since I have not found a solution to override the Action menu for Find implementation for instances https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPSupport.md#implementation

I had to provide new shortcut. I don'tunderstand how you have manage this usecase without breaking this feature for standard IntelliJ plugin (ex : Java plugin which doesn't use LSP).

@angelozerr
Copy link
Author

angelozerr commented Nov 25, 2024

@ericdallo I have started the 0.8.0 release of LSP4IJ (it will be available in few days by waiting for approvment from JetBrains) which provides type + call hierarchy. Here a sample with clojure:

image

See https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPSupport.md#call-hierarchy to know how to integrate call hierarchy with clojure since you are using a custom clojure language

@ericdallo
Copy link
Member

@angelozerr thanks for the followup, I will spend more time on this project from now on, and I will take a closer look on lsp4ij, the first thing I need to know is check the features parity, if we can provide all current features the migration seems to worth it!

@ericdallo ericdallo moved this to Triage in clojure-lsp-intellij Jan 13, 2025
@ericdallo ericdallo added the help wanted Extra attention is needed label Jan 13, 2025
@angelozerr
Copy link
Author

@ericdallo that's great! You can quickly read LSP support at https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPSupport.md

When you will integrate, you will use a custom language I think (no texmate), you will have to define some LSP features like signatureHelp, see https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPSupport.md#signature-help

Perhaps you will have to customize LSP features, please read https://github.com/redhat-developer/lsp4ij/blob/main/docs/LSPApi.md

And for your information, I have started to implement a DAP (to debug clojure for instance) support in redhat-developer/lsp4ij#735 which will be available in 0.10.0 Perhaps you could be interested?

@ericdallo
Copy link
Member

I took a look at the LSPSupport doc, AFAICS there is nothing missing!

Ok, my next concern is how much I will need to change the core of the plugin, since it's written in Clojure using clj4intellij, but if most of the work is done in the plugin.xml, it should be ok

Ah yes, DAP is really cool, I used dap-mode with emacs for java for a long time, would be awesome to see that working with clojure, a real game changer for this plugin.

@ericdallo
Copy link
Member

ericdallo commented Jan 17, 2025

@angelozerr I created a branch here to start this integration, some points I noticed:

  • clojure-lsp supports intellij 2021 while the plugin supports only 2023 onwards, that's not a big deal though as I plan to support only 2023 onwards as well I guess

  • Not sure why the server is not being created automatically even associating with a language
    Image
    Just wanna mention that it's really important that the clojure-lsp plugin require minimal configs from users as possible, just like it's ATM (where it downloads the server automatically by default and starts it as soon a clojure file is opened).

  • After creating manually the server, during the initialize request, I'm not seeing the $progress notifications that server produces during the initialize request, like I mentioned here, is it required to do any extra config?

  • I wanna keep the status bar clojure icon that exists atm, where user has options to see if the LSP is connected without any action and options to restart the server, I suppose I can do that with LanguageServerManager class, will take a look later.

@angelozerr
Copy link
Author

@angelozerr I created a branch here to start this integration, some points I noticed:

  • clojure-lsp supports intellij 2021 while the plugin supports only 2023 onwards, that's not a big deal though as I plan to support only 2023 onwards as well I guess

Lsp4ij supports 2022.3 to eap (for the moment)

  • Not sure why the server is not being created automatically even associating with a language
    Image
    Just wanna mention that it's really important that the clojure-lsp plugin require minimal configs from users as possible, just like it's ATM (where it downloads the server automatically by default and starts it as soon a clojure file is opened).

It should be created, that it is strange?

If you restart IJ you dont see your ls?

  • After creating manually the server, during the initialize request, I'm not seeing the $progress notifications that server produces during the initialize request, like I mentioned here, is it required to do any extra config?

No it should work. Need some investigation

  • I wanna keep the status bar clojure icon that exists atm, where user has options to see if the LSP is connected without any action and options to restart the server, I suppose I can do that with LanguageServerManager class, will take a look later.

The lsp console shows you the server status when it is starting, started, stopping stopped. You can see also lsp traces.

@ericdallo
Copy link
Member

Lsp4ij supports 2022.3 to eap (for the moment)

I'm seeing 2023.2 here

If you restart IJ you dont see your ls?

Same problem after restarting :/ any other guess? this is a important step to integrate

The lsp console shows you the server status when it is starting, started, stopping stopped. You can see also lsp traces.

I know, but I found that window too hidden, would be nice to keep current behavior.
When server starting or stopped/disabled:

Image

When started and running:
Image

@angelozerr
Copy link
Author

Lsp4ij supports 2022.3 to eap (for the moment)

I'm seeing 2023.2

Ooops sorry you are rigjt.
here

If you restart IJ you dont see your ls?

Same problem after restarting :/ any other guess? this is a important step to integrate

If you close the language server view and reopen it?

The lsp console shows you the server status when it is starting, started, stopping stopped. You can see also lsp traces.

I know, but I found that window too hidden, would be nice to keep current behavior.
When server starting or stopped/disabled:

Image

When started and running:
Image

@ericdallo
Copy link
Member

If you close the language server view and reopen it?

Nothing, tried multiple things, it's like it's not finding that config in my plugin XML

@angelozerr
Copy link
Author

If you close the language server view and reopen it?

Nothing, tried multiple things, it's like it's not finding that config in my plugin XML

Indeed it is very strange.

@angelozerr
Copy link
Author

If you close the language server view and reopen it?

Nothing, tried multiple things, it's like it's not finding that config in my plugin XML

Indeed it is very strange.

Have you some logs?

@angelozerr
Copy link
Author

@ericdallo
Copy link
Member

@angelozerr that fixes the problem! sorry for my silly fault 😅

I'll work on the statusbar now, so the only missing important thing for now is the progress notifications not being sent during initialize request, I believe it must be something with those notifications being sent before initialize finish.

I still need to test each feature individually but I believe they should work

@angelozerr
Copy link
Author

angelozerr commented Jan 18, 2025

@angelozerr that fixes the problem! sorry for my silly fault 😅

Great!

I'll work on the statusbar now, so the only missing important thing for now is the progress notifications not being sent during initialize request, I believe it must be something with those notifications being sent before initialize finish.

You mean $progress from LSP or other progress kind?

I still need to test each feature individually but I believe they should work

As you are using custom PsiFile, you will have to declare some LSP features like:

@angelozerr
Copy link
Author

@angelozerr yeah, I think the only way will be to have AnAction for those commands and declare LSPCommandAction for the ones returned by server like the code lens.

I'm trying to follow your snippet but when consuming the response future, I get this exception:

Caused by: java.lang.NullPointerException: Cannot invoke "com.redhat.devtools.lsp4ij.LanguageServerItem.getServerDefinition()" because "languageServer" is null
at com.redhat.devtools.lsp4ij.commands.CommandExecutor.lambda$executeCommandServerSide$1(CommandExecutor.java:183)
at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194)
at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleResponse(RemoteEndpoint.java:209)
at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:193)
at com.redhat.devtools.lsp4ij.LanguageServerWrapper.lambda$start$4(LanguageServerWrapper.java:315)
(defn execute-command [^String name ^String text ^Project project]
(-> (CommandExecutor/executeCommand
(doto (LSPCommandContext. (Command. text name) project)
(.setPreferredLanguageServerId "clojure-lsp")))
(.response)
deref)) ;; throws exception

Please reinstall nighty build. The NPE error should be fixed and it should show an error coming from the language server (the usecase for you).

@ericdallo
Copy link
Member

tks, makes sense I forgot to send the args of the command, will do that

@angelozerr
Copy link
Author

tks, makes sense I forgot to send the args of the command, will do that

You are saying that because you have installed nighty and now you see proper error?

@angelozerr
Copy link
Author

angelozerr commented Jan 29, 2025

When you will provide those actions, is there other things which block you to adopt lsp4ij ?

@ericdallo
Copy link
Member

You are saying that because you have installed nighty and now you see proper error?

no, I just forgot to send the command args, all clojure-lsp custom commands receive the current cursor location as args, will fix it.

When you will provide those actions, is there other things which block you to adopt lsp4ij ?

there is still the bug of after going to a definition of a external dependency (like a jar), no LSP feature works (code lends, definition, references) in that file, the only request sent after going to that is the textDocument/definition request, but the plugin doesn't send any other requests like definition or references:

[Trace - 09:02:44] Sending notification 'textDocument/didOpen'
Params: {
  "textDocument": {
    "uri": "jar:file:///home/greg/.m2/repository/prismatic/schema/1.4.1/schema-1.4.1.jar!/schema/core.cljc",
    "languageId": "clojure",
    "version": 1,
    "text": "..."
  }
}

@angelozerr
Copy link
Author

You are saying that because you have installed nighty and now you see proper error?

no, I just forgot to send the command args, all clojure-lsp custom commands receive the current cursor location as args, will fix it.

When you will provide those actions, is there other things which block you to adopt lsp4ij ?

there is still the bug of after going to a definition of a external dependency (like a jar), no LSP feature works (code lends, definition, references) in that file, the only request sent after going to that is the textDocument/definition request, but the plugin doesn't send any other requests like definition or references:

[Trace - 09:02:44] Sending notification 'textDocument/didOpen'
Params: {
  "textDocument": {
    "uri": "jar:file:///home/greg/.m2/repository/prismatic/schema/1.4.1/schema-1.4.1.jar!/schema/core.cljc",
    "languageId": "clojure",
    "version": 1,
    "text": "..."
  }
}

Have you the same problem with your plugin?

@ericdallo
Copy link
Member

ericdallo commented Jan 29, 2025

Have you the same problem with your plugin?

No, since my plugin implements manually the client requests, we don't have that problem there

@angelozerr
Copy link
Author

Have you the same problem with your plugin?

No, since my plugin implements manually the client requests, we don't have that problem there

Perhaps it is a limitation of IJ which disable those features in ReadOnly mode?

@ericdallo
Copy link
Member

Perhaps it is a limitation of IJ which disable those features in ReadOnly mode?

I don't think so, since current plugin master also puts the file as read only.
LMK if you wanna give it a try, although it's clojrue I can give you the step by step to repro the problem, I have a https://github.com/ericdallo/clojure-sample project which you could try, but it's basically finding a definition of a external dep, then you would see no feature works after that

Image

@angelozerr
Copy link
Author

Could you create an issue please with this problem

@ericdallo
Copy link
Member

Done

@ericdallo
Copy link
Member

ericdallo commented Jan 29, 2025

I improved the semantic tokens coloring @angelozerr , just sharing with you the comparison of without semantic-tokens and with them:

Image
Image

@ericdallo
Copy link
Member

BTW I started to track what's missing and what's done on the description of the PR

@angelozerr
Copy link
Author

I improved the semantic tokens coloring @angelozerr , just sharing with you the comparison of without semantic-tokens and with them:

Image Image

Nice! Glad LSP4IJ is enough extensible to manage that.

@ericdallo
Copy link
Member

Overall, lsp4ij API is really good IMO, way better than IntelliJ API, congrats on that

@angelozerr
Copy link
Author

Overall, lsp4ij API is really good IMO, way better than IntelliJ API, congrats on that

Thanks so much for this kind of feedback! This API comes from @fbricon

@ericdallo
Copy link
Member

@angelozerr for some reason after recent changes the commands execution following this are throwing this exception, any guess?

2025-02-04 10:13:49,621 [1848379]   INFO - STDERR - com.intellij.openapi.progress.ProcessCanceledException: com.intellij.platform.instanceContainer.internal.Con
tainerDisposedException: Container 'ProjectImpl@1181426054 services' was disposed
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:722)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:695)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.redhat.devtools.lsp4ij.settings.UserDefinedLanguageServerSettings.getInstance(UserDefinedLanguage
ServerSettings.java:59)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.redhat.devtools.lsp4ij.commands.LSPCommandContext.<init>(LSPCommandContext.java:80)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.redhat.devtools.lsp4ij.commands.LSPCommandContext.<init>(LSPCommandContext.java:72)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.clojure_lsp.intellij.client$execute_command.invokeStatic(client.clj:50)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.clojure_lsp.intellij.client$execute_command.invoke(client.clj:49)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.clojure_lsp.intellij.extension.register_actions_startup$on_action_performed.invokeStatic(r
egister_actions_startup.clj:81)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.clojure_lsp.intellij.extension.register_actions_startup$on_action_performed.invoke(registe
r_actions_startup.clj:78)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at clojure.core$partial$fn__5931.invoke(core.clj:2655)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.ericdallo.clj4intellij.action$register_action_BANG_$actionPerformed2919_impl__2921.invoke(
action.clj:27)
2025-02-04 10:13:49,622 [1848380]   INFO - STDERR -     at com.github.ericdallo.clj4intellij.action.proxy_plus2918.actionPerformed(Unknown Source)
2025-02-04 10:13:49,623 [1848381]   INFO - STDERR -     at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.kt:374)
2025-02-04 10:13:49,623 [1848381]   INFO - STDERR -     at com.intellij.openapi.keymap.impl.ActionProcessor.performAction(ActionProcessor.java:32)
2025-02-04 10:13:49,623 [1848381]   INFO - STDERR -     at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$actionProcessor$1.performAction(IdeKeyEventDis
patcher.kt:499)

@ericdallo
Copy link
Member

It's curious that it doesn't happen all the time, restarting intellij seems to make it work again

@angelozerr
Copy link
Author

No I have no idea why you have this problem?

Have you closed some IJ project?

@ericdallo
Copy link
Member

Yeah, nvm, it probably was related with testing multiple projects at once, I can't repro anymore, will wait happen again to debug further more.

@github-project-automation github-project-automation bot moved this from Triage to ✅ Done in clojure-lsp-intellij Feb 11, 2025
@ericdallo
Copy link
Member

Avaiable in 3.0.0 plugin, thanks for all the support @angelozerr!

@angelozerr
Copy link
Author

Avaiable in 3.0.0 plugin, thanks for all the support @angelozerr!

You are welcome! Hope you will not have some regression since you have adopted LSP4IJ which is a major change on your side.

Don't hesitate to create a PR on LSP4IJ github repo to add your plugin and if you wish, don't hesitate to add a review in marketplace to help us to promote LSP4IJ. Thanks!

@angelozerr
Copy link
Author

Avaiable in 3.0.0 plugin, thanks for all the support @angelozerr!

You are welcome! Hope you will not have some regression since you have adopted LSP4IJ which is a major change on your side.

Don't hesitate to create a PR on LSP4IJ github repo to add your plugin and if you wish, don't hesitate to add a review in marketplace to help us to promote LSP4IJ. Thanks!

@ericdallo I am sorry to insist but could you create a PR inLSP4IJ to add your plugin and add a review on Jetbrains marketplace. It is super important for us to convince other plugins to be based on LSP4IJ.

It would be nice also to add on the bottom of https://github.com/redhat-developer/lsp4ij/blob/main/docs/user-defined-ls/clojure-lsp.md that it is recommanded to install your plugin which is based on LSP4IJ by given some advantages like "installation server", "LSP command implementation by given a sample with codelens).

Thanks so much to help us to promote LSP4IJ.

@ericdallo
Copy link
Member

Sure, done here

@angelozerr
Copy link
Author

Thanks so much @ericdallo !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
Status: ✅ Done
Development

Successfully merging a pull request may close this issue.

2 participants