Skip to content

Use lsp4ij #60

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

Merged
merged 47 commits into from
Feb 11, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
b29789d
WIP
ericdallo Jan 17, 2025
38c9d72
Fix status bar
ericdallo Jan 18, 2025
40f4fca
Fix markdown-clj
ericdallo Jan 21, 2025
5e1d2ac
Fix actions register
ericdallo Jan 24, 2025
345d874
Remove unused code
ericdallo Jan 27, 2025
cc2bbd9
refactor
ericdallo Jan 27, 2025
e255bbb
WIP: install server
ericdallo Jan 27, 2025
da34cd2
Add download server
ericdallo Jan 27, 2025
56ae594
Fix uri for jar files
ericdallo Jan 27, 2025
12cadc8
Improve download server
ericdallo Jan 27, 2025
1eb5149
Merge branch 'master' into lsp4ij
ericdallo Jan 28, 2025
fb7cd94
fix start server
ericdallo Jan 28, 2025
0c76894
Fix progress feature
ericdallo Jan 28, 2025
757eae1
Fix command execution for refactors
ericdallo Jan 29, 2025
9cd70ea
docs update
ericdallo Jan 29, 2025
abba58c
docs
ericdallo Jan 29, 2025
d6d9263
improve semantic tokens
ericdallo Jan 29, 2025
8df89df
refactor
ericdallo Jan 29, 2025
9e73dc1
Fix memoize
ericdallo Jan 29, 2025
00c1ba1
Fix reflection
ericdallo Jan 29, 2025
caa08e4
workaround project find
ericdallo Jan 29, 2025
349021a
Support custom serverInfo request
ericdallo Jan 29, 2025
e3c6b0d
Fix server info
ericdallo Jan 30, 2025
b64a2cd
clojure/DependencyContents
ericdallo Jan 30, 2025
6538857
Fix settings state
ericdallo Jan 31, 2025
f284c45
Fix settings
ericdallo Jan 31, 2025
c88dd52
Merge branch 'master' into lsp4ij
ericdallo Jan 31, 2025
c8bf771
Merge branch 'master' into lsp4ij
ericdallo Jan 31, 2025
f65a8da
Merge branch 'master' into lsp4ij
ericdallo Jan 31, 2025
2db388d
Comment clojure dependencyContents for now
ericdallo Feb 3, 2025
08a8206
Fix code lens references command
ericdallo Feb 3, 2025
a1e49a7
Update lsp4ij
ericdallo Feb 4, 2025
e1f85ae
docs
ericdallo Feb 4, 2025
32d8842
docs
ericdallo Feb 4, 2025
01a5958
error catch for commands
ericdallo Feb 4, 2025
4424096
docs paredit
ericdallo Feb 4, 2025
23606c8
docs
ericdallo Feb 4, 2025
b89065d
Add call hierarchy support
ericdallo Feb 4, 2025
79c0312
docs: add document symbols
ericdallo Feb 4, 2025
edfb175
Add codeblock support
ericdallo Feb 4, 2025
1e397ee
Fix startup activity
ericdallo Feb 6, 2025
f280259
refactor
ericdallo Feb 6, 2025
3acd8dd
Fix server keepAlive + status bar update
ericdallo Feb 7, 2025
047f989
Changelog
ericdallo Feb 10, 2025
83b4c01
README
ericdallo Feb 10, 2025
2fe2224
Update lsp4ij min-version
ericdallo Feb 11, 2025
45e3b3c
changelog
ericdallo Feb 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
WIP: install server
  • Loading branch information
ericdallo committed Jan 27, 2025
commit e255bbbdca772535d87fa69bada2e8ca8c35de12
4 changes: 2 additions & 2 deletions src/main/clojure/com/github/clojure_lsp/intellij/client.clj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@

(defn execute-command [^String name ^String text ^Project project]
(-> (CommandExecutor/executeCommand
(doto (LSPCommandContext. (Command. text name) project)
(.setPreferredLanguageServerId "clojure-lsp")))
(doto (LSPCommandContext. (Command. text name) project)
(.setPreferredLanguageServerId "clojure-lsp")))
(.response)))
1 change: 0 additions & 1 deletion src/main/clojure/com/github/clojure_lsp/intellij/db.clj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
{:status :disconnected
:downloaded-server-path nil
:server-process nil
:server nil
:project nil
:diagnostics {}
:settings {:trace-level "off"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
(:import
[com.github.clojure_lsp.intellij.extension SettingsState]
[com.intellij.openapi.project Project]
[com.redhat.devtools.lsp4ij LanguageServerManager LanguageServerWrapper]
[com.redhat.devtools.lsp4ij LanguageServerWrapper]
[com.redhat.devtools.lsp4ij.lifecycle LanguageServerLifecycleListener LanguageServerLifecycleManager]))

(set! *warn-on-reflection* true)
Expand All @@ -25,9 +25,6 @@
(handleStatusChanged [_ ^LanguageServerWrapper server-wrapper]
(let [status (keyword (.toString (.getServerStatus server-wrapper)))]
(db/assoc-in project [:status] status)
(when (= :started status)
(db/assoc-in project [:server] (.getLanguageServer (LanguageServerManager/getInstance project)
"clojure-lsp")))
(run! #(% status) (db/get-in project [:on-status-changed-fns]))))
(handleLSPMessage [_ _ _ _])
(handleError [_ _ _])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@
:name com.github.clojure_lsp.intellij.extension.LanguageServerFactory
:implements [com.redhat.devtools.lsp4ij.LanguageServerFactory])
(:require
[com.github.clojure-lsp.intellij.server :as server]
[com.github.ericdallo.clj4intellij.logger :as logger]
[com.github.ericdallo.clj4intellij.tasks :as tasks]
[com.rpl.proxy-plus :refer [proxy+]])
(:import
[com.intellij.execution.configurations GeneralCommandLine]
[com.intellij.openapi.project Project]
[com.intellij.openapi.project Project ProjectLocator]
[com.intellij.openapi.vfs VirtualFile]
[com.redhat.devtools.lsp4ij.client LanguageClientImpl]
[com.redhat.devtools.lsp4ij.client.features LSPClientFeatures]
[com.redhat.devtools.lsp4ij.server OSProcessStreamConnectionProvider]
Expand All @@ -21,16 +25,41 @@
OSProcessStreamConnectionProvider)
(.setCommandLine (GeneralCommandLine. ["/home/greg/dev/clojure-lsp/clojure-lsp" "listen"]))))

;; TODO custom commands
(defn -createLanguageClient [_ ^Project project]
(LanguageClientImpl. project))

;; TODO custom server methods
(defn -getServerInterface [_] LanguageServer)

(defonce ^:private server (atom {:status :not-found}))

(defn ^:private install-server [project]
(swap! server assoc :status :installing)
(tasks/run-background-task!
project
"Installing clojure-lsp"
(fn [indicator]
(tasks/set-progress indicator "Clojure LSP: downloading server")
(Thread/sleep 5000) ;; Simulate download server

(swap! server assoc :status :installed)
(server/start-server! project))))

;; TODO client features
(defn -createClientFeatures [_]
(proxy+ [] LSPClientFeatures
(isEnabled [_this ^VirtualFile file]
(logger/info "-----> isEnabled" @server)
(case (:status @server)
:installing
false

:installed
true

:not-found
(do (install-server (.guessProjectForFile (ProjectLocator/getInstance) file))
false)))
(initializeParams [_ ^InitializeParams params]
(.setWorkDoneToken params "clojure-lsp-startup")
(.setInitializationOptions params {"dependency-scheme" "jar"
Expand Down
12 changes: 3 additions & 9 deletions src/main/clojure/com/github/clojure_lsp/intellij/server.clj
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
(ns com.github.clojure-lsp.intellij.server
(:require
[com.github.clojure-lsp.intellij.db :as db])
(:import
[com.intellij.openapi.project Project]
[com.redhat.devtools.lsp4ij LanguageServerItem LanguageServerManager]))
[com.redhat.devtools.lsp4ij LanguageServerManager]))

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

(defn start-server! [^Project project]
(when-let [item ^LanguageServerItem @(db/get-in project [:server])]
(when-let [server ^LanguageServerManager (.getServer item)]
(.start server "clojure-lsp"))))
(.start (LanguageServerManager/getInstance project) "clojure-lsp"))

(defn shutdown! [^Project project]
(when-let [item ^LanguageServerItem @(db/get-in project [:server])]
(when-let [server ^LanguageServerManager (.getServer item)]
(.stop server "clojure-lsp"))))
(.stop (LanguageServerManager/getInstance project) "clojure-lsp"))