mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
running prettier
This commit is contained in:
parent
440889edec
commit
061940dad9
4 changed files with 86 additions and 91 deletions
|
@ -3,8 +3,8 @@ import * as lc from "vscode-languageclient/node";
|
||||||
import * as ra from "./lsp_ext";
|
import * as ra from "./lsp_ext";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
import {Config, prepareVSCodeConfig} from "./config";
|
import { Config, prepareVSCodeConfig } from "./config";
|
||||||
import {createClient} from "./client";
|
import { createClient } from "./client";
|
||||||
import {
|
import {
|
||||||
executeDiscoverProject,
|
executeDiscoverProject,
|
||||||
isRustDocument,
|
isRustDocument,
|
||||||
|
@ -13,7 +13,7 @@ import {
|
||||||
log,
|
log,
|
||||||
RustEditor,
|
RustEditor,
|
||||||
} from "./util";
|
} from "./util";
|
||||||
import {ServerStatusParams} from "./lsp_ext";
|
import { ServerStatusParams } from "./lsp_ext";
|
||||||
import {
|
import {
|
||||||
Dependency,
|
Dependency,
|
||||||
DependencyFile,
|
DependencyFile,
|
||||||
|
@ -27,10 +27,10 @@ import {
|
||||||
RustDependenciesProvider,
|
RustDependenciesProvider,
|
||||||
DependencyId,
|
DependencyId,
|
||||||
} from "./dependencies_provider";
|
} from "./dependencies_provider";
|
||||||
import {execRevealDependency} from "./commands";
|
import { execRevealDependency } from "./commands";
|
||||||
import {PersistentState} from "./persistent_state";
|
import { PersistentState } from "./persistent_state";
|
||||||
import {bootstrap} from "./bootstrap";
|
import { bootstrap } from "./bootstrap";
|
||||||
import {ExecOptions} from "child_process";
|
import { ExecOptions } from "child_process";
|
||||||
|
|
||||||
// We only support local folders, not eg. Live Share (`vlsl:` scheme), so don't activate if
|
// We only support local folders, not eg. Live Share (`vlsl:` scheme), so don't activate if
|
||||||
// only those are in use. We use "Empty" to represent these scenarios
|
// only those are in use. We use "Empty" to represent these scenarios
|
||||||
|
@ -39,12 +39,12 @@ import {ExecOptions} from "child_process";
|
||||||
export type Workspace =
|
export type Workspace =
|
||||||
| { kind: "Empty" }
|
| { kind: "Empty" }
|
||||||
| {
|
| {
|
||||||
kind: "Workspace Folder";
|
kind: "Workspace Folder";
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
kind: "Detached Files";
|
kind: "Detached Files";
|
||||||
files: vscode.TextDocument[];
|
files: vscode.TextDocument[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export function fetchWorkspace(): Workspace {
|
export function fetchWorkspace(): Workspace {
|
||||||
const folders = (vscode.workspace.workspaceFolders || []).filter(
|
const folders = (vscode.workspace.workspaceFolders || []).filter(
|
||||||
|
@ -56,12 +56,12 @@ export function fetchWorkspace(): Workspace {
|
||||||
|
|
||||||
return folders.length === 0
|
return folders.length === 0
|
||||||
? rustDocuments.length === 0
|
? rustDocuments.length === 0
|
||||||
? {kind: "Empty"}
|
? { kind: "Empty" }
|
||||||
: {
|
: {
|
||||||
kind: "Detached Files",
|
kind: "Detached Files",
|
||||||
files: rustDocuments,
|
files: rustDocuments,
|
||||||
}
|
}
|
||||||
: {kind: "Workspace Folder"};
|
: { kind: "Workspace Folder" };
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function discoverWorkspace(
|
export async function discoverWorkspace(
|
||||||
|
@ -116,7 +116,7 @@ export class Ctx {
|
||||||
constructor(
|
constructor(
|
||||||
readonly extCtx: vscode.ExtensionContext,
|
readonly extCtx: vscode.ExtensionContext,
|
||||||
commandFactories: Record<string, CommandFactory>,
|
commandFactories: Record<string, CommandFactory>,
|
||||||
workspace: Workspace,
|
workspace: Workspace
|
||||||
) {
|
) {
|
||||||
extCtx.subscriptions.push(this);
|
extCtx.subscriptions.push(this);
|
||||||
this.statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
this.statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
||||||
|
@ -128,8 +128,7 @@ export class Ctx {
|
||||||
this.state = new PersistentState(extCtx.globalState);
|
this.state = new PersistentState(extCtx.globalState);
|
||||||
this.config = new Config(extCtx);
|
this.config = new Config(extCtx);
|
||||||
|
|
||||||
this.updateCommands("disable"
|
this.updateCommands("disable");
|
||||||
);
|
|
||||||
this.setServerStatus({
|
this.setServerStatus({
|
||||||
health: "stopped",
|
health: "stopped",
|
||||||
});
|
});
|
||||||
|
@ -198,7 +197,7 @@ export class Ctx {
|
||||||
const newEnv = Object.assign({}, process.env, this.config.serverExtraEnv);
|
const newEnv = Object.assign({}, process.env, this.config.serverExtraEnv);
|
||||||
const run: lc.Executable = {
|
const run: lc.Executable = {
|
||||||
command: this._serverPath,
|
command: this._serverPath,
|
||||||
options: {env: newEnv},
|
options: { env: newEnv },
|
||||||
};
|
};
|
||||||
const serverOptions = {
|
const serverOptions = {
|
||||||
run,
|
run,
|
||||||
|
@ -276,7 +275,7 @@ export class Ctx {
|
||||||
private prepareTreeDependenciesView(client: lc.LanguageClient) {
|
private prepareTreeDependenciesView(client: lc.LanguageClient) {
|
||||||
const ctxInit: CtxInit = {
|
const ctxInit: CtxInit = {
|
||||||
...this,
|
...this,
|
||||||
client: client
|
client: client,
|
||||||
};
|
};
|
||||||
const rootPath = vscode.workspace.workspaceFolders![0].uri.fsPath;
|
const rootPath = vscode.workspace.workspaceFolders![0].uri.fsPath;
|
||||||
this._dependencies = new RustDependenciesProvider(rootPath, ctxInit);
|
this._dependencies = new RustDependenciesProvider(rootPath, ctxInit);
|
||||||
|
|
|
@ -13,8 +13,8 @@ import * as ra from "./lsp_ext";
|
||||||
export class RustDependenciesProvider
|
export class RustDependenciesProvider
|
||||||
implements vscode.TreeDataProvider<Dependency | DependencyFile>
|
implements vscode.TreeDataProvider<Dependency | DependencyFile>
|
||||||
{
|
{
|
||||||
|
dependenciesMap: { [id: string]: Dependency | DependencyFile };
|
||||||
dependenciesMap: { [id: string]: Dependency | DependencyFile };ctx: CtxInit;
|
ctx: CtxInit;
|
||||||
|
|
||||||
constructor(private readonly workspaceRoot: string,ctx: CtxInit) {
|
constructor(private readonly workspaceRoot: string,ctx: CtxInit) {
|
||||||
this.dependenciesMap = {};
|
this.dependenciesMap = {};
|
||||||
|
@ -82,7 +82,10 @@ export class RustDependenciesProvider
|
||||||
private async getRootDependencies(): Promise<Dependency[]> {
|
private async getRootDependencies(): Promise<Dependency[]> {
|
||||||
const crates = await this.ctx.client.sendRequest(ra.fetchDependencyGraph, {});
|
const crates = await this.ctx.client.sendRequest(ra.fetchDependencyGraph, {});
|
||||||
|
|
||||||
const dependenciesResult: FetchDependencyGraphResult = await this.ctx.client.sendRequest(ra.fetchDependencyGraph, {});
|
const dependenciesResult: FetchDependencyGraphResult = await this.ctx.client.sendRequest(
|
||||||
|
ra.fetchDependencyGraph,
|
||||||
|
{}
|
||||||
|
);
|
||||||
const crates = dependenciesResult.crates;
|
const crates = dependenciesResult.crates;
|
||||||
const deps = crates.map((crate) => {
|
const deps = crates.map((crate) => {
|
||||||
const dep = this.toDep(crate.name, crate.version, crate.path);
|
const dep = this.toDep(crate.name, crate.version, crate.path);
|
||||||
|
@ -93,15 +96,10 @@ export class RustDependenciesProvider
|
||||||
return deps;
|
return deps;
|
||||||
}
|
}
|
||||||
|
|
||||||
private toDep(moduleName: string, version: string, path: string): Dependency {
|
private toDep(moduleName: string, version: string, path: string): Dependency {
|
||||||
//const cratePath = fspath.join(basePath, `${moduleName}-${version}`);
|
// const cratePath = fspath.join(basePath, `${moduleName}-${version}`);
|
||||||
return new Dependency(
|
return new Dependency(moduleName, version, path, vscode.TreeItemCollapsibleState.Collapsed);
|
||||||
moduleName,
|
}
|
||||||
version,
|
|
||||||
path,
|
|
||||||
vscode.TreeItemCollapsibleState.Collapsed
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Dependency extends vscode.TreeItem {
|
export class Dependency extends vscode.TreeItem {
|
||||||
|
|
|
@ -2,10 +2,10 @@ import * as vscode from "vscode";
|
||||||
import * as lc from "vscode-languageclient/node";
|
import * as lc from "vscode-languageclient/node";
|
||||||
|
|
||||||
import * as commands from "./commands";
|
import * as commands from "./commands";
|
||||||
import {CommandFactory, Ctx, fetchWorkspace} from "./ctx";
|
import { CommandFactory, Ctx, fetchWorkspace } from "./ctx";
|
||||||
import * as diagnostics from "./diagnostics";
|
import * as diagnostics from "./diagnostics";
|
||||||
import {activateTaskProvider} from "./tasks";
|
import { activateTaskProvider } from "./tasks";
|
||||||
import {setContextValue} from "./util";
|
import { setContextValue } from "./util";
|
||||||
|
|
||||||
const RUST_PROJECT_CONTEXT_NAME = "inRustProject";
|
const RUST_PROJECT_CONTEXT_NAME = "inRustProject";
|
||||||
|
|
||||||
|
@ -24,12 +24,11 @@ export async function activate(
|
||||||
vscode.window
|
vscode.window
|
||||||
.showWarningMessage(
|
.showWarningMessage(
|
||||||
`You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
|
`You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
|
||||||
"plugins enabled. These are known to conflict and cause various functions of " +
|
"plugins enabled. These are known to conflict and cause various functions of " +
|
||||||
"both plugins to not work correctly. You should disable one of them.",
|
"both plugins to not work correctly. You should disable one of them.",
|
||||||
"Got it"
|
"Got it"
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {}, console.error);
|
||||||
}, console.error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ctx = new Ctx(context, createCommands(), fetchWorkspace());
|
const ctx = new Ctx(context, createCommands(), fetchWorkspace());
|
||||||
|
@ -119,7 +118,7 @@ function createCommands(): Record<string, CommandFactory> {
|
||||||
return {
|
return {
|
||||||
onEnter: {
|
onEnter: {
|
||||||
enabled: commands.onEnter,
|
enabled: commands.onEnter,
|
||||||
disabled: (_) => () => vscode.commands.executeCommand("default:type", {text: "\n"}),
|
disabled: (_) => () => vscode.commands.executeCommand("default:type", { text: "\n" }),
|
||||||
},
|
},
|
||||||
restartServer: {
|
restartServer: {
|
||||||
enabled: (ctx) => async () => {
|
enabled: (ctx) => async () => {
|
||||||
|
@ -145,53 +144,52 @@ function createCommands(): Record<string, CommandFactory> {
|
||||||
health: "stopped",
|
health: "stopped",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
disabled: (_) => async () => {
|
disabled: (_) => async () => {},
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
analyzerStatus: {enabled: commands.analyzerStatus},
|
analyzerStatus: { enabled: commands.analyzerStatus },
|
||||||
memoryUsage: {enabled: commands.memoryUsage},
|
memoryUsage: { enabled: commands.memoryUsage },
|
||||||
shuffleCrateGraph: {enabled: commands.shuffleCrateGraph},
|
shuffleCrateGraph: { enabled: commands.shuffleCrateGraph },
|
||||||
reloadWorkspace: {enabled: commands.reloadWorkspace},
|
reloadWorkspace: { enabled: commands.reloadWorkspace },
|
||||||
rebuildProcMacros: {enabled: commands.rebuildProcMacros},
|
rebuildProcMacros: { enabled: commands.rebuildProcMacros },
|
||||||
addProject: {enabled: commands.addProject},
|
addProject: { enabled: commands.addProject },
|
||||||
matchingBrace: {enabled: commands.matchingBrace},
|
matchingBrace: { enabled: commands.matchingBrace },
|
||||||
joinLines: {enabled: commands.joinLines},
|
joinLines: { enabled: commands.joinLines },
|
||||||
parentModule: {enabled: commands.parentModule},
|
parentModule: { enabled: commands.parentModule },
|
||||||
syntaxTree: {enabled: commands.syntaxTree},
|
syntaxTree: { enabled: commands.syntaxTree },
|
||||||
viewHir: {enabled: commands.viewHir},
|
viewHir: { enabled: commands.viewHir },
|
||||||
viewMir: {enabled: commands.viewMir},
|
viewMir: { enabled: commands.viewMir },
|
||||||
interpretFunction: { enabled: commands.interpretFunction },
|
interpretFunction: { enabled: commands.interpretFunction },
|
||||||
viewFileText: {enabled: commands.viewFileText},
|
viewFileText: { enabled: commands.viewFileText },
|
||||||
viewItemTree: {enabled: commands.viewItemTree},
|
viewItemTree: { enabled: commands.viewItemTree },
|
||||||
viewCrateGraph: {enabled: commands.viewCrateGraph},
|
viewCrateGraph: { enabled: commands.viewCrateGraph },
|
||||||
viewFullCrateGraph: {enabled: commands.viewFullCrateGraph},
|
viewFullCrateGraph: { enabled: commands.viewFullCrateGraph },
|
||||||
expandMacro: {enabled: commands.expandMacro},
|
expandMacro: { enabled: commands.expandMacro },
|
||||||
run: {enabled: commands.run},
|
run: { enabled: commands.run },
|
||||||
copyRunCommandLine: {enabled: commands.copyRunCommandLine},
|
copyRunCommandLine: { enabled: commands.copyRunCommandLine },
|
||||||
debug: {enabled: commands.debug},
|
debug: { enabled: commands.debug },
|
||||||
newDebugConfig: {enabled: commands.newDebugConfig},
|
newDebugConfig: { enabled: commands.newDebugConfig },
|
||||||
openDocs: {enabled: commands.openDocs},
|
openDocs: { enabled: commands.openDocs },
|
||||||
openCargoToml: {enabled: commands.openCargoToml},
|
openCargoToml: { enabled: commands.openCargoToml },
|
||||||
peekTests: {enabled: commands.peekTests},
|
peekTests: { enabled: commands.peekTests },
|
||||||
moveItemUp: {enabled: commands.moveItemUp},
|
moveItemUp: { enabled: commands.moveItemUp },
|
||||||
moveItemDown: {enabled: commands.moveItemDown},
|
moveItemDown: { enabled: commands.moveItemDown },
|
||||||
cancelFlycheck: {enabled: commands.cancelFlycheck},
|
cancelFlycheck: { enabled: commands.cancelFlycheck },
|
||||||
clearFlycheck: {enabled: commands.clearFlycheck},
|
clearFlycheck: { enabled: commands.clearFlycheck },
|
||||||
runFlycheck: {enabled: commands.runFlycheck},
|
runFlycheck: { enabled: commands.runFlycheck },
|
||||||
ssr: {enabled: commands.ssr},
|
ssr: { enabled: commands.ssr },
|
||||||
serverVersion: {enabled: commands.serverVersion},
|
serverVersion: { enabled: commands.serverVersion },
|
||||||
// Internal commands which are invoked by the server.
|
// Internal commands which are invoked by the server.
|
||||||
applyActionGroup: {enabled: commands.applyActionGroup},
|
applyActionGroup: { enabled: commands.applyActionGroup },
|
||||||
applySnippetWorkspaceEdit: {enabled: commands.applySnippetWorkspaceEditCommand},
|
applySnippetWorkspaceEdit: { enabled: commands.applySnippetWorkspaceEditCommand },
|
||||||
debugSingle: {enabled: commands.debugSingle},
|
debugSingle: { enabled: commands.debugSingle },
|
||||||
gotoLocation: {enabled: commands.gotoLocation},
|
gotoLocation: { enabled: commands.gotoLocation },
|
||||||
linkToCommand: {enabled: commands.linkToCommand},
|
linkToCommand: { enabled: commands.linkToCommand },
|
||||||
resolveCodeAction: {enabled: commands.resolveCodeAction},
|
resolveCodeAction: { enabled: commands.resolveCodeAction },
|
||||||
runSingle: {enabled: commands.runSingle},
|
runSingle: { enabled: commands.runSingle },
|
||||||
showReferences: {enabled: commands.showReferences},
|
showReferences: { enabled: commands.showReferences },
|
||||||
triggerParameterHints: {enabled: commands.triggerParameterHints},
|
triggerParameterHints: { enabled: commands.triggerParameterHints },
|
||||||
openLogs: {enabled: commands.openLogs},
|
openLogs: { enabled: commands.openLogs },
|
||||||
revealDependency: {enabled: commands.revealDependency}
|
revealDependency: { enabled: commands.revealDependency },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import * as os from "os";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import * as readline from "readline";
|
import * as readline from "readline";
|
||||||
import * as vscode from "vscode";
|
import * as vscode from "vscode";
|
||||||
import {execute, log, memoizeAsync} from "./util";
|
import { execute, log, memoizeAsync } from "./util";
|
||||||
|
|
||||||
interface CompilationArtifact {
|
interface CompilationArtifact {
|
||||||
fileName: string;
|
fileName: string;
|
||||||
|
@ -42,7 +42,7 @@ export class Cargo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const result: ArtifactSpec = {cargoArgs: cargoArgs};
|
const result: ArtifactSpec = { cargoArgs: cargoArgs };
|
||||||
if (cargoArgs[0] === "test" || cargoArgs[0] === "bench") {
|
if (cargoArgs[0] === "test" || cargoArgs[0] === "bench") {
|
||||||
// for instance, `crates\rust-analyzer\tests\heavy_tests\main.rs` tests
|
// for instance, `crates\rust-analyzer\tests\heavy_tests\main.rs` tests
|
||||||
// produce 2 artifacts: {"kind": "bin"} and {"kind": "test"}
|
// produce 2 artifacts: {"kind": "bin"} and {"kind": "test"}
|
||||||
|
@ -147,7 +147,7 @@ export class Cargo {
|
||||||
|
|
||||||
cargo.stderr.on("data", (chunk) => onStderrString(chunk.toString()));
|
cargo.stderr.on("data", (chunk) => onStderrString(chunk.toString()));
|
||||||
|
|
||||||
const rl = readline.createInterface({input: cargo.stdout});
|
const rl = readline.createInterface({ input: cargo.stdout });
|
||||||
rl.on("line", (line) => {
|
rl.on("line", (line) => {
|
||||||
const message = JSON.parse(line);
|
const message = JSON.parse(line);
|
||||||
onStdoutJson(message);
|
onStdoutJson(message);
|
||||||
|
@ -189,14 +189,14 @@ export async function getSysroot(dir: string): Promise<string> {
|
||||||
const rustcPath = await getPathForExecutable("rustc");
|
const rustcPath = await getPathForExecutable("rustc");
|
||||||
|
|
||||||
// do not memoize the result because the toolchain may change between runs
|
// do not memoize the result because the toolchain may change between runs
|
||||||
return await execute(`${rustcPath} --print sysroot`, {cwd: dir});
|
return await execute(`${rustcPath} --print sysroot`, { cwd: dir });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getRustcId(dir: string): Promise<string> {
|
export async function getRustcId(dir: string): Promise<string> {
|
||||||
const rustcPath = await getPathForExecutable("rustc");
|
const rustcPath = await getPathForExecutable("rustc");
|
||||||
|
|
||||||
// do not memoize the result because the toolchain may change between runs
|
// do not memoize the result because the toolchain may change between runs
|
||||||
const data = await execute(`${rustcPath} -V -v`, {cwd: dir});
|
const data = await execute(`${rustcPath} -V -v`, { cwd: dir });
|
||||||
const rx = /commit-hash:\s(.*)$/m;
|
const rx = /commit-hash:\s(.*)$/m;
|
||||||
|
|
||||||
return rx.exec(data)![1];
|
return rx.exec(data)![1];
|
||||||
|
|
Loading…
Reference in a new issue