From c886011640df3a2e893ddf65a22d30862d0a50e3 Mon Sep 17 00:00:00 2001 From: Nicolas Hedger Date: Sat, 27 Jul 2024 11:33:53 +0200 Subject: [PATCH] wip --- src/extension.ts | 27 ++++++++++++++++++- src/state.ts | 2 +- src/ui/status-bar/status-bar.ts | 2 +- .../multi-root-workspace/bar/file.txt | 0 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/multi-root-workspace/bar/file.txt diff --git a/src/extension.ts b/src/extension.ts index 20f1e575..28ca1848 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,7 +10,7 @@ import { error, info } from "./logger"; import { type Project, createProjects } from "./project"; import { createSession } from "./session"; import { state } from "./state"; -import { config, hasUntitledDocuments } from "./utils"; +import { config, hasUntitledDocuments, supportedLanguages } from "./utils"; /** * Creates a new Biome extension @@ -48,10 +48,35 @@ export const createExtension = async ( return; } + window.onDidChangeActiveTextEditor((editor) => { + if (!editor) { + state.state = "disabled"; + return; + } + + if (!supportedLanguages.includes(editor.document.languageId)) { + state.state = "disabled"; + return; + } + + const project = [...state.sessions.keys()].find((project) => + editor.document.uri.fsPath.startsWith(project.path), + ); + + if (project) { + state.activeProject = project; + } + }); + state.state = "initializing"; // Start the extension await start(); + + // Set the active project, if any + state.activeProject = [...state.sessions.keys()].find((project) => + window.activeTextEditor?.document.uri.fsPath.startsWith(project.path), + ); }; /** diff --git a/src/state.ts b/src/state.ts index 0170e182..6538956f 100644 --- a/src/state.ts +++ b/src/state.ts @@ -1,4 +1,4 @@ -import { workspace } from "vscode"; +import { window, workspace } from "vscode"; import type { Project } from "./project"; import type { Session } from "./session"; import { updateStatusBar } from "./ui/status-bar/status-bar"; diff --git a/src/ui/status-bar/status-bar.ts b/src/ui/status-bar/status-bar.ts index 049ffaf1..bf47fec4 100644 --- a/src/ui/status-bar/status-bar.ts +++ b/src/ui/status-bar/status-bar.ts @@ -35,7 +35,7 @@ export const updateStatusBar = () => { const text = getStateText(); const tooltip = getStateTooltip(); - statusBar.item.text = `${icon} ${text}`.trim(); + statusBar.item.text = `${icon} ${text} ${state.activeProject?.path}`.trim(); statusBar.item.tooltip = tooltip; statusBar.item.show(); }; diff --git a/test/fixtures/multi-root-workspace/bar/file.txt b/test/fixtures/multi-root-workspace/bar/file.txt new file mode 100644 index 00000000..e69de29b