Skip to content

Commit 691a31b

Browse files
committed
Merge branch 'main' into adopt-tutor-code
2 parents 1c5d39b + 27c2891 commit 691a31b

96 files changed

Lines changed: 9598 additions & 8117 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ jobs:
150150

151151
- name: Run Tests
152152
# single quotes to help windows deal with argument splitting
153-
run: mvn -B '-Drascal.compile.skip' '-Drascal.tutor.skip' '-Drascal.test.memory=3' test
153+
run: mvn -B '-Drascal.compile.skip' '-Drascal.tutor.skip' '-Drascal.test.memory=2' test
154154

155155
- uses: codecov/codecov-action@v4
156156
continue-on-error: true # sometimes this one fails, that shouldn't stop a build

.vscode/launch.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,16 @@
3030
"request": "launch",
3131
"mainClass": "org.rascalmpl.shell.RascalShell",
3232
"projectName": "rascal",
33-
"vmArgs": "-Xss80m -Xmx2g -ea"
33+
"vmArgs": "-Xss80m -Xmx2g -ea",
34+
"console": "integratedTerminal"
3435
},
3536
{
3637
"type": "java",
3738
"name": "Launch RascalShell Tutor",
3839
"request": "launch",
3940
"mainClass": "org.rascalmpl.shell.RascalShell",
4041
"projectName": "rascal",
41-
"cwd" : "${workspaceFolder}/../rascal-tutor",
42+
"cwd": "${workspaceFolder}/../rascal-tutor",
4243
"vmArgs": "-Xss80m -Xmx2g -ea"
4344
},
4445
{

pom.xml

Lines changed: 33 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<groupId>org.rascalmpl</groupId>
55
<artifactId>rascal</artifactId>
6-
<version>0.41.0-RC8-SNAPSHOT</version>
6+
<version>0.41.0-RC9-SNAPSHOT</version>
77
<packaging>jar</packaging>
88

99
<scm>
@@ -34,6 +34,7 @@
3434
<rascal.test.memory>3</rascal.test.memory>
3535
<maven.compiler.release>11</maven.compiler.release>
3636
<rascal-maven.version>0.28.9-BOOT1</rascal-maven.version>
37+
<jline.version>3.27.0</jline.version>
3738
</properties>
3839

3940
<licenses>
@@ -236,6 +237,7 @@
236237
<include>**/org/rascalmpl/test/AllSuiteParallel.java</include>
237238
<include>**/org/rascalmpl/test/library/LibraryLangPaths.java</include>
238239
<include>**/org/rascalmpl/test/value/AllTests.java</include>
240+
<include>**/org/rascalmpl/test/repl/*Test.java</include>
239241
<include>**/org/rascalmpl/*Test.java</include>
240242
</includes>
241243
</configuration>
@@ -332,19 +334,6 @@
332334
<addHeader>false</addHeader>
333335
</transformer>
334336
</transformers>
335-
<relocations>
336-
<relocation>
337-
<pattern>org.fusesource.jansi</pattern>
338-
<shadedPattern>org.rascalmpl.fusesource.jansi</shadedPattern>
339-
<excludes>
340-
<exclude>org.fusesource.jansi.internal.*</exclude>
341-
</excludes>
342-
</relocation>
343-
<relocation>
344-
<pattern>jline</pattern>
345-
<shadedPattern>org.rascalmpl.jline</shadedPattern>
346-
</relocation>
347-
</relocations>
348337
<filters>
349338
<filter>
350339
<artifact>*:*</artifact>
@@ -472,10 +461,35 @@
472461
<artifactId>gson</artifactId>
473462
<version>2.11.0</version>
474463
</dependency>
475-
<dependency>
476-
<groupId>jline</groupId>
477-
<artifactId>jline</artifactId>
478-
<version>2.14.6</version>
464+
<dependency> <!-- line reader/completion/history support -->
465+
<groupId>org.jline</groupId>
466+
<artifactId>jline-reader</artifactId>
467+
<version>${jline.version}</version>
468+
</dependency>
469+
<dependency> <!-- terminal API -->
470+
<groupId>org.jline</groupId>
471+
<artifactId>jline-terminal</artifactId>
472+
<version>${jline.version}</version>
473+
</dependency>
474+
<dependency> <!-- interaction with native APIs for console features, after jdk22 we can switch to FFM -->
475+
<groupId>org.jline</groupId>
476+
<artifactId>jline-terminal-jni</artifactId>
477+
<version>${jline.version}</version>
478+
</dependency>
479+
<dependency> <!-- styling api -->
480+
<groupId>org.jline</groupId>
481+
<artifactId>jline-style</artifactId>
482+
<version>${jline.version}</version>
483+
</dependency>
484+
<dependency> <!-- command registyr and extra features -->
485+
<groupId>org.jline</groupId>
486+
<artifactId>jline-console</artifactId>
487+
<version>${jline.version}</version>
488+
</dependency>
489+
<dependency> <!-- raw ansi commands -->
490+
<groupId>org.jline</groupId>
491+
<artifactId>jansi-core</artifactId>
492+
<version>${jline.version}</version>
479493
</dependency>
480494
<dependency>
481495
<groupId>org.yaml</groupId>
@@ -564,44 +578,7 @@
564578
<goal>shade</goal>
565579
</goals>
566580
<configuration>
567-
<transformers>
568-
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
569-
<manifestEntries>
570-
<Name>rascal</Name>
571-
<Main-Class>org.rascalmpl.shell.RascalShell</Main-Class>
572-
<Specification-Version>${project.version}</Specification-Version>
573-
<Specification-Vendor>http://www.usethesource.io</Specification-Vendor>
574-
</manifestEntries>
575-
</transformer>
576-
</transformers>
577-
<relocations>
578-
<relocation>
579-
<pattern>org.fusesource.jansi</pattern>
580-
<shadedPattern>org.rascalmpl.fusesource.jansi</shadedPattern>
581-
<excludes>
582-
<exclude>org.fusesource.jansi.internal.*</exclude>
583-
</excludes>
584-
</relocation>
585-
<relocation>
586-
<pattern>jline</pattern>
587-
<shadedPattern>org.rascalmpl.jline</shadedPattern>
588-
</relocation>
589-
</relocations>
590-
<filters>
591-
<filter>
592-
<artifact>*:*</artifact>
593-
<excludes>
594-
<exclude>META-INF/*.SF</exclude>
595-
<exclude>META-INF/*.DSA</exclude>
596-
<exclude>META-INF/*.RSA</exclude>
597-
</excludes>
598-
</filter>
599-
</filters>
600-
<artifactSet>
601-
<includes>
602-
<include>jline:*</include>
603-
</includes>
604-
</artifactSet>
581+
<skip>true</skip>
605582
</configuration>
606583
</execution>
607584
</executions>

src/org/rascalmpl/checker/StaticChecker.java

Lines changed: 0 additions & 125 deletions
This file was deleted.

src/org/rascalmpl/debug/IRascalMonitor.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,18 @@
1212
*******************************************************************************/
1313
package org.rascalmpl.debug;
1414

15-
import java.io.InputStream;
16-
import java.io.OutputStream;
17-
import java.io.PrintStream;
1815
import java.util.function.BiConsumer;
1916
import java.util.function.BiFunction;
2017
import java.util.function.Function;
2118
import java.util.function.Supplier;
2219

20+
21+
import org.jline.terminal.Terminal;
2322
import org.rascalmpl.interpreter.BatchProgressMonitor;
2423
import org.rascalmpl.interpreter.NullRascalMonitor;
2524
import org.rascalmpl.repl.TerminalProgressBarMonitor;
2625

2726
import io.usethesource.vallang.ISourceLocation;
28-
import jline.Terminal;
29-
import jline.TerminalFactory;
3027

3128
public interface IRascalMonitor {
3229
/**
@@ -158,8 +155,8 @@ default void jobStep(String name, String message) {
158155
* and otherwise default to a dumn terminal console progress logger.
159156
* @return
160157
*/
161-
public static IRascalMonitor buildConsoleMonitor(InputStream in, OutputStream out) {
162-
return buildConsoleMonitor(in, out, inBatchMode());
158+
public static IRascalMonitor buildConsoleMonitor(Terminal term) {
159+
return buildConsoleMonitor(term, inBatchMode());
163160
}
164161

165162
public static boolean inBatchMode() {
@@ -168,12 +165,11 @@ public static boolean inBatchMode() {
168165
;
169166
}
170167

171-
public static IRascalMonitor buildConsoleMonitor(InputStream in, OutputStream out, boolean batchMode) {
172-
Terminal terminal = TerminalFactory.get();
168+
public static IRascalMonitor buildConsoleMonitor(Terminal terminal, boolean batchMode) {
173169

174-
return !batchMode && terminal.isAnsiSupported()
175-
? new TerminalProgressBarMonitor(out, in, terminal)
176-
: new BatchProgressMonitor(new PrintStream(out))
170+
return !batchMode && TerminalProgressBarMonitor.shouldWorkIn(terminal)
171+
? new TerminalProgressBarMonitor(terminal)
172+
: new BatchProgressMonitor(terminal.writer())
177173
;
178174
}
179175

src/org/rascalmpl/ideservices/BasicIDEServices.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.nio.file.Path;
2121
import java.nio.file.Paths;
2222

23+
import org.jline.terminal.Terminal;
2324
import org.rascalmpl.debug.IRascalMonitor;
2425
import org.rascalmpl.uri.URIResolverRegistry;
2526
import org.rascalmpl.uri.URIUtil;
@@ -34,16 +35,24 @@
3435
public class BasicIDEServices implements IDEServices {
3536
private final IRascalMonitor monitor;
3637
private final PrintWriter stderr;
38+
private final Terminal terminal;
3739

38-
public BasicIDEServices(PrintWriter stderr, IRascalMonitor monitor){
40+
public BasicIDEServices(PrintWriter stderr, IRascalMonitor monitor, Terminal terminal){
3941
this.stderr = stderr;
4042
this.monitor = monitor;
43+
this.terminal = terminal;
4144
}
4245

4346
@Override
4447
public PrintWriter stderr() {
4548
return stderr;
4649
}
50+
51+
@Override
52+
public Terminal activeTerminal() {
53+
return terminal;
54+
}
55+
4756

4857
public void browse(ISourceLocation loc, String title, int viewColumn){
4958
browse(loc.getURI(), title, viewColumn);

src/org/rascalmpl/ideservices/IDEServices.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.io.PrintWriter;
1616
import java.net.URI;
1717

18+
import org.jline.terminal.Terminal;
1819
import org.rascalmpl.debug.IRascalMonitor;
1920
import org.rascalmpl.uri.LogicalMapResolver;
2021
import org.rascalmpl.uri.URIResolverRegistry;
@@ -73,6 +74,16 @@ default void unregisterLanguage(IConstructor language) {
7374
throw new UnsupportedOperationException("registerLanguage is not implemented in this environment.");
7475
}
7576

77+
/**
78+
* Get access to the current terminal. <br>
79+
* used for features such as clearing the terminal, and starting a nested REPL. <br>
80+
* Can return null if there is no active terminal.
81+
* @return a terminal if there is one, null otherwise.
82+
*/
83+
default Terminal activeTerminal() {
84+
return null;
85+
}
86+
7687
/**
7788
* Asks the IDE to apply document edits as defined in the standard library module
7889
* analysis::diff::edits::TextEdits, according to the semantics defined in

0 commit comments

Comments
 (0)