| /*--------------------------------------------------------- |
| * Copyright 2022 The Go Authors. All rights reserved. |
| * Licensed under the MIT License. See LICENSE in the project root for license information. |
| *--------------------------------------------------------*/ |
| |
| import * as vscode from 'vscode'; |
| import { LanguageClient } from 'vscode-languageclient/node'; |
| |
| import { LanguageServerConfig, Restart, ServerInfo } from './language/goLanguageServer'; |
| import { LegacyLanguageService } from './language/registerDefaultProviders'; |
| import { Mutex } from './utils/mutex'; |
| |
| // Global variables used for management of the language client. |
| // They are global so that the server can be easily restarted with |
| // new configurations. |
| export interface GoExtensionContext { |
| languageClient?: LanguageClient; |
| legacyLanguageService?: LegacyLanguageService; |
| languageServerDisposable?: vscode.Disposable; |
| latestConfig?: LanguageServerConfig; |
| serverOutputChannel?: vscode.OutputChannel; |
| languageServerIsRunning?: boolean; |
| // serverInfo is the information from the server received during initialization. |
| serverInfo?: ServerInfo; |
| // lastUserAction is the time of the last user-triggered change. |
| // A user-triggered change is a didOpen, didChange, didSave, or didClose event. |
| lastUserAction: Date; |
| serverTraceChannel?: vscode.OutputChannel; |
| crashCount: number; |
| // Some metrics for automated issue reports: |
| restartHistory: Restart[]; |
| languageServerStartMutex: Mutex; |
| } |