← 输入框|github.com|刷新
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
d046d7e
Add code-lsp: a Language Server Protocol bridge
gselzer Oct 6, 2026
3130368
Add hover and diagnostics
gselzer Oct 6, 2026
38f97e3
code-lsp: share language servers via LspService
gselzer Oct 6, 2026
e846a7b
code-lsp: a language server for SciJava scripts
gselzer Oct 6, 2026
d8e9948
code-lsp: language servers as the one interface
gselzer Oct 7, 2026
883dfb7
code-lsp: adapter and merging fixes for editors
gselzer Oct 7, 2026
2fb994b
code-lsp: keep a server's own duplicate completions
gselzer Oct 7, 2026
febb6f1
code-lsp: a toolkit for in-process language servers
gselzer Oct 7, 2026
61c8434
code-lsp: read callables back; merge edit-less completions
gselzer Oct 7, 2026
8b09621
code-lsp: a completion front for Python language servers
gselzer Oct 7, 2026
437905f
Remove scijava-code-api, in favor of code-lsp
gselzer Oct 7, 2026
c68c72c
code-lsp: script sessions, for clients of language servers
gselzer Oct 7, 2026
cddff8e
code-lsp: drop the standalone language server
gselzer Oct 8, 2026
4968b97
code-lsp: move the Python completion front to scripting-appose-python
gselzer Oct 8, 2026
93d3877
code-lsp: explain why Gson's version is pinned
gselzer Oct 8, 2026
665b229
code-lsp: a package for each purpose, exported as a module
gselzer Oct 8, 2026
0df4693
code-lsp: rewrite the README around the module's purposes
gselzer Oct 8, 2026
00c05e5
code-lsp: drop script session accessors nobody calls
gselzer Oct 8, 2026
dd616fe
code-lsp: plain LSP answers only
gselzer Oct 8, 2026
7e23f9c
code-lsp: one server per session, from one plugin per language
gselzer Oct 8, 2026
8d5a381
Unify Environment's search paths and classpath
gselzer Oct 9, 2026
253175c
Simplify javadoc
gselzer Oct 9, 2026
54d3a3f
Merge PositionMap into ScriptDocument
gselzer Oct 9, 2026
772fca8
code-lsp: show servers scripts as plain code, from the session
gselzer Oct 9, 2026
8e95779
code-lsp: do not complete names only the declarations import
gselzer Oct 9, 2026
ebe862a
code-lsp: fold the script package into the core
gselzer Oct 9, 2026
95b6567
code-lsp: run server processes from ServerProcessPlugins
gselzer Oct 12, 2026
e6afa5f
code-lsp: give each document its own environment
gselzer Oct 13, 2026
4ba3069
code-lsp-jedi: offer jedi-language-server as its own module
gselzer Oct 15, 2026
6292033
code-lsp: find every server via LanguageServerPlugins
gselzer Oct 15, 2026
d4e3427
code-lsp: serve script languages by their names, in lower case
gselzer Oct 16, 2026
eaac958
code-lsp: let script dialects choose servers
gselzer Oct 16, 2026
5deee38
code-lsp: keep server processes in a toolkit, not plugins
gselzer Oct 16, 2026
db1f476
code-lsp: rename ScriptDialect.runtimeType to parameterType
gselzer Oct 16, 2026
678e40a
code-lsp: let dialects write the header; blank what SciJava removes
gselzer Oct 16, 2026
0b6ebe2
code-lsp: describe LanguageServerService anew
gselzer Oct 16, 2026
ba0bcbd
code-lsp: pass fewer nulls around
gselzer Oct 19, 2026
bb062ef
code-lsp: let sessions follow where their scripts run
gselzer Oct 20, 2026
42a6f52
code-lsp: make sessions with the service only
gselzer Oct 20, 2026
763c81b
code-lsp: describe the README anew
gselzer Oct 20, 2026
4ce1091
code-lsp-jedi: say nothing of dependency overlays
gselzer Oct 20, 2026
eeb8e9d
code-lsp: shrink the API of sessions and environments
gselzer Oct 21, 2026
eb12285
code-lsp-groovy: follow code-lsp's sessions and environments
gselzer Oct 21, 2026
eb64a10
code-lsp-jedi: follow code-lsp's sessions and environments
gselzer Oct 21, 2026
876ea8e
code-lsp-jython: follow code-lsp's sessions and environments
gselzer Oct 21, 2026
118d301
code-lsp-jython: show only the plugin, and print nothing
gselzer Oct 21, 2026
e2085a5
code-lsp-jython: analyze Jython with jedi and Java stubs alone
gselzer Oct 21, 2026
597319f
code-lsp-jython: list what does not work yet
gselzer Oct 21, 2026
7e93620
code-lsp-jython: say what JythonImports is for
gselzer Oct 21, 2026
e49f3ce
code-lsp-jython: describe JavaStubs anew
gselzer Oct 21, 2026
58ba9c8
code-lsp: serve plaintext with the interpreter's variables, as a plugin
gselzer Oct 21, 2026
3bfa506
code-lsp: show less of the jvm toolkit
gselzer Oct 21, 2026
737df9d
Build the scijava-code-lsp modules
gselzer Oct 21, 2026
5832f19
Ask Groovy lexer for keywords
gselzer Oct 22, 2026
b24de58
Ask Groovy for its default imports
gselzer Oct 22, 2026
bda676a
code-lsp: declare a live interpreter's variables in the dialect's header
gselzer Oct 23, 2026
285c11d
code-lsp: complete numbers' members, as in "5.times"
gselzer Oct 23, 2026
3963acf
code-lsp: explain each case of Groovy completion
gselzer Oct 23, 2026
5599332
code-lsp: explain each case of Groovy signature help
gselzer Oct 23, 2026
eb6f637
code-lsp: say that a live interpreter's context changes
gselzer Oct 23, 2026
6336387
code-lsp: test members of declared types on their own
gselzer Oct 23, 2026
8e80b13
code-lsp: name Groovy's tests by what they test
gselzer Oct 23, 2026
ef6790b
Update author in POM
gselzer Oct 23, 2026
4e4aab9
code-lsp: say when scijava-common 2.101.0 needn't be pinned
gselzer Oct 23, 2026
a4ef4e0
code-lsp: shorten the Groovy README, and unwrap the others
gselzer Oct 23, 2026
2ec7617
code-lsp-jedi: explain the launcher script more plainly
gselzer Oct 23, 2026
dbec231
code-lsp: explain how to offer a server run as a process
gselzer Oct 23, 2026
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
4 changes: 4 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@
<module>scijava-taglets</module>
<!-- End implicit dependencies -->

