mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
fix: Add config and capability for test explorer
This commit is contained in:
parent
52d8ae791d
commit
1c6d1b4f2a
7 changed files with 41 additions and 12 deletions
|
@ -372,13 +372,18 @@ export async function createClient(
|
|||
);
|
||||
|
||||
// To turn on all proposed features use: client.registerProposedFeatures();
|
||||
client.registerFeature(new ExperimentalFeatures());
|
||||
client.registerFeature(new ExperimentalFeatures(config));
|
||||
client.registerFeature(new OverrideFeatures());
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
class ExperimentalFeatures implements lc.StaticFeature {
|
||||
private readonly testExplorer: boolean;
|
||||
|
||||
constructor(config: Config) {
|
||||
this.testExplorer = config.testExplorer || false;
|
||||
}
|
||||
getState(): lc.FeatureState {
|
||||
return { kind: "static" };
|
||||
}
|
||||
|
@ -391,6 +396,7 @@ class ExperimentalFeatures implements lc.StaticFeature {
|
|||
colorDiagnosticOutput: true,
|
||||
openServerLogs: true,
|
||||
localDocs: true,
|
||||
testExplorer: this.testExplorer,
|
||||
commands: {
|
||||
commands: [
|
||||
"rust-analyzer.runSingle",
|
||||
|
|
|
@ -266,6 +266,10 @@ export class Config {
|
|||
return this.get<string | undefined>("cargoRunner");
|
||||
}
|
||||
|
||||
get testExplorer() {
|
||||
return this.get<boolean | undefined>("testExplorer");
|
||||
}
|
||||
|
||||
get runnablesExtraEnv() {
|
||||
const item = this.get<any>("runnables.extraEnv") ?? this.get<any>("runnableEnv");
|
||||
if (!item) return item;
|
||||
|
|
|
@ -75,7 +75,7 @@ export class Ctx implements RustAnalyzerExtensionApi {
|
|||
private _client: lc.LanguageClient | undefined;
|
||||
private _serverPath: string | undefined;
|
||||
private traceOutputChannel: vscode.OutputChannel | undefined;
|
||||
private testController: vscode.TestController;
|
||||
private testController: vscode.TestController | undefined;
|
||||
private outputChannel: vscode.OutputChannel | undefined;
|
||||
private clientSubscriptions: Disposable[];
|
||||
private state: PersistentState;
|
||||
|
@ -104,18 +104,20 @@ export class Ctx implements RustAnalyzerExtensionApi {
|
|||
workspace: Workspace,
|
||||
) {
|
||||
extCtx.subscriptions.push(this);
|
||||
this.config = new Config(extCtx);
|
||||
this.statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
||||
this.testController = vscode.tests.createTestController(
|
||||
"rustAnalyzerTestController",
|
||||
"Rust Analyzer test controller",
|
||||
);
|
||||
if (this.config.testExplorer) {
|
||||
this.testController = vscode.tests.createTestController(
|
||||
"rustAnalyzerTestController",
|
||||
"Rust Analyzer test controller",
|
||||
);
|
||||
}
|
||||
this.workspace = workspace;
|
||||
this.clientSubscriptions = [];
|
||||
this.commandDisposables = [];
|
||||
this.commandFactories = commandFactories;
|
||||
this.unlinkedFiles = [];
|
||||
this.state = new PersistentState(extCtx.globalState);
|
||||
this.config = new Config(extCtx);
|
||||
|
||||
this.updateCommands("disable");
|
||||
this.setServerStatus({
|
||||
|
@ -126,7 +128,7 @@ export class Ctx implements RustAnalyzerExtensionApi {
|
|||
dispose() {
|
||||
this.config.dispose();
|
||||
this.statusBar.dispose();
|
||||
this.testController.dispose();
|
||||
this.testController?.dispose();
|
||||
void this.disposeClient();
|
||||
this.commandDisposables.forEach((disposable) => disposable.dispose());
|
||||
}
|
||||
|
@ -271,7 +273,9 @@ export class Ctx implements RustAnalyzerExtensionApi {
|
|||
await client.start();
|
||||
this.updateCommands();
|
||||
|
||||
prepareTestExplorer(this, this.testController, client);
|
||||
if (this.testController) {
|
||||
prepareTestExplorer(this, this.testController, client);
|
||||
}
|
||||
if (this.config.showDependenciesExplorer) {
|
||||
this.prepareTreeDependenciesView(client);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue