-
Notifications
You must be signed in to change notification settings - Fork 104
/
extension.ts
94 lines (85 loc) · 3.39 KB
/
extension.ts
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
// tslint:disable
"use strict";
import * as path from "path";
import { workspace, Disposable, ExtensionContext } from "vscode";
import {
LanguageClient,
LanguageClientOptions,
SettingMonitor,
ServerOptions,
TransportKind,
InitializeParams,
StreamInfo,
createServerPipeTransport,
Trace
} from "vscode-languageclient/node";
import { createConnection } from "net";
let client: LanguageClient;
export async function activate(context: ExtensionContext) {
// The server is implemented in node
let serverExe = "dotnet";
// let serverExe = "D:\\Development\\Omnisharp\\csharp-language-server-protocol\\sample\\SampleServer\\bin\\Debug\\netcoreapp2.0\\win7-x64\\SampleServer.exe";
// let serverExe = "D:/Development/Omnisharp/omnisharp-roslyn/artifacts/publish/OmniSharp.Stdio.Driver/win7-x64/OmniSharp.exe";
// The debug options for the server
// let debugOptions = { execArgv: ['-lsp', '-d' };5
// If the extension is launched in debug mode then the debug server options are used
// Otherwise the run options are used
let serverOptions: ServerOptions = {
// run: { command: serverExe, args: ['-lsp', '-d'] },
run: {
command: serverExe,
args: ["D:/Development/Omnisharp/csharp-language-server-protocol/sample/SampleServer/bin/Debug/net8.0/win-x64/SampleServer.dll"],
transport: TransportKind.pipe,
},
// debug: { command: serverExe, args: ['-lsp', '-d'] }
debug: {
command: serverExe,
args: ["D:/Development/Omnisharp/csharp-language-server-protocol/sample/SampleServer/bin/Debug/net8.0/win-x64/SampleServer.dll"],
transport: TransportKind.pipe,
runtime: "",
},
};
// let time = 100;
// let serverOptions = async () => {
// await new Promise((r) => setTimeout(r, time));
// time = 10000;
// const [reader, writer] = createServerPipeTransport("\\\\.\\pipe\\" + "samplepipe");
// return {
// reader,
// writer,
// };
// };
// Options to control the language client
let clientOptions: LanguageClientOptions = {
// Register the server for plain text documents
documentSelector: [
{
pattern: "**/*.cs",
},
{
pattern: "**/*.csx",
},
{
pattern: "**/*.cake",
},
],
progressOnInitialization: true,
synchronize: {
// Synchronize the setting section 'languageServerExample' to the server
configurationSection: "languageServerExample",
fileEvents: workspace.createFileSystemWatcher("**/*.cs"),
},
};
// Create the language client and start the client.
client = new LanguageClient("languageServerExample", "Language Server Example", serverOptions, clientOptions);
client.registerProposedFeatures();
client.setTrace(Trace.Verbose);
await client.start();
}
export function deactivate() {
return client.stop();
}