From b5fbcfd6a9554858e43e82f6e29b618e5d80a745 Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Wed, 26 Feb 2025 16:46:00 -0300 Subject: [PATCH 1/5] add lang.fileViewProviderFactory --- build.gradle.kts | 2 +- src/main/resources/META-INF/plugin.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c51eadd..5fb7184 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -63,7 +63,7 @@ intellij { updateSinceUntilBuild.set(false) val platformPlugins = ArrayList() - val localLsp4ij = file("../lsp4ij/build/idea-sandbox/plugins/LSP4IJ").absoluteFile + val localLsp4ij = file("../lsp4ij/build/idea-sandbox/IC-2023.3/plugins/lsp4ij").absoluteFile if (localLsp4ij.isDirectory) { // In case Gradle fails to build because it can't find some missing jar, try deleting // ~/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/unzipped.com.jetbrains.plugins/com.redhat.devtools.lsp4ij* diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 9924563..426332b 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -30,6 +30,7 @@ + From 83eeacfc1f04ea24850711648f1e06a3af0403fe Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Wed, 26 Feb 2025 17:13:29 -0300 Subject: [PATCH 2/5] orverride isEnableSemanticTokensFileViewProvider --- .../extension/language_server_factory.clj | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj b/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj index a94ee7e..807cb31 100644 --- a/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj +++ b/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj @@ -20,7 +20,7 @@ [com.intellij.openapi.vfs LocalFileSystem VirtualFile] [com.redhat.devtools.lsp4ij LSPIJUtils ServerStatus] [com.redhat.devtools.lsp4ij.client LanguageClientImpl] - [com.redhat.devtools.lsp4ij.client.features LSPClientFeatures LSPProgressFeature] + [com.redhat.devtools.lsp4ij.client.features EditorBehaviorFeature LSPClientFeatures LSPProgressFeature] [com.redhat.devtools.lsp4ij.installation LanguageServerInstallerBase] [com.redhat.devtools.lsp4ij.server OSProcessStreamConnectionProvider] [java.io File] @@ -88,23 +88,24 @@ (LSPIJUtils/findResourceFor uri))) (defn -createClientFeatures [_] - (doto - (proxy+ [] LSPClientFeatures - (keepServerAlive [_] true) - (initializeParams [_ ^InitializeParams params] - (.setWorkDoneToken params "clojure-lsp-startup") - (.setInitializationOptions params {"dependency-scheme" "jar" - "hover" {"arity-on-same-line?" true}})) - (findFileByUri ^VirtualFile [_ ^String uri] - (find-file-by-uri uri)) - (handleServerStatusChanged [^LSPClientFeatures this ^ServerStatus server-status] - (let [status (keyword (.toString server-status))] - (db/assoc-in (.getProject this) [:status] status) - (run! #(% status) (db/get-in (.getProject this) [:on-status-changed-fns]))))) - (.setProgressFeature (proxy+ [] LSPProgressFeature + (let [lsp-client-features (proxy+ [] LSPClientFeatures + (keepServerAlive [_] true) + (initializeParams [_ ^InitializeParams params] + (.setWorkDoneToken params "clojure-lsp-startup") + (.setInitializationOptions params {"dependency-scheme" "jar" + "hover" {"arity-on-same-line?" true}})) + (findFileByUri ^VirtualFile [_ ^String uri] + (find-file-by-uri uri)) + (handleServerStatusChanged [^LSPClientFeatures this ^ServerStatus server-status] + (let [status (keyword (.toString server-status))] + (db/assoc-in (.getProject this) [:status] status) + (run! #(% status) (db/get-in (.getProject this) [:on-status-changed-fns])))))] + (.setProgressFeature lsp-client-features + (proxy+ [] LSPProgressFeature (updateMessage [_ ^String message ^ProgressIndicator indicator] (.setText indicator (str "LSP: " message))))) - (.setServerInstaller (proxy+ [] LanguageServerInstallerBase + (.setServerInstaller lsp-client-features + (proxy+ [] LanguageServerInstallerBase (getInstallationTaskTitle [_] "LSP: installing clojure-lsp") (progressCheckingServerInstalled [_ indicator] (tasks/set-progress indicator "LSP: checking for clojure-lsp")) (progressInstallingServer [_ indicator] (tasks/set-progress indicator "LSP: downloading clojure-lsp")) @@ -119,4 +120,8 @@ (when-not @server-installing* (reset! server-installing* true) (reset! server-path* (server/install-server! (.getProject (.getClientFeatures this)))) - (reset! server-installing* false))))))) + (reset! server-installing* false))))) + (.setEditorBehaviorFeature lsp-client-features + (proxy+ [lsp-client-features] EditorBehaviorFeature + (isEnableSemanticTokensFileViewProvider [_ _] true))) + lsp-client-features)) From eae7ae9b156fd3b7317da9caf4d4af851442c630 Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Thu, 27 Feb 2025 08:39:00 -0300 Subject: [PATCH 3/5] Implement PsiNameIdentifierOwner --- src/main/kotlin/psi.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/psi.kt b/src/main/kotlin/psi.kt index 4554188..d1a9c37 100644 --- a/src/main/kotlin/psi.kt +++ b/src/main/kotlin/psi.kt @@ -31,7 +31,11 @@ class ClojureTokenType(name: String) : IElementType(name, ClojureLanguage), ILea override fun createLeafNode(leafText: CharSequence) = CToken(this, leafText) } class ClojureNodeType(name: String) : IElementType(name, ClojureLanguage), ClojureElementType -class CToken(tokenType: ClojureTokenType, text: CharSequence) : LeafPsiElement(tokenType, text) +class CToken(tokenType: ClojureTokenType, text: CharSequence) : LeafPsiElement(tokenType, text), PsiNameIdentifierOwner { + override fun getNameIdentifier() = this + override fun getName() = this.getText() + override fun setName(name: String) = this +} open class CFileImpl(viewProvider: FileViewProvider, language: Language) : PsiFileBase(viewProvider, language), PsiFile { From 13077ef0b3c95df7d8a532c207f8eddaf1c28d82 Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Thu, 27 Feb 2025 08:39:45 -0300 Subject: [PATCH 4/5] CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4967f99..72d6a3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased] +- Fix go to declaration or usages. #70 + ## 3.1.0 - Fix comment form complain about missing paren. From 855f6cf5b28522d850fffb50e080ca5467923f87 Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Fri, 7 Mar 2025 11:32:41 -0300 Subject: [PATCH 5/5] remove the need to set flag --- .../clojure_lsp/intellij/extension/language_server_factory.clj | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj b/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj index 807cb31..5451e72 100644 --- a/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj +++ b/src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj @@ -121,7 +121,4 @@ (reset! server-installing* true) (reset! server-path* (server/install-server! (.getProject (.getClientFeatures this)))) (reset! server-installing* false))))) - (.setEditorBehaviorFeature lsp-client-features - (proxy+ [lsp-client-features] EditorBehaviorFeature - (isEnableSemanticTokensFileViewProvider [_ _] true))) lsp-client-features))