From 307417ec63fdcceb0d02cd036963e19270fa6224 Mon Sep 17 00:00:00 2001 From: zz <2418184580@qq.com> Date: Thu, 30 Jun 2022 11:09:56 +0800 Subject: [PATCH] fix(vscode): respect `unocss.root` (#1169) Co-authored-by: Anthony Fu --- packages/vscode/src/annotation.ts | 11 +++++++---- packages/vscode/src/autocomplete.ts | 10 +++++++--- packages/vscode/src/index.ts | 7 ++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/vscode/src/annotation.ts b/packages/vscode/src/annotation.ts index b9810ec942..36de5d57dc 100644 --- a/packages/vscode/src/annotation.ts +++ b/packages/vscode/src/annotation.ts @@ -3,7 +3,7 @@ import type { DecorationOptions, ExtensionContext, StatusBarItem } from 'vscode' import { DecorationRangeBehavior, MarkdownString, Range, window, workspace } from 'vscode' import { INCLUDE_COMMENT_IDE, getMatchedPositions } from './integration' import { log } from './log' -import { getColorsMap, getPrettiedMarkdown, isCssId, throttle } from './utils' +import { getColorsMap, getPrettiedMarkdown, isCssId, isSubdir, throttle } from './utils' import type { ContextLoader } from './contextLoader' export async function registerAnnotations( @@ -78,17 +78,20 @@ export async function registerAnnotations( if (!doc) return reset() - const code = doc.getText() const id = doc.uri.fsPath + if (!isSubdir(cwd, id)) + return reset() + const code = doc.getText() if (!code) return reset() let ctx = await contextLoader.resolveContext(code, id) if (!ctx) ctx = await contextLoader.resolveClosestContext(code, id) - else if (!ctx.filter(code, id) && !code.includes(INCLUDE_COMMENT_IDE) && !isCssId(id)) - return null + + if (!ctx.filter(code, id) && !code.includes(INCLUDE_COMMENT_IDE) && !isCssId(id)) + return reset() const result = await ctx.uno.generate(code, { id, preflights: false, minify: true }) diff --git a/packages/vscode/src/autocomplete.ts b/packages/vscode/src/autocomplete.ts index 8620b84829..0513174666 100644 --- a/packages/vscode/src/autocomplete.ts +++ b/packages/vscode/src/autocomplete.ts @@ -3,7 +3,7 @@ import { createAutocomplete } from '@unocss/autocomplete' import type { CompletionItemProvider, ExtensionContext } from 'vscode' import { CompletionItem, CompletionItemKind, CompletionList, MarkdownString, Range, languages } from 'vscode' import type { UnoGenerator, UnocssPluginContext } from '@unocss/core' -import { getPrettiedMarkdown, isCssId } from './utils' +import { getPrettiedMarkdown, isCssId, isSubdir } from './utils' import { log } from './log' import type { ContextLoader } from './contextLoader' @@ -36,6 +36,7 @@ class UnoCompletionItem extends CompletionItem { } export async function registerAutoComplete( + cwd: string, contextLoader: ContextLoader, ext: ExtensionContext, ) { @@ -64,16 +65,19 @@ export async function registerAutoComplete( const provider: CompletionItemProvider = { async provideCompletionItems(doc, position) { - const code = doc.getText() const id = doc.uri.fsPath + if (!isSubdir(cwd, id)) + return null + const code = doc.getText() if (!code) return null let ctx = await contextLoader.resolveContext(code, id) if (!ctx) ctx = await contextLoader.resolveClosestContext(code, id) - else if (!ctx.filter(code, id) && !isCssId(id)) + + if (!ctx.filter(code, id) && !isCssId(id)) return null try { diff --git a/packages/vscode/src/index.ts b/packages/vscode/src/index.ts index ef1f748946..7831181ec6 100644 --- a/packages/vscode/src/index.ts +++ b/packages/vscode/src/index.ts @@ -19,12 +19,17 @@ export async function activate(ext: ExtensionContext) { log.appendLine(`UnoCSS for VS Code v${version} ${process.cwd()}`) const contextLoader = new ContextLoader(cwd) + + const hasConfig = await contextLoader.loadContextInDirectory(cwd) + if (!hasConfig) + return + await contextLoader.ready const status = window.createStatusBarItem(StatusBarAlignment.Right, 200) status.text = 'UnoCSS' - registerAutoComplete(contextLoader, ext) + registerAutoComplete(cwd, contextLoader, ext) registerAnnotations(cwd, contextLoader, status, ext) ext.subscriptions.push(commands.registerCommand('unocss.reload', async () => {