Skip to content

Commit 6b68c3d

Browse files
committed
Split worksheet implementation
1 parent c8735b7 commit 6b68c3d

File tree

6 files changed

+265
-248
lines changed

6 files changed

+265
-248
lines changed

language-server/src/dotty/tools/languageserver/DottyLanguageServer.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import Interactive.Include
2929
import config.Printers.interactiv
3030

3131
import languageserver.config.ProjectConfig
32+
import languageserver.worksheet.Worksheet
3233

3334
import lsp4j.services._
3435

language-server/src/dotty/tools/languageserver/Worksheet.scala

Lines changed: 0 additions & 248 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package dotty.tools.languageserver.worksheet
2+
3+
import org.eclipse.lsp4j.jsonrpc.CancelChecker
4+
5+
import java.util.concurrent.CancellationException
6+
7+
/**
8+
* Regularly check whether execution has been cancelled, kill REPL if it is.
9+
*/
10+
private class CancellationThread(private[this] var cancelChecker: CancelChecker,
11+
evaluator: Evaluator) extends Thread {
12+
private final val checkCancelledDelayMs = 50
13+
14+
override def run(): Unit = {
15+
try {
16+
while (evaluator.isAlive() && !Thread.interrupted()) {
17+
cancelChecker.checkCanceled()
18+
Thread.sleep(checkCancelledDelayMs)
19+
}
20+
} catch {
21+
case _: CancellationException => evaluator.exit()
22+
case _: InterruptedException => evaluator.exit()
23+
}
24+
}
25+
26+
def setCancelChecker(cancelChecker: CancelChecker): Unit = {
27+
this.cancelChecker = cancelChecker
28+
}
29+
}

0 commit comments

Comments
 (0)