<module>scijava-code-lsp</module>
<module>scijava-code-lsp-groovy</module>
<module>scijava-code-lsp-jedi</module>
<module>scijava-code-lsp-jython</module>
<module>scijava-collections</module>
<module>scijava-common3</module>
<module>scijava-concurrent</module>
Expand Down
5 changes: 5 additions & 0 deletions scijava-code-lsp-groovy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SciJava Code LSP Groovy

An in-process language server for `groovy` (`GroovyLanguageServer`, offered to `scijava-code-lsp` by `GroovyServerPlugin`), driven by Groovy's own compiler, which types the code statically as far as it can (see `TypedAST`).

It knows plain Groovy only. To use this language server with SciJava scripts, see [scripting-groovy](https://github.com/scijava/scripting-groovy).
138 changes: 138 additions & 0 deletions scijava-code-lsp-groovy/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava</artifactId>
<version>45.1.0</version>
<relativePath />
</parent>

<artifactId>scijava-code-lsp-groovy</artifactId>
<version>0.1.0-SNAPSHOT</version>

<name>SciJava Code LSP Groovy</name>
<description>Groovy code intelligence for SciJava, via Groovy's own compiler.</description>
<url>https://github.com/scijava/scijava</url>
<inceptionYear>2026</inceptionYear>
<organization>
<name>SciJava</name>
<url>https://scijava.org/</url>
</organization>
<licenses>
<license>
<name>Simplified BSD License</name>
<distribution>repo</distribution>
</license>
</licenses>

<developers>
<developer>
<id>gselzer</id>
<name>Gabriel Selzer</name>
<url>https://imagej.net/people/gselzer</url>
<roles>
<role>founder</role>
<role>lead</role>
<role>developer</role>
<role>debugger</role>
<role>reviewer</role>
<role>support</role>
<role>maintainer</role>
</roles>
</developer>
</developers>
<contributors>
<contributor>
<name>None</name>
</contributor>
</contributors>

<mailingLists>
<mailingList>
<name>Image.sc Forum</name>
<archive>https://forum.image.sc/tag/scijava</archive>
</mailingList>
</mailingLists>

<scm>
<connection>scm:git:https://github.com/scijava/scijava</connection>
<developerConnection>scm:git:git@github.com:scijava/scijava</developerConnection>
<tag>HEAD</tag>
<url>https://github.com/scijava/scijava</url>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/scijava/scijava/issues</url>
</issueManagement>
<ciManagement>
<system>GitHub Actions</system>
<url>https://github.com/scijava/scijava/actions</url>
</ciManagement>

<properties>
<package-name>org.scijava.code.lsp.groovy</package-name>
<license.licenseName>bsd_2</license.licenseName>
<license.copyrightOwners>SciJava developers.</license.copyrightOwners>

<!-- TEMP: Remove once pom-scijava manages scijava-common 2.101.0. -->
<scijava-common.version>2.101.0</scijava-common.version>
<scijava-code-lsp.version>0.1.0-SNAPSHOT</scijava-code-lsp.version>
</properties>

<dependencies>
<!-- SciJava dependencies -->
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-common</artifactId>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-code-lsp</artifactId>
<version>${scijava-code-lsp.version}</version>
</dependency>

<!-- Third-party dependencies -->
<dependency>
<groupId>org.apache.groovy</groupId>
<artifactId>groovy</artifactId>
</dependency>

<!-- Test scope dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.scijava</groupId>
<artifactId>scijava-common</artifactId>
<version>${scijava-common.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--
NB: On the module path, the tests' plugin index would shadow the
module's own (both are META-INF/json/org.scijava.plugin.Plugin),
hiding its services from SciJava Common. On the classpath, as in
Fiji, both are found.
-->
<useModulePath>false</useModulePath>
</configuration>
</plugin>
</plugins>
</build>
</project>
5 changes: 5 additions & 0 deletions scijava-code-lsp-groovy/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
open module org.scijava.code.lsp.groovy {
requires org.scijava.code.lsp;
requires org.apache.groovy;
requires java.scripting;
}
Loading
Loading