blob: 6bea2a98337bac3d3c96be05e1ca943f8d841362 [file] [log] [blame]
/* eslint-disable @typescript-eslint/no-explicit-any */
/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
* Modification copyright 2020 The Go Authors. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------*/
'use strict';
import vscode = require('vscode');
import { GoCodeActionProvider } from './legacy/goCodeAction';
import { GoDefinitionProvider } from './legacy/goDeclaration';
import { GoHoverProvider } from './legacy/goExtraInfo';
import { GoDocumentFormattingEditProvider } from './legacy/goFormat';
import { GoImplementationProvider } from './legacy/goImplementations';
import { parseLiveFile } from './legacy/goLiveErrors';
import { GO_MODE } from '../goMode';
import { GoLegacyDocumentSymbolProvider } from './legacy/goOutline';
import { GoReferenceProvider } from './legacy/goReferences';
import { GoRenameProvider } from './legacy/goRename';
import { GoSignatureHelpProvider } from './legacy/goSignature';
import { GoCompletionItemProvider } from './legacy/goSuggest';
import { GoWorkspaceSymbolProvider } from './legacy/goSymbol';
import { GoTypeDefinitionProvider } from './legacy/goTypeDefinition';
import { GoExtensionContext } from '../context';
export class LegacyLanguageService implements vscode.Disposable {
private _disposables: vscode.Disposable[] = [];
constructor(ctx: vscode.ExtensionContext, goCtx: GoExtensionContext) {
const completionProvider = new GoCompletionItemProvider(ctx.globalState);
this._disposables.push(completionProvider);
this._disposables.push(vscode.languages.registerCompletionItemProvider(GO_MODE, completionProvider, '.', '"'));
this._disposables.push(vscode.languages.registerHoverProvider(GO_MODE, new GoHoverProvider()));
this._disposables.push(vscode.languages.registerDefinitionProvider(GO_MODE, new GoDefinitionProvider()));
this._disposables.push(vscode.languages.registerReferenceProvider(GO_MODE, new GoReferenceProvider()));
this._disposables.push(
vscode.languages.registerDocumentSymbolProvider(GO_MODE, new GoLegacyDocumentSymbolProvider())
);
this._disposables.push(vscode.languages.registerWorkspaceSymbolProvider(new GoWorkspaceSymbolProvider()));
this._disposables.push(
vscode.languages.registerSignatureHelpProvider(GO_MODE, new GoSignatureHelpProvider(), '(', ',')
);
this._disposables.push(
vscode.languages.registerImplementationProvider(GO_MODE, new GoImplementationProvider())
);
this._disposables.push(
vscode.languages.registerDocumentFormattingEditProvider(GO_MODE, new GoDocumentFormattingEditProvider())
);
this._disposables.push(
vscode.languages.registerTypeDefinitionProvider(GO_MODE, new GoTypeDefinitionProvider())
);
this._disposables.push(vscode.languages.registerRenameProvider(GO_MODE, new GoRenameProvider()));
this._disposables.push(
vscode.workspace.onDidChangeTextDocument((e) => parseLiveFile(goCtx, e), null, ctx.subscriptions)
);
this._disposables.push(vscode.languages.registerCodeActionsProvider(GO_MODE, new GoCodeActionProvider()));
}
dispose() {
for (const d of this._disposables) {
d.dispose();
}
}
}