From adf93cb1cb5399c4cac1e2b6cb1980dabbc1af01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E5=B0=8F=E5=A2=A8?= <2291200076@qq.com> Date: Fri, 5 Apr 2024 01:07:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20package.json=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=8F=92=E4=BB=B6=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GPT.md | 98 +++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +- package-comment.jsonc | 2 +- package.json | 2 +- 4 files changed, 103 insertions(+), 3 deletions(-) diff --git a/GPT.md b/GPT.md index bc8f4d3..0fbd59f 100644 --- a/GPT.md +++ b/GPT.md @@ -289,3 +289,101 @@ vsce publish 我还是有点不太明白,可以帮我继续完善这个代码吗,谢谢你! + +当然可以!让我们继续完善代码。以下是一个更详细的示例,展示了如何在 VSCode 插件中实现你所描述的功能。请注意,这只是一个基本的框架,你可以根据你的实际需求进行进一步的扩展和优化。 + +```typescript +import * as vscode from 'vscode'; + +// 记录用户初始选中内容 +let selectedText: string | null = null; +// 当前转换方式 +let currentCase: 'camel' | 'pascal' | 'kebab' | 'snake' | 'upper' | 'lower' = 'camel'; + +// 监听编辑器的选择事件 +vscode.window.onDidChangeTextEditorSelection(handleSelectionChange); + +// 监听用户按键事件 +vscode.commands.registerCommand('extension.handleShortcut', handleShortcut); + +// 处理选择事件 +function handleSelectionChange(event: vscode.TextEditorSelectionChangeEvent) { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + + // 获取当前选中的文本 + const selection = editor.selection; + const selectedRange = new vscode.Range(selection.start, selection.end); + selectedText = editor.document.getText(selectedRange); +} + +// 转换函数(假设你已经有了这个函数) +function convertText(text: string, targetCase: 'camel' | 'pascal' | 'kebab' | 'snake' | 'upper' | 'lower'): string { + // 实现各种转换逻辑 + // ... + return convertedText; +} + +// 用户按下快捷键时调用 +function handleShortcut() { + if (selectedText) { + // 根据当前状态转换选中的文本 + const convertedText = convertText(selectedText, currentCase); + // 更新编辑器中的文本 + const editor = vscode.window.activeTextEditor; + if (editor) { + editor.edit(editBuilder => { + editBuilder.replace(editor.selection, convertedText); + }); + } + } +} + +// 用户切换转换方式时调用 +function switchCase() { + // 切换到下一个转换方式 + switch (currentCase) { + case 'camel': + currentCase = 'pascal'; + break; + case 'pascal': + currentCase = 'kebab'; + break; + case 'kebab': + currentCase = 'snake'; + break; + case 'snake': + currentCase = 'upper'; + break; + case 'upper': + currentCase = 'lower'; + break; + case 'lower': + currentCase = 'camel'; + break; + default: + currentCase = 'camel'; + break; + } +} + +// 在你的插件激活时注册命令 +export function activate(context: vscode.ExtensionContext) { + context.subscriptions.push( + vscode.commands.registerCommand('extension.handleShortcut', handleShortcut) + ); +} + +// 在你的插件停用时清理资源 +export function deactivate() { + // 清理资源 +} +``` + +在这个示例中,我们添加了一个 `switchCase` 函数,用于切换转换方式。每次用户按下快捷键时,会根据当前状态执行相应的转换,并更新编辑器中的文本。你可以根据你的需求进一步扩展这个功能,例如添加更多的转换方式、自定义快捷键等。 + +希望这对你有所帮助!如果还有其他问题,请随时继续提问。🙂 + + diff --git a/README.md b/README.md index 792861c..8d1fc4e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Variable Conversion 命名方式转换插件 -After writing up a brief description, we recommend including the following sections. +A variable naming conversion extension, support camel case, pascal case, snake case, snake camel case, snake pascal case, snake upper case, kebab(spinal) case, kebab camel case, kebab pascal case, kebab upper case, lower case, upper case, camel snake case, and more. + +一个变量命名方式互相转换的 VSCode 插件,支持小驼峰(驼峰)命名、大驼峰(帕斯卡)命名、下划线(蛇形)命名、下划线(蛇形) + 小驼峰(驼峰)命名、下划线(蛇形) + 大驼峰(帕斯卡)命名、下划线(蛇形) + 全大写命名、连字符(脊柱式)命名、连字符(脊柱式) + 小驼峰(驼峰)命名、连字符(脊柱式) + 大驼峰(帕斯卡)命名、连字符(脊柱式) + 全大写命名、全小写、全大写等常用命名方式 ## Features diff --git a/package-comment.jsonc b/package-comment.jsonc index e0f8703..a332d7c 100644 --- a/package-comment.jsonc +++ b/package-comment.jsonc @@ -2,7 +2,7 @@ // 插件 id 及名称 "name": "variable-conversion", "displayName": "Variable Conversion", - "description": "A variable naming conversion extension, support camel case, pascal case, kebab(spinal) case, camel kebab case, kebab upper case, snake case, snake upper case, upper case, lower case, camel snake case, and more. \n一个变量命名方式互相转换的 VSCode 插件,支持小驼峰(驼峰命名)、大驼峰(帕斯卡)命名、连字符(脊柱式)命名、驼峰脊柱式命名、连字符大写命名、下划线(蛇形)命名、驼峰蛇形命名、下划线大写命名、全大写、全小写等常用命名方式", + "description": "A variable naming conversion extension, support camel case, pascal case, snake case, snake camel case, snake pascal case, snake upper case, kebab(spinal) case, kebab camel case, kebab pascal case, kebab upper case, lower case, upper case, camel snake case, and more. \n一个变量命名方式互相转换的 VSCode 插件,支持小驼峰(驼峰)命名、大驼峰(帕斯卡)命名、下划线(蛇形)命名、下划线(蛇形) + 小驼峰(驼峰)命名、下划线(蛇形) + 大驼峰(帕斯卡)命名、下划线(蛇形) + 全大写命名、连字符(脊柱式)命名、连字符(脊柱式) + 小驼峰(驼峰)命名、连字符(脊柱式) + 大驼峰(帕斯卡)命名、连字符(脊柱式) + 全大写命名、全小写、全大写等常用命名方式", // 版本号 "version": "0.0.1", "engines": { diff --git a/package.json b/package.json index ba6a6fe..dd4e4ab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "variable-conversion", "displayName": "Variable Conversion", - "description": "A variable naming conversion extension, support camel case, pascal case, kebab(spinal) case, camel kebab case, kebab upper case, snake case, snake upper case, upper case, lower case, camel snake case, and more. \n一个变量命名方式互相转换的 VSCode 插件,支持小驼峰(驼峰命名)、大驼峰(帕斯卡)命名、连字符(脊柱式)命名、驼峰脊柱式命名、连字符大写命名、下划线(蛇形)命名、驼峰蛇形命名、下划线大写命名、全大写、全小写等常用命名方式", + "description": "A variable naming conversion extension, support camel case, pascal case, snake case, snake camel case, snake pascal case, snake upper case, kebab(spinal) case, kebab camel case, kebab pascal case, kebab upper case, lower case, upper case, camel snake case, and more. \n一个变量命名方式互相转换的 VSCode 插件,支持小驼峰(驼峰)命名、大驼峰(帕斯卡)命名、下划线(蛇形)命名、下划线(蛇形) + 小驼峰(驼峰)命名、下划线(蛇形) + 大驼峰(帕斯卡)命名、下划线(蛇形) + 全大写命名、连字符(脊柱式)命名、连字符(脊柱式) + 小驼峰(驼峰)命名、连字符(脊柱式) + 大驼峰(帕斯卡)命名、连字符(脊柱式) + 全大写命名、全小写、全大写等常用命名方式", "version": "0.0.1", "engines": { "vscode": "^1.87.0"