Skip to content

Commit fca039d

Browse files
gselzerclaude
andcommitted
Gather completion into its package; get jedi from code-lsp-jedi
The completion classes move to the completion package, with their tests. The Python server beside Jython's analysis now comes from scijava-code-lsp-jedi (a runtime dependency), rather than from scripting-appose-python; tests run without it, so that they need not build its environment. Also follow code-lsp's API: the plugin serves the jython LSP language (not python, which it builds on), and the companion asks whether python is served rather than catching its absence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent e58e4a6 commit fca039d

24 files changed

Lines changed: 88 additions & 50 deletions

‎README.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ members and constructors (with their overloads), imports, the script's `#@`
1919
parameters and, in a live interpreter, its variables. This is Jython's own
2020
completion, which knows Java exactly.
2121

22-
If a Python language server is available (e.g. jedi-language-server, as
23-
offered by the `appose-python` scripting plugin), its completions are added
24-
too: for Python modules, and for Java classes, from Python type stubs
25-
(`.pyi`) of the Java packages the script imports, written in the background
22+
A Python language server (jedi-language-server, offered by
23+
`scijava-code-lsp-jedi`, which runs it in a small environment of its own,
24+
built the first time it is needed) adds its completions too: for Python
25+
modules, and for Java classes, from Python type stubs (`.pyi`) of the Java
26+
packages the script imports, written in the background
2627
to `~/.cache/scijava/jython-stubs` (or `-Dscijava.jython.stubs=<dir>`). The
2728
server analyzes the script as CPython (Jython's standard library is Python
2829
2's, but mostly the same); so it is asked for completions only, not for

‎pom.xml‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686

8787
<scijava-common.version>2.101.0</scijava-common.version>
8888
<scijava-code-lsp.version>0.1.0-SNAPSHOT</scijava-code-lsp.version>
89+
<scijava-code-lsp-jedi.version>0.1.0-SNAPSHOT</scijava-code-lsp-jedi.version>
8990
<!-- NB: As Fiji ships, for scijava-code-lsp (lsp4j); newer than pom-scijava 34's. -->
9091
<gson.version>2.14.0</gson.version>
9192

@@ -108,6 +109,13 @@
108109
<artifactId>scijava-code-lsp</artifactId>
109110
<version>${scijava-code-lsp.version}</version>
110111
</dependency>
112+
<dependency>
113+
<groupId>org.scijava</groupId>
114+
<artifactId>scijava-code-lsp-jedi</artifactId>
115+
<version>${scijava-code-lsp-jedi.version}</version>
116+
<!-- NB: Its server is found as a plugin, not used directly. -->
117+
<scope>runtime</scope>
118+
</dependency>
111119

112120
<!-- Third-party dependencies -->
113121
<dependency>
@@ -127,4 +135,22 @@
127135
<scope>test</scope>
128136
</dependency>
129137
</dependencies>
138+
139+
<build>
140+
<plugins>
141+
<plugin>
142+
<artifactId>maven-surefire-plugin</artifactId>
143+
<configuration>
144+
<!--
145+
NB: Without jedi-language-server, whose environment would be built
146+
(needing network access, and minutes) as tests first complete code:
147+
they test Jython's own analysis.
148+
-->
149+
<classpathDependencyExcludes>
150+
<classpathDependencyExclude>org.scijava:scijava-code-lsp-jedi</classpathDependencyExclude>
151+
</classpathDependencyExcludes>
152+
</configuration>
153+
</plugin>
154+
</plugins>
155+
</build>
130156
</project>

src/main/java/org/scijava/plugins/scripting/jython/ClassDotAutocompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/ClassDotAutocompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.util.ArrayList;
3232
import java.util.List;

src/main/java/org/scijava/plugins/scripting/jython/CompletionText.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/CompletionText.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.lang.reflect.Constructor;
3232
import java.lang.reflect.Field;

src/main/java/org/scijava/plugins/scripting/jython/ConstructorAutocompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/ConstructorAutocompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.util.Arrays;
3232
import java.util.List;

src/main/java/org/scijava/plugins/scripting/jython/DefVarDotAutocompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/DefVarDotAutocompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.util.List;
3232

src/main/java/org/scijava/plugins/scripting/jython/DotAutocompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/DotAutocompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.lang.reflect.Field;
3232
import java.lang.reflect.Method;

src/main/java/org/scijava/plugins/scripting/jython/EmptyDotAutocompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/EmptyDotAutocompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.util.Collections;
3232
import java.util.List;

src/main/java/org/scijava/plugins/scripting/jython/JavaStubs.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/JavaStubs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.io.File;
3232
import java.io.IOException;

src/main/java/org/scijava/plugins/scripting/jython/JythonAutoCompletions.java renamed to src/main/java/org/scijava/plugins/scripting/jython/completion/JythonAutoCompletions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* POSSIBILITY OF SUCH DAMAGE.
2727
* #L%
2828
*/
29-
package org.scijava.plugins.scripting.jython;
29+
package org.scijava.plugins.scripting.jython.completion;
3030

3131
import java.io.File;
3232
import java.lang.reflect.Parameter;

0 commit comments

Comments
 (0)