From 1a2a0350f915d9eb1224f94d702725ebf50c45c2 Mon Sep 17 00:00:00 2001 From: ijklam <43789618+Tangent-90@users.noreply.github.com> Date: Mon, 7 Oct 2024 22:40:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8=E6=9C=AA=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E6=96=87=E4=BB=B6/notebook=E5=86=85=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=B8=AD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/extension.ts | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 59f9766..e1a8714 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -16,6 +16,12 @@ import { 查询锁, 设置锁 } from './lib/模型/锁' // 程序运行中的上下文. var 上下文: 上下文 var 配置: ReturnType +var outputChannel: vscode.OutputChannel + +let log: (msg: string) => void = (msg: string) => { + if (!outputChannel) outputChannel = vscode.window.createOutputChannel('中文代码快速补全') + outputChannel.appendLine(`[${new Date().toLocaleString()}] ${msg}`) +} async function 完成项提供者(document: TextDocument, position: Position) { // 必要变量 @@ -23,6 +29,10 @@ async function 完成项提供者(document: TextDocument, position: Position) { var 输入字段 = await 获得当前输入字段() var { 模式, 分组 } = 计算字符串模式和分组(输入字段) + log( + `开始补全 ${document.fileName}, ${document.languageId}, ${position.line}:${position.character}, 输入字段: ${输入字段}, 模式: ${模式}, 分组: ${分组}`, + ) + // 这里获得的`输入字段`是当前这个词, 而不是输入的那个字符. // 例如, 在已有的字母`n`后面输入`i`, `输入字段`会是`ni`而不是`i`. // 如果输入是中文, 例如, 光标放到字符`n`后面, 然后在输入法中输入`nihao`的时候并不会触发补全, 当按空格把`你好`打上来的时候才会触发补全, 此时`输入字段`是`n你好`. @@ -209,7 +219,9 @@ async function 完成项提供者(document: TextDocument, position: Position) { export async function activate(context: vscode.ExtensionContext) { var packageObj = JSON.parse((await fs.promises.readFile(path.resolve(__dirname, '../package.json'))).toString()) var 插件版本 = packageObj.version - console.log('中文代码快速补全: 插件已启动, 版本: %s', 插件版本) + + if (!outputChannel) outputChannel = vscode.window.createOutputChannel('中文代码快速补全') + log('中文代码快速补全: 插件已启动, 版本: ' + 插件版本) // 初始化配置 上下文 = await 创建上下文() @@ -219,12 +231,17 @@ export async function activate(context: vscode.ExtensionContext) { vscode.workspace.onDidChangeConfiguration(async () => { 上下文 = await 创建上下文() 配置 = 查询配置(上下文.配置) - console.log('中文代码快速补全: 配置已刷新') + log('中文代码快速补全: 配置已刷新') }) context.subscriptions.push( vscode.languages.registerCompletionItemProvider( - { scheme: 'file', language: '*' }, + [ + { scheme: 'file', language: '*' }, + { scheme: 'untitled', language: '*' }, + { scheme: 'file', language: '*', notebookType: '*' }, + { scheme: 'untitled', language: '*', notebookType: '*' }, + ], { provideCompletionItems: 完成项提供者, resolveCompletionItem: () => null }, ...配置.触发补全的字符, ), -- Gitee