From 5885ca7094c72fb71c0b070b1f2e02f9b873dbad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=93=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Tue, 28 Jun 2022 22:08:57 +0300 Subject: [PATCH] Wip --- src/configurationTypeCache.jsonc | 2 +- src/extension.ts | 2 ++ src/virtualScript.ts | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/virtualScript.ts diff --git a/src/configurationTypeCache.jsonc b/src/configurationTypeCache.jsonc index 8284b7d..c0d691c 100644 --- a/src/configurationTypeCache.jsonc +++ b/src/configurationTypeCache.jsonc @@ -1,5 +1,5 @@ // GENERATED. DON'T EDIT MANUALLY -// md5hash: ac11f28b95e9e4355ca10a40f35a6142 +// md5hash: 5fdd9a2e7e35077176d7ba1d9042e98d { "type": "object", "properties": { diff --git a/src/extension.ts b/src/extension.ts index 3a7739c..5104209 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,6 +6,7 @@ import { registerGotoDefinition } from './gotoDefinition' import { registerHover } from './hover' // import { registerLinksProvider } from './links' import { registerTemplateCompletion } from './templateCompletion' +import virtualScript from './virtualScript' export const activate = () => { registerFindReferences() @@ -15,5 +16,6 @@ export const activate = () => { registerGenerateJsconfigAliases() registerComponentsLinks() registerPrintWebpackJsconfigAliases() + virtualScript() // registerLinksProvider() } diff --git a/src/virtualScript.ts b/src/virtualScript.ts new file mode 100644 index 0000000..87edd8d --- /dev/null +++ b/src/virtualScript.ts @@ -0,0 +1,31 @@ +import * as vscode from 'vscode' +import { getNormalizedVueOutline } from '@zardoy/vscode-utils/build/vue' + +export default () => { + vscode.languages.registerCodeActionsProvider('javascript', { + async provideCodeActions(document, range, context, token) { + // if (document.languageId === 'vue') + // const outline = await getNormalizedVueOutline(document.uri) + // const scriptRange = outline?.find(({ name }) => name === 'script')?.range + // if (!scriptRange) return + // const scriptContent = document.getText(scriptRange) + const scriptContent = document.getText() + // await vscode.commands.executeCommand('revealInExplorer', vscode.Uri.joinPath(getCurrentWorkspaceRoot().uri, 'src')); + const { dispose } = vscode.workspace.registerTextDocumentContentProvider('virtual-ts-script', { + async provideTextDocumentContent(uri) { + return scriptContent + }, + }) + const virtualDocument = await vscode.workspace.openTextDocument(vscode.Uri.parse('virtual-ts-script:dummy.ts')) + // await vscode.window.showTextDocument(virtualDocument) + await new Promise((resolve, reject) => { + setTimeout(resolve, 5000) + }) + const codeActions: vscode.CodeAction[] = await vscode.commands.executeCommand('vscode.executeCodeActionProvider', virtualDocument.uri, range) + console.log('codeActions', codeActions) + dispose() + return codeActions + }, + }) + // vscode.window.onDidChangeActiveTextEditor(() => ) +}