Skip to content

Commit 156e164

Browse files
committed
Add project
0 parents  commit 156e164

24 files changed

+1591
-0
lines changed

.clj-kondo/babashka/fs/config.edn

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{:lint-as {babashka.fs/with-temp-dir clojure.core/let}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{:lint-as
2+
{rewrite-clj.zip/subedit-> clojure.core/->
3+
rewrite-clj.zip/subedit->> clojure.core/->>
4+
rewrite-clj.zip/edit-> clojure.core/->
5+
rewrite-clj.zip/edit->> clojure.core/->>}}

.cljfmt.edn

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{:remove-surrounding-whitespace? true
2+
:remove-trailing-whitespace? true
3+
:remove-consecutive-blank-lines? true
4+
:insert-missing-whitespace? true
5+
:align-associative? false
6+
:indents {#re "^(?!catch-kondo-errors).*" [[:block 0]]
7+
catch-kondo-errors [[:inner 0]]}
8+
:test-code
9+
(comment
10+
(:require
11+
[])
12+
(:require []
13+
[])
14+
(:clj
15+
[])
16+
(reg-event-fx
17+
:foo
18+
(fn [{db :db} _]))
19+
(reg-sub
20+
:foo
21+
(fn [db [_]])))}

.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/.idea
2+
/.lein-repl-history
3+
/.lein-failures
4+
.nrepl-port
5+
**/*/.lsp/.cache
6+
**/*/.clj-kondo/.cache
7+
/out
8+
target/
9+
/.DS_Store
10+
.cpcache
11+
/.calva/output-window
12+
output.calva-repl
13+
*.jar
14+
*.class
15+
16+
**/*/pom.properties
17+
18+
/.classpath
19+
/.project
20+
/.settings/
21+
/reports
22+
23+
/.lh

.lsp/config.edn

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{:use-metadata-for-privacy? true}

bb.edn

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{:min-bb-version "0.4.0"
2+
:tasks {:requires ([babashka.fs :as fs])
3+
clean (do (fs/delete-tree "server/target")
4+
(fs/delete-tree "server/lsp4clj-server.jar")
5+
(fs/delete-tree "protocols/target")
6+
(fs/delete-tree "protocols/lsp4clj-protocols.jar"))
7+
test (shell {:dir "server"} "clojure -M:test")
8+
9+
server-pom (shell {:dir "server"} "clojure -T:build pom")
10+
protocols-pom (shell {:dir "protocols"} "clojure -T:build pom")
11+
12+
server-jar (shell {:dir "server"} "clojure -T:build jar")
13+
protocols-jar (shell {:dir "protocols"} "clojure -T:build jar")
14+
15+
lint (do (shell "clojure-lsp format --dry")
16+
(shell "clojure-lsp clean-ns --dry")
17+
(shell "clojure-lsp diagnostics --dry"))
18+
lint-fix (do (shell "clojure-lsp format")
19+
(shell "clojure-lsp clean-ns"))
20+
21+
release (do ;; TODO
22+
)
23+
24+
deploy-clojars-server (shell {:dir "server"} "clojure -T:build deploy-clojars")
25+
deploy-clojars-protocols (shell {:dir "protocols"} "clojure -T:build deploy-clojars")}}

deps.edn

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{:paths []
2+
:aliases {:dev {:extra-paths ["protocols/src"
3+
"server/src"]
4+
:extra-deps {lsp4clj/server {:local/root "server"}
5+
lsp4clj/protocols {:local/root "protocols"}
6+
io.github.clojure/tools.build {:git/url "https://github.com/clojure/tools.build.git"
7+
:tag "v0.8.1"
8+
:sha "7d40500"}}}
9+
:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.64.1010"}}
10+
:extra-paths ["server/test"]
11+
:main-opts ["-m" "kaocha.runner"]}}}

protocols/build.clj

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
(ns build
2+
(:require
3+
[clojure.string :as string]
4+
[clojure.tools.build.api :as b]))
5+
6+
(def lib 'com.github.clojure-lsp/lsp4clj-protocols)
7+
(def jar-file (format "target/%s.jar" (name lib)))
8+
9+
(def current-version (string/trim (slurp "resources/LSP4CLJ_VERSION")))
10+
11+
(defn clean [_]
12+
(b/delete {:path "target"}))
13+
14+
(defn pom [opts]
15+
(clean opts)
16+
(b/write-pom {:target ""
17+
:lib lib
18+
:version current-version
19+
:basis (b/create-basis {:project "deps.edn"})
20+
:src-dirs ["src"]
21+
:resource-dirs ["resources"]
22+
:scm {:tag current-version}}))
23+
24+
(defn jar [opts]
25+
(pom opts)
26+
(b/copy-dir {:src-dirs ["src"]
27+
:target-dir "target/classes"})
28+
(b/jar {:class-dir "target/classes"
29+
:jar-file jar-file}))
30+
31+
(defn deploy-clojars [opts]
32+
(jar opts)
33+
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
34+
(merge {:installer :remote
35+
:artifact jar-file
36+
:pom-file "pom.xml"}
37+
opts))
38+
opts)

protocols/deps.edn

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{:deps {org.clojure/clojure {:mvn/version "1.11.1"}}
2+
:paths ["src"]
3+
:aliases {:build {:extra-paths ["resources"]
4+
:deps {io.github.clojure/tools.build {:git/tag "v0.8.1"
5+
:git/sha "7d40500"}
6+
slipset/deps-deploy {:mvn/version "0.2.0"}}
7+
:ns-default build}}}

protocols/pom.xml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<packaging>jar</packaging>
5+
<groupId>com.github.clojure-lsp</groupId>
6+
<artifactId>lsp4clj-protocols</artifactId>
7+
<version>0.0.1</version>
8+
<name>lsp4clj-protocols</name>
9+
<dependencies>
10+
<dependency>
11+
<groupId>org.clojure</groupId>
12+
<artifactId>clojure</artifactId>
13+
<version>1.11.1</version>
14+
</dependency>
15+
</dependencies>
16+
<build>
17+
<sourceDirectory>src</sourceDirectory>
18+
<resources>
19+
<resource>
20+
<directory>resources</directory>
21+
</resource>
22+
</resources>
23+
</build>
24+
<repositories>
25+
<repository>
26+
<id>clojars</id>
27+
<url>https://repo.clojars.org/</url>
28+
</repository>
29+
</repositories>
30+
<scm>
31+
<url>https://github.com/clojure-lsp/lsp4clj</url>
32+
<connection>scm:git:git://github.com/clojure-lsp/lsp4clj.git</connection>
33+
<developerConnection>scm:git:ssh://[email protected]/clojure-lsp/lsp4clj.git</developerConnection>
34+
<tag>0.0.1</tag>
35+
</scm>
36+
</project>

protocols/resources

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../resources

protocols/src/lsp4clj/components.clj

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
(ns lsp4clj.components
2+
(:import
3+
(lsp4clj.protocols.logger ILSPLogger)
4+
(lsp4clj.protocols.producer ILSPProducer)))
5+
6+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
7+
(defn ->components
8+
[db*
9+
^ILSPLogger logger
10+
^ILSPProducer producer]
11+
{:db* db*
12+
:logger logger
13+
:producer producer})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
(ns lsp4clj.protocols.feature-handler)
2+
3+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
4+
(defprotocol ILSPFeatureHandler
5+
(initialize [this project-root-uri client-capabilities client-settings work-done-token])
6+
(did-open [this doc])
7+
(did-change [this doc])
8+
(did-save [this doc])
9+
(execute-command [this doc])
10+
(did-close [this doc])
11+
(did-change-watched-files [this doc])
12+
(references [this doc])
13+
(completion [this doc])
14+
(completion-resolve-item [this doc])
15+
(prepare-rename [this doc])
16+
(rename [this doc])
17+
(hover [this doc])
18+
(signature-help [this doc])
19+
(formatting [this doc])
20+
(code-actions [this doc])
21+
(code-lens [this doc])
22+
(code-lens-resolve [this doc])
23+
(definition [this doc])
24+
(declaration [this doc])
25+
(implementation [this doc])
26+
(document-symbol [this doc])
27+
(document-highlight [this doc])
28+
(semantic-tokens-full [this doc])
29+
(semantic-tokens-range [this doc])
30+
(prepare-call-hierarchy [this doc])
31+
(call-hierarchy-incoming [this doc])
32+
(call-hierarchy-outgoing [this doc])
33+
(linked-editing-ranges [this doc])
34+
;; (did-delete-files [this doc])
35+
(workspace-symbols [this doc])
36+
(range-formatting [this doc]))
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
(ns lsp4clj.protocols.logger)
2+
3+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
4+
(defprotocol ILSPLogger
5+
(setup [this])
6+
7+
(set-log-path [_this log-path])
8+
9+
(-info [this fmeta arg1] [this fmeta arg1 arg2] [this fmeta arg1 arg2 arg3])
10+
(-warn [this fmeta arg1] [this fmeta arg1 arg2] [this fmeta arg1 arg2 arg3])
11+
(-error [this fmeta arg1] [this fmeta arg1 arg2] [this fmeta arg1 arg2 arg3])
12+
(-debug [this fmeta arg1] [this fmeta arg1 arg2] [this fmeta arg1 arg2 arg3]))
13+
14+
(def ^:dynamic *logger*
15+
"Optional logger state to avoid having component available everywhere."
16+
nil)
17+
18+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
19+
(defn set-logger! [logger]
20+
(alter-var-root #'*logger* (constantly logger)))
21+
22+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
23+
(defmacro info [& args]
24+
(let [fmeta (assoc (meta &form)
25+
:file *file*
26+
:ns-str (str *ns*))]
27+
`(when *logger*
28+
(-info *logger* ~fmeta ~@args))))
29+
30+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
31+
(defmacro warn [& args]
32+
(let [fmeta (assoc (meta &form)
33+
:file *file*
34+
:ns-str (str *ns*))]
35+
`(when *logger*
36+
(-warn *logger* ~fmeta ~@args))))
37+
38+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
39+
(defmacro error [& args]
40+
(let [fmeta (assoc (meta &form)
41+
:file *file*
42+
:ns-str (str *ns*))]
43+
`(when *logger*
44+
(-error *logger* ~fmeta ~@args))))
45+
46+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
47+
(defmacro debug [& args]
48+
(let [fmeta (assoc (meta &form)
49+
:file *file*
50+
:ns-str (str *ns*))]
51+
`(when *logger*
52+
(-debug *logger* ~fmeta ~@args))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
(ns lsp4clj.protocols.producer)
2+
3+
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
4+
(defprotocol ILSPProducer
5+
(refresh-code-lens [this])
6+
(publish-diagnostic [this diagnostic])
7+
(publish-workspace-edit [this edit])
8+
(publish-progress [this percentage message progress-token])
9+
(show-document-request [this document-request])
10+
(show-message-request [this message type actions])
11+
(show-message [this message type extra])
12+
(register-capability [this capability]))

resources/LSP4CLJ_VERSION

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.0.1

server/build.clj

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
(ns build
2+
(:require
3+
[clojure.string :as string]
4+
[clojure.tools.build.api :as b]))
5+
6+
(def lib 'com.github.clojure-lsp/lsp4clj-server)
7+
(def jar-file (format "target/%s.jar" (name lib)))
8+
9+
(def current-version (string/trim (slurp "resources/LSP4CLJ_VERSION")))
10+
11+
(defn clean [_]
12+
(b/delete {:path "target"}))
13+
14+
(defn pom [opts]
15+
(clean opts)
16+
(b/write-pom {:target ""
17+
:lib lib
18+
:version current-version
19+
:basis (b/create-basis {:project "deps.edn"})
20+
:src-dirs ["../protocols/src" "src"]
21+
:resource-dirs ["resources"]
22+
:scm {:tag current-version}}))
23+
24+
(defn jar [opts]
25+
(pom opts)
26+
(b/copy-dir {:src-dirs ["src" "../protocols/src"]
27+
:target-dir "target/classes"})
28+
(b/jar {:class-dir "target/classes"
29+
:jar-file jar-file}))
30+
31+
(defn deploy-clojars [opts]
32+
(jar opts)
33+
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
34+
(merge {:installer :remote
35+
:artifact jar-file
36+
:pom-file "pom.xml"}
37+
opts))
38+
opts)

server/deps.edn

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{:deps {org.clojure/clojure {:mvn/version "1.11.1"}
2+
org.clojure/core.async {:mvn/version "1.5.648"}
3+
org.eclipse.xtend/org.eclipse.xtend.lib {:mvn/version "2.25.0"}
4+
org.eclipse.lsp4j/org.eclipse.lsp4j {:mvn/version "0.12.0" :exclusions [org.eclipse.xtend/org.eclipse.xtend.lib
5+
com.google.code.gson/gson]}
6+
org.clojure/data.json {:mvn/version "2.4.0"}
7+
com.google.code.gson/gson {:mvn/version "2.9.0"}
8+
lsp4clj/protocols {:local/root "../protocols"}
9+
medley/medley {:mvn/version "1.4.0"}
10+
org.clojure/java.data {:mvn/version "1.0.95"}}
11+
:paths ["src" "resources"]
12+
:aliases {:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.64.1010"}}
13+
:extra-paths ["test"]
14+
:main-opts ["-m" "kaocha.runner"]}
15+
:build {:extra-paths ["resources"]
16+
:deps {io.github.clojure/tools.build {:git/tag "v0.8.1"
17+
:git/sha "7d40500"}
18+
slipset/deps-deploy {:mvn/version "0.2.0"}}
19+
:ns-default build}}}

0 commit comments

Comments
 (0)