mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-28 14:03:35 +00:00
WIP: Add lsp-ext scaffold
This commit is contained in:
parent
16cba19ff3
commit
1201b156d8
4 changed files with 40 additions and 1 deletions
|
@ -27,6 +27,21 @@ pub struct AnalyzerStatusParams {
|
||||||
pub text_document: Option<TextDocumentIdentifier>,
|
pub text_document: Option<TextDocumentIdentifier>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum FetchDependencyGraph {}
|
||||||
|
|
||||||
|
impl Request for FetchDependencyGraph {
|
||||||
|
type Params = FetchDependencyGraphParams;
|
||||||
|
type Result = FetchDependencyGraphResult;
|
||||||
|
const METHOD: &'static str = "rust-analyzer/fetchDependencyGraph";
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct FetchDependencyGraphParams {}
|
||||||
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct FetchDependencyGraphResult {}
|
||||||
|
|
||||||
pub enum MemoryUsage {}
|
pub enum MemoryUsage {}
|
||||||
|
|
||||||
impl Request for MemoryUsage {
|
impl Request for MemoryUsage {
|
||||||
|
|
|
@ -655,6 +655,7 @@ impl GlobalState {
|
||||||
.on_sync_mut::<lsp_ext::ReloadWorkspace>(handlers::handle_workspace_reload)
|
.on_sync_mut::<lsp_ext::ReloadWorkspace>(handlers::handle_workspace_reload)
|
||||||
.on_sync_mut::<lsp_ext::RebuildProcMacros>(handlers::handle_proc_macros_rebuild)
|
.on_sync_mut::<lsp_ext::RebuildProcMacros>(handlers::handle_proc_macros_rebuild)
|
||||||
.on_sync_mut::<lsp_ext::MemoryUsage>(handlers::handle_memory_usage)
|
.on_sync_mut::<lsp_ext::MemoryUsage>(handlers::handle_memory_usage)
|
||||||
|
.on_sync_mut::<lsp_ext::FetchDependencyGraph>(handlers::fetch_dependency_graph)
|
||||||
.on_sync_mut::<lsp_ext::ShuffleCrateGraph>(handlers::handle_shuffle_crate_graph)
|
.on_sync_mut::<lsp_ext::ShuffleCrateGraph>(handlers::handle_shuffle_crate_graph)
|
||||||
.on_sync::<lsp_ext::JoinLines>(handlers::handle_join_lines)
|
.on_sync::<lsp_ext::JoinLines>(handlers::handle_join_lines)
|
||||||
.on_sync::<lsp_ext::OnEnter>(handlers::handle_on_enter)
|
.on_sync::<lsp_ext::OnEnter>(handlers::handle_on_enter)
|
||||||
|
|
|
@ -3,6 +3,9 @@ import * as fspath from "path";
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as os from "os";
|
import * as os from "os";
|
||||||
import { activeToolchain, Cargo, Crate, getRustcVersion } from "./toolchain";
|
import { activeToolchain, Cargo, Crate, getRustcVersion } from "./toolchain";
|
||||||
|
import { Ctx } from "./ctx";
|
||||||
|
import { setFlagsFromString } from "v8";
|
||||||
|
import * as ra from "./lsp_ext";
|
||||||
|
|
||||||
const debugOutput = vscode.window.createOutputChannel("Debug");
|
const debugOutput = vscode.window.createOutputChannel("Debug");
|
||||||
|
|
||||||
|
@ -11,10 +14,12 @@ export class RustDependenciesProvider
|
||||||
{
|
{
|
||||||
cargo: Cargo;
|
cargo: Cargo;
|
||||||
dependenciesMap: { [id: string]: Dependency | DependencyFile };
|
dependenciesMap: { [id: string]: Dependency | DependencyFile };
|
||||||
|
ctx: Ctx;
|
||||||
|
|
||||||
constructor(private readonly workspaceRoot: string) {
|
constructor(private readonly workspaceRoot: string, ctx: Ctx) {
|
||||||
this.cargo = new Cargo(this.workspaceRoot || ".", debugOutput);
|
this.cargo = new Cargo(this.workspaceRoot || ".", debugOutput);
|
||||||
this.dependenciesMap = {};
|
this.dependenciesMap = {};
|
||||||
|
this.ctx = ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _onDidChangeTreeData: vscode.EventEmitter<
|
private _onDidChangeTreeData: vscode.EventEmitter<
|
||||||
|
@ -76,6 +81,8 @@ export class RustDependenciesProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getRootDependencies(): Promise<Dependency[]> {
|
private async getRootDependencies(): Promise<Dependency[]> {
|
||||||
|
const crates = await this.ctx.client.sendRequest(ra.fetchDependencyGraph, {});
|
||||||
|
|
||||||
const registryDir = fspath.join(os.homedir(), ".cargo", "registry", "src");
|
const registryDir = fspath.join(os.homedir(), ".cargo", "registry", "src");
|
||||||
const basePath = fspath.join(registryDir, fs.readdirSync(registryDir)[0]);
|
const basePath = fspath.join(registryDir, fs.readdirSync(registryDir)[0]);
|
||||||
const deps = await this.getDepsInCartoTree(basePath);
|
const deps = await this.getDepsInCartoTree(basePath);
|
||||||
|
|
|
@ -70,6 +70,22 @@ export const viewItemTree = new lc.RequestType<ViewItemTreeParams, string, void>
|
||||||
|
|
||||||
export type AnalyzerStatusParams = { textDocument?: lc.TextDocumentIdentifier };
|
export type AnalyzerStatusParams = { textDocument?: lc.TextDocumentIdentifier };
|
||||||
|
|
||||||
|
export interface FetchDependencyGraphParams {}
|
||||||
|
|
||||||
|
export interface FetchDependencyGraphResult {
|
||||||
|
crates: {
|
||||||
|
name: string;
|
||||||
|
version: string;
|
||||||
|
path: string;
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export const fetchDependencyGraph = new lc.RequestType<
|
||||||
|
FetchDependencyGraphParams,
|
||||||
|
FetchDependencyGraphResult,
|
||||||
|
void
|
||||||
|
>("rust-analyzer/fetchDependencyGraph");
|
||||||
|
|
||||||
export type ExpandMacroParams = {
|
export type ExpandMacroParams = {
|
||||||
textDocument: lc.TextDocumentIdentifier;
|
textDocument: lc.TextDocumentIdentifier;
|
||||||
position: lc.Position;
|
position: lc.Position;
|
||||||
|
|
Loading…
Reference in a new issue