Skip to content

Commit 349021a

Browse files
committed
Support custom serverInfo request
1 parent caa08e4 commit 349021a

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

src/main/clojure/com/github/clojure_lsp/intellij/client.clj

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
(ns com.github.clojure-lsp.intellij.client
2+
(:require
3+
[clojure.walk :as walk])
24
(:import
5+
[com.github.clojure_lsp.intellij ClojureLanguageServer]
36
[com.intellij.openapi.project Project]
4-
[com.redhat.devtools.lsp4ij LanguageServerManager]
7+
[com.redhat.devtools.lsp4ij LanguageServerItem LanguageServerManager]
58
[com.redhat.devtools.lsp4ij.commands CommandExecutor LSPCommandContext]
69
[java.util List]
710
[org.eclipse.lsp4j Command]))
@@ -12,6 +15,14 @@
1215
(when-let [manager (LanguageServerManager/getInstance project)]
1316
(keyword (.toString (.getServerStatus manager "clojure-lsp")))))
1417

18+
(defn server-info [^Project project]
19+
(when-let [manager (LanguageServerManager/getInstance project)]
20+
(when-let [server (.getServer ^LanguageServerItem @(.getLanguageServer manager "clojure-lsp"))]
21+
(some->> (.serverInfo ^ClojureLanguageServer server)
22+
deref
23+
(into {})
24+
walk/keywordize-keys))))
25+
1526
(defn execute-command [^String name ^String text ^List args ^Project project]
1627
(-> (CommandExecutor/executeCommand
1728
(doto (LSPCommandContext. (Command. text name args) project)

src/main/clojure/com/github/clojure_lsp/intellij/extension/general_settings.clj

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
(:require
66
[clojure.pprint :as pprint]
77
[clojure.string :as str]
8+
[com.github.clojure-lsp.intellij.client :as lsp-client]
89
[com.github.clojure-lsp.intellij.config :as config]
910
[com.github.clojure-lsp.intellij.db :as db]
1011
[com.github.clojure-lsp.intellij.server :as server]
@@ -14,7 +15,6 @@
1415
[seesaw.mig :as s.mig])
1516
(:import
1617
[com.github.clojure_lsp.intellij.extension SettingsState]
17-
[com.intellij.openapi.project Project]
1818
[com.intellij.ui IdeBorderFactory]
1919
[java.awt Toolkit]
2020
[java.awt.datatransfer StringSelection]))
@@ -93,12 +93,9 @@
9393
:foreground (s.color/color 110 110 110)) "wrap"]]
9494
(remove nil?)))))
9595

96-
;; TODO
97-
(defn ^:private server-info! [^Project project])
98-
9996
(defn -createComponent [_]
10097
(let [project (first (db/all-projects))
101-
server-info (server-info! project)
98+
server-info (lsp-client/server-info project)
10299
component (build-component server-info (db/get-in project [:settings]))]
103100
(reset! component* component)
104101
component))

src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
[com.redhat.devtools.lsp4ij.server OSProcessStreamConnectionProvider]
1919
[java.io File]
2020
[java.util List]
21-
[org.eclipse.lsp4j InitializeParams]
22-
[org.eclipse.lsp4j.services LanguageServer]))
21+
[org.eclipse.lsp4j InitializeParams]))
2322

2423
(set! *warn-on-reflection* true)
2524

@@ -40,8 +39,8 @@
4039
(defn -createLanguageClient [_ ^Project project]
4140
(LanguageClientImpl. project))
4241

43-
;; TODO custom server methods
44-
(defn -getServerInterface [_] LanguageServer)
42+
(defn -getServerInterface [_]
43+
com.github.clojure_lsp.intellij.ClojureLanguageServer)
4544

4645
(defn ^:private install-server [project]
4746
(swap! server assoc :status :installing)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.github.clojure_lsp.intellij
2+
3+
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
4+
import org.eclipse.lsp4j.services.LanguageServer
5+
import java.util.concurrent.CompletableFuture
6+
7+
interface ClojureLanguageServer : LanguageServer {
8+
9+
@JsonRequest("clojure/serverInfo/raw")
10+
fun serverInfo(): CompletableFuture<Object>
11+
}

0 commit comments

Comments
 (0)