Skip to content

Commit a7c2eb9

Browse files
committed
Refactor dart:io out of language_server
Try to isolate non-web code to bin/
1 parent ae6b6b5 commit a7c2eb9

File tree

2 files changed

+375
-382
lines changed

2 files changed

+375
-382
lines changed

pkgs/sass_language_server/bin/sass_language_server.dart

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import 'dart:io';
2+
3+
import 'package:lsp_server/lsp_server.dart';
14
import 'package:sass_language_server/sass_language_server.dart';
25

36
void main(List<String> arguments) async {
@@ -35,9 +38,10 @@ Logging options:
3538
var fileSystemProvider = LocalFileSystem();
3639
var server = LanguageServer();
3740

41+
Connection connection;
42+
Socket? socket;
3843
if (transport == '--stdio') {
39-
await server.start(
40-
logLevel: logLevel, fileSystemProvider: fileSystemProvider);
44+
connection = Connection(stdin, stdout);
4145
} else {
4246
// The client is the one listening to socket connections on the specified port.
4347
// In other words the language server is a _client_ for the socket transport.
@@ -46,11 +50,31 @@ Logging options:
4650
// the language server.
4751
var split = transport.split('=');
4852
int port = int.parse(split.last);
53+
socket = await Socket.connect('127.0.0.1', port);
54+
connection = Connection(socket, socket);
55+
}
56+
57+
try {
58+
exitCode = 1;
4959

5060
await server.start(
51-
logLevel: logLevel,
52-
fileSystemProvider: fileSystemProvider,
53-
transport: Transport.socket,
54-
port: port);
61+
connection: connection,
62+
logLevel: logLevel,
63+
fileSystemProvider: fileSystemProvider,
64+
);
65+
66+
// See
67+
// https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#shutdown
68+
// https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#exit
69+
connection.onShutdown(() async {
70+
socket?.close();
71+
exitCode = 0;
72+
});
73+
74+
connection.onExit(() async {
75+
exit(exitCode);
76+
});
77+
} on Exception catch (_) {
78+
exit(1);
5579
}
5680
}

0 commit comments

Comments
 (0)