-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathProgram.cs
79 lines (73 loc) · 2.4 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System.Net;
using System.Net.Sockets;
using EmmyLua.LanguageServer.Framework.Handler;
using EmmyLua.LanguageServer.Framework.Protocol.Message.Configuration;
using EmmyLua.LanguageServer.Framework.Server;
Stream? input = null;
Stream? output = null;
if (args.Length > 0)
{
var port = int.Parse(args[0]);
var tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
EndPoint endPoint = new IPEndPoint(ipAddress, port);
tcpServer.Bind(endPoint);
tcpServer.Listen(1);
var languageClientSocket = tcpServer.Accept();
var networkStream = new NetworkStream(languageClientSocket);
input = networkStream;
output = networkStream;
}
else
{
input = Console.OpenStandardInput();
output = Console.OpenStandardOutput();
}
var ls = LanguageServer.From(input, output);
ls.OnInitialize((c, s) =>
{
s.Name = "EmmyLua.Test";
s.Version = "1.0.0";
Console.Error.WriteLine("initialize");
return Task.CompletedTask;
});
ls.OnInitialized(async (c) =>
{
Console.Error.WriteLine("initialized");
var r = await ls.Client.GetConfiguration(new ConfigurationParams()
{
Items =
[
new ConfigurationItem()
{
Section = "files"
}
]
}, CancellationToken.None);
Console.Error.WriteLine(r);
});
ls.AddHandler(new TextDocumentHandler(ls));
ls.AddHandler(new DeclarationHandler());
ls.AddHandler(new DefinitionHandler());
ls.AddHandler(new ImplementationHandler());
ls.AddHandler(new TypeDefinitionHandler());
ls.AddHandler(new CallHierarchyHandler());
ls.AddHandler(new CompletionHandler());
ls.AddHandler(new HoverHandler());
ls.AddHandler(new SignatureHelpHandler());
ls.AddHandler(new DocumentHighlightHandler());
ls.AddHandler(new DocumentSymbolHandler());
ls.AddHandler(new CodeActionHandler());
ls.AddHandler(new CodeLensHandler());
ls.AddHandler(new DocumentLinkHandler());
ls.AddHandler(new DocumentColorHandler());
ls.AddHandler(new DocumentFormattingHandler());
ls.AddHandler(new RenameHandler());
ls.AddHandler(new FoldingRangeHandler());
ls.AddHandler(new ExecuteCommandHandler(ls));
ls.AddHandler(new SelectionRangeHandler());
ls.AddHandler(new DidChangeWatchFilesHandler());
ls.AddHandler(new InlayHintHandler());
ls.AddHandler(new SemanticTokensHandler());
ls.AddHandler(new InlineValueHandler());
await ls.Run();