Compare commits
	
		
			6 Commits
		
	
	
		
			1.0.11
			...
			8cf0bae1d0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8cf0bae1d0 | |||
| d07981febd | |||
| 1af0d743db | |||
| 4c302ddbb2 | |||
| 68ffcc49f7 | |||
| f8fe40c374 | 
							
								
								
									
										71
									
								
								Publish.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								Publish.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					# 如何发行你的插件
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vsce login coder-xiaomo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					重要!删除 out 目录,并切到 release 分支再进行打包,避免打入其他无用文件
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vsce publish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 INFO  Publishing 'coder-xiaomo.variable-conversion v0.0.1'...
 | 
				
			||||||
 | 
					 INFO  Extension URL (might take a few minutes): https://marketplace.visualstudio.com/items?itemName=coder-xiaomo.variable-conversion
 | 
				
			||||||
 | 
					 INFO  Hub URL: https://marketplace.visualstudio.com/manage/publishers/coder-xiaomo/extensions/variable-conversion/hub
 | 
				
			||||||
 | 
					 DONE  Published coder-xiaomo.variable-conversion v0.0.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					具体步骤参考:
 | 
				
			||||||
 | 
					https://zhuanlan.zhihu.com/p/339695661
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 安装官方打包工具
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					首先我们要安装上这个官方的插件发行工具,可以把我们的插件工程打包成.vsix文件,也可以直接发布到插件市场当中
 | 
				
			||||||
 | 
					npm i vsce -g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					后面使用命令发行插件时,如果你没有设置package.json里的repository会收到提示。但不是非要填(插件可以不开源),选N即可。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 打包成 .vsix 文件
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vsce package
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					打包完成后,会在工程目录生成.vsix文件,这个文件的安装只能通过插件搜索右上方的菜单来进行
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 把插件发行到插件市场
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 注册Azure开发者账号
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					先得有一个 微软通行证 https://login.live.com/ ,然后打开 azure开发者中心 https://aka.ms/SignupAzureDevOps ,新建一个 azure开发组织。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### 新建个人令牌
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					注意选择 Full access 和 过期时间,如果令牌过期,需要回到这个页面再新建令牌。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					这步之后,一定要复制并保存好你的令牌字符串哦。之后只能新建,是找不到的。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 注册插件市场发行账户
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					接着我们 注册插件市场发行账号,也在这可以管理所有市场中自己发布的插件。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					当然我们也可以使用vsce命令来创建发行账户
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vsce create-publisher 发行账户名称
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 发行
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vsce publish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					这个过程里还会检查一些package.json的必填项,一切无误的话,就会看到下面这个图
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					发行成功啦!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					但此时我们的插件在市场中还搜不到,等个5-10分钟一般就有了。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 注意事项
 | 
				
			||||||
 | 
					README.md是插件主页的详情介绍;
 | 
				
			||||||
 | 
					记得更新package.json里的版本号;
 | 
				
			||||||
 | 
					如果package.json中填写了repository字段,在发布时会要求你先提交仓库;
 | 
				
			||||||
 | 
					README.md中的图片资源必须全部是HTTPS的;
 | 
				
			||||||
 | 
					CHANGELOG.md是插件主页的变更选项卡;
 | 
				
			||||||
 | 
					一但用户安装了你的插件,只要不卸载,插件有新版时后会自动更新的。
 | 
				
			||||||
							
								
								
									
										563
									
								
								package-comment.jsonc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										563
									
								
								package-comment.jsonc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,563 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  // 插件 id 及名称
 | 
				
			||||||
 | 
					  "name": "variable-conversion",
 | 
				
			||||||
 | 
					  "displayName": "Variable Conversion",
 | 
				
			||||||
 | 
					  "description": "一个强大的变量名转换插件,支持右键菜单、快捷键、状态栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、中划线(连字符/脊柱式)、空格分隔、点分隔、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), space, dot, lower, upper case, and more.",
 | 
				
			||||||
 | 
					  // 版本号
 | 
				
			||||||
 | 
					  "version": "1.0.11",
 | 
				
			||||||
 | 
					  // logo
 | 
				
			||||||
 | 
					  "icon": "image/logo.png",
 | 
				
			||||||
 | 
					  "publisher": "coder-xiaomo",
 | 
				
			||||||
 | 
					  "engines": {
 | 
				
			||||||
 | 
					    "vscode": "^1.87.0"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    "Other"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  // 仓库地址
 | 
				
			||||||
 | 
					  "repository": {
 | 
				
			||||||
 | 
					    "type": "git",
 | 
				
			||||||
 | 
					    "url": "https://github.com/coder-xiaomo/variable-conversion-vscode-extension.git"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "repositories": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "git",
 | 
				
			||||||
 | 
					      "url": "https://git.only4.work/coder-xiaomo/variable-conversion-vscode-extension.git"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "git",
 | 
				
			||||||
 | 
					      "url": "https://gitee.com/coder-xiaomo/variable-conversion-vscode-extension.git"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "main": "./out/extension.js",
 | 
				
			||||||
 | 
					  "activationEvents": [
 | 
				
			||||||
 | 
					    // 当编辑器完成启动时激活
 | 
				
			||||||
 | 
					    "onStartupFinished",
 | 
				
			||||||
 | 
					    // 当用户选中文本时激活
 | 
				
			||||||
 | 
					    "onTextSelected"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "contributes": {
 | 
				
			||||||
 | 
					    // docs: https://code.visualstudio.com/docs/getstarted/keybindings#_accepted-keys
 | 
				
			||||||
 | 
					    "keybindings": [
 | 
				
			||||||
 | 
					      // 绑定快捷键
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.convertCase",
 | 
				
			||||||
 | 
					        "key": "shift+alt+t",
 | 
				
			||||||
 | 
					        "when": "editorTextFocus"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // 循环转换 上一个
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.cyclicConvertCase.previous",
 | 
				
			||||||
 | 
					        "key": "ctrl+alt+[",
 | 
				
			||||||
 | 
					        "args": {
 | 
				
			||||||
 | 
					          "arrowKey": "["
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "when": "editorTextFocus"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // 循环转换 下一个
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.cyclicConvertCase.next",
 | 
				
			||||||
 | 
					        "key": "ctrl+alt+]",
 | 
				
			||||||
 | 
					        "args": {
 | 
				
			||||||
 | 
					          "arrowKey": "]"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "when": "editorTextFocus"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "commands": [
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * 循环转换 可以不添加
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "variable-conversion.cyclicConvertCase.previous",
 | 
				
			||||||
 | 
					      //   "title": "变量转换(上一个)"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "variable-conversion.cyclicConvertCase.next",
 | 
				
			||||||
 | 
					      //   "title": "变量转换(下一个)"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * 右键菜单
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.convertCase",
 | 
				
			||||||
 | 
					        "title": "变量转换"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * 右键菜单 - 子菜单
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					      // group-1-camel
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toCamelCase",
 | 
				
			||||||
 | 
					        "title": "小驼峰(驼峰)命名 (Camel Case) [ fooBar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toPascalCase",
 | 
				
			||||||
 | 
					        "title": "大驼峰(帕斯卡)命名 (Pascal Case) [ FooBar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // group-2-snake
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSnakeCase",
 | 
				
			||||||
 | 
					        "title": "下划线(蛇形)命名 (Snake Case) [ foo_bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSnakeUpperCase",
 | 
				
			||||||
 | 
					        "title": "下划线(蛇形) + 全大写命名 (Snake Upper Case) [ FOO_BAR ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSnakePascalCase",
 | 
				
			||||||
 | 
					        "title": "下划线(蛇形) + 大驼峰(帕斯卡)命名 (Snake Pascal Case) [ Foo_Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSnakeCamelCase",
 | 
				
			||||||
 | 
					        "title": "下划线(蛇形) + 小驼峰(驼峰)命名 (Snake Camel Case) [ foo_Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // group-3-kebab
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toKebabCase",
 | 
				
			||||||
 | 
					        "title": "中划线(连字符/脊柱式)命名 (Kebab/Spinal Case) [ foo-bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toKebabUpperCase",
 | 
				
			||||||
 | 
					        "title": "中划线(连字符/脊柱式) + 全大写命名 (Kebab Upper Case) [ FOO-BAR ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toKebabPascalCase",
 | 
				
			||||||
 | 
					        "title": "中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名 (Kebab Pascal Case) [ Foo-Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toKebabCamelCase",
 | 
				
			||||||
 | 
					        "title": "中划线(连字符/脊柱式) + 小驼峰(驼峰)命名 (Kebab Camel Case) [ foo-Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // group-4-space
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSpaceCase",
 | 
				
			||||||
 | 
					        "title": "空格分隔命名 (Space Case) [ foo bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSpaceUpperCase",
 | 
				
			||||||
 | 
					        "title": "空格分隔 + 全大写命名 (Space Upper Case) [ FOO BAR ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSpacePascalCase",
 | 
				
			||||||
 | 
					        "title": "空格分隔 + 大驼峰(帕斯卡)命名 (Space Pascal Case) [ Foo Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toSpaceCamelCase",
 | 
				
			||||||
 | 
					        "title": "空格分隔 + 小驼峰(驼峰)命名 (Space Camel Case) [ foo Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // group-5-dot
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toDotCase",
 | 
				
			||||||
 | 
					        "title": "点分隔命名 (Dot Case) [ foo bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toDotUpperCase",
 | 
				
			||||||
 | 
					        "title": "点分隔 + 全大写命名 (Dot Upper Case) [ FOO BAR ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toDotPascalCase",
 | 
				
			||||||
 | 
					        "title": "点分隔 + 大驼峰(帕斯卡)命名 (Dot Pascal Case) [ Foo Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toDotCamelCase",
 | 
				
			||||||
 | 
					        "title": "点分隔 + 小驼峰(驼峰)命名 (Dot Camel Case) [ foo Bar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      // group-6-upper-lower
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toLowerCase",
 | 
				
			||||||
 | 
					        "title": "全小写 (Lower Case) [ foobar ]"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "command": "variable-conversion.toUpperCase",
 | 
				
			||||||
 | 
					        "title": "全大写 (Upper Case) [ FOOBAR ]"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      // 隐藏命令
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToCamelcase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] 驼峰式大小写 (Camel Case) [ fooBar ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToKebabcase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] Kebab 命名 (Kebab Case) [ foo-bar ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToTitlecase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] 词首字母大写 (Title Case) [ Foo Bar ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToLowercase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] 转换为小写 (Lower Case) [ foo bar ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToUppercase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] 转换为大写 (Upper Case) [ FOO BAR ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // },
 | 
				
			||||||
 | 
					      // {
 | 
				
			||||||
 | 
					      //   "command": "editor.action.transformToSnakecase",
 | 
				
			||||||
 | 
					      //   "title": "[VSCode 自带] 转换为蛇形命名法 (Snake Case) [ foo_bar ]",
 | 
				
			||||||
 | 
					      //   "enablement": "false"
 | 
				
			||||||
 | 
					      // }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    // docs: https://code.visualstudio.com/api/references/contribution-points#contributes.menus
 | 
				
			||||||
 | 
					    "menus": {
 | 
				
			||||||
 | 
					      // 编辑器右键菜单
 | 
				
			||||||
 | 
					      "editor/context": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "editorTextFocus",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.convertCase",
 | 
				
			||||||
 | 
					          // "group": "1_modification@9"
 | 
				
			||||||
 | 
					          "group": "navigation@9"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "editorTextFocus && _textSelectionLength >= 1",
 | 
				
			||||||
 | 
					          "submenu": "variable-conversion.stringConversionMenu",
 | 
				
			||||||
 | 
					          // docs: https://code.visualstudio.com/api/references/contribution-points#Sorting-of-groups
 | 
				
			||||||
 | 
					          // "group": "1_modification@9"
 | 
				
			||||||
 | 
					          "group": "navigation@9"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "variable-conversion.stringConversionMenu": [
 | 
				
			||||||
 | 
					        // group-1-camel
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_camel_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toCamelCase",
 | 
				
			||||||
 | 
					          "group": "group-1-camel@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_pascal_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toPascalCase",
 | 
				
			||||||
 | 
					          "group": "group-1-camel@2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        // group-2-snake
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSnakeCase",
 | 
				
			||||||
 | 
					          "group": "group-2-snake@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_upper_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSnakeUpperCase",
 | 
				
			||||||
 | 
					          "group": "group-2-snake@2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_pascal_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSnakePascalCase",
 | 
				
			||||||
 | 
					          "group": "group-2-snake@3"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_camel_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSnakeCamelCase",
 | 
				
			||||||
 | 
					          "group": "group-2-snake@4"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        // group-3-kebab
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toKebabCase",
 | 
				
			||||||
 | 
					          "group": "group-3-kebab@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_upper_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toKebabUpperCase",
 | 
				
			||||||
 | 
					          "group": "group-3-kebab@2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_pascal_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toKebabPascalCase",
 | 
				
			||||||
 | 
					          "group": "group-3-kebab@3"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_camel_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toKebabCamelCase",
 | 
				
			||||||
 | 
					          "group": "group-3-kebab@4"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        // group-4-space
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSpaceCase",
 | 
				
			||||||
 | 
					          "group": "group-4-space@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_upper_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSpaceUpperCase",
 | 
				
			||||||
 | 
					          "group": "group-4-space@2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_pascal_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSpacePascalCase",
 | 
				
			||||||
 | 
					          "group": "group-4-space@3"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_camel_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toSpaceCamelCase",
 | 
				
			||||||
 | 
					          "group": "group-4-space@4"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        // group-5-dot
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toDotCase",
 | 
				
			||||||
 | 
					          "group": "group-5-dot@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_upper_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toDotUpperCase",
 | 
				
			||||||
 | 
					          "group": "group-5-dot@2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_pascal_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toDotPascalCase",
 | 
				
			||||||
 | 
					          "group": "group-5-dot@3"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_camel_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toDotCamelCase",
 | 
				
			||||||
 | 
					          "group": "group-5-dot@4"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        // group-6-upper-lower
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_lower_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toLowerCase",
 | 
				
			||||||
 | 
					          "group": "group-6-upper-lower@1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_upper_case",
 | 
				
			||||||
 | 
					          "command": "variable-conversion.toUpperCase",
 | 
				
			||||||
 | 
					          "group": "group-6-upper-lower@2"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 隐藏菜单项
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToCamelcase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToKebabcase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToTitlecase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToLowercase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToUppercase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
 | 
					        //   "command": "editor.action.transformToSnakecase",
 | 
				
			||||||
 | 
					        //   "group": "group-vscode",
 | 
				
			||||||
 | 
					        //   "when": "false"
 | 
				
			||||||
 | 
					        // }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // docs: https://code.visualstudio.com/api/references/contribution-points#contributes.submenus
 | 
				
			||||||
 | 
					    "submenus": [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "id": "variable-conversion.stringConversionMenu",
 | 
				
			||||||
 | 
					        "label": "将变量转换为..."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    // docs: https://code.visualstudio.com/api/references/contribution-points#contributes.configuration
 | 
				
			||||||
 | 
					    "configuration": {
 | 
				
			||||||
 | 
					      "title": "Variable Conversion 变量转换",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        // 仅测试用
 | 
				
			||||||
 | 
					        // "variable-conversion.test1": {
 | 
				
			||||||
 | 
					        //   "title": "定义转换格式的排序",
 | 
				
			||||||
 | 
					        //   "description": "Defines the ordering of the conversion format.\n定义转换格式的排序",
 | 
				
			||||||
 | 
					        //   "type": "array",
 | 
				
			||||||
 | 
					        //   "default": [
 | 
				
			||||||
 | 
					        //     "camelCase",
 | 
				
			||||||
 | 
					        //     "snake_case",
 | 
				
			||||||
 | 
					        //     "PascalCase"
 | 
				
			||||||
 | 
					        //   ]
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        // "variable-conversion.enableFormat": {
 | 
				
			||||||
 | 
					        //   "type": "object",
 | 
				
			||||||
 | 
					        //   "default": {
 | 
				
			||||||
 | 
					        //     "camelCase": true,
 | 
				
			||||||
 | 
					        //     "snake_case": true,
 | 
				
			||||||
 | 
					        //     "PascalCase": true
 | 
				
			||||||
 | 
					        //   },
 | 
				
			||||||
 | 
					        //   "description": "Define which formats are enabled.\n定义哪些格式是开启的"
 | 
				
			||||||
 | 
					        // },
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // 全小写命名
 | 
				
			||||||
 | 
					        // lower_case(全小写), snake_case(下划线), kebab_case(连字符), space_case(空格), dot_case(点)
 | 
				
			||||||
 | 
					        // 全大写命名
 | 
				
			||||||
 | 
					        // upper_case(全大写), snake_upper_case(下划线), kebab_upper_case(连字符), space_upper_case(空格), dot_upper_case(点)
 | 
				
			||||||
 | 
					        // 大驼峰命名
 | 
				
			||||||
 | 
					        // pascal_case(大驼峰), snake_pascal_case(下划线), kebab_pascal_case(连字符), space_pascal_case(空格), dot_pascal_case(点)
 | 
				
			||||||
 | 
					        // 小驼峰命名
 | 
				
			||||||
 | 
					        // camel_case(小驼峰), snake_camel_case(下划线), kebab_camel_case(连字符), space_camel_case(空格), dot_camel_case(点)
 | 
				
			||||||
 | 
					        "variable-conversion.disableFormat": {
 | 
				
			||||||
 | 
					          "order": 1,
 | 
				
			||||||
 | 
					          // markdownDescription 最多配置 11 行
 | 
				
			||||||
 | 
					          "markdownDescription": "定义哪些格式是禁用的\n\nDefine which formats are disabled.\n\n若您感觉以下配置比较麻烦,也可以选择在 `settings.json` 中编辑:\n\nIf you find the following configuration troublesome, you can also edit this configuration item in `settings.json`:\n\n`\"variable-conversion.disableFormat\": [ ... ],`\n\n[在 settings.json 中编辑 (Edit in settings.json)](command:workbench.action.openSettingsJson)\n\n配置后,您可能需要*重启扩展宿主*,或*重启当前窗口*才可使该配置完全生效(二选一即可):\n\nYou may need to *restart extension host* or *reload window* after configuration to take full effect (either):\n\n[重启扩展宿主 (Restart Extension Host)](command:workbench.action.restartExtensionHost), [重启当前窗口 (Reload Window)](command:workbench.action.reloadWindow)",
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "enum": [
 | 
				
			||||||
 | 
					              "camel_case",
 | 
				
			||||||
 | 
					              "pascal_case",
 | 
				
			||||||
 | 
					              "snake_case",
 | 
				
			||||||
 | 
					              "snake_camel_case",
 | 
				
			||||||
 | 
					              "snake_pascal_case",
 | 
				
			||||||
 | 
					              "snake_upper_case",
 | 
				
			||||||
 | 
					              "kebab_case",
 | 
				
			||||||
 | 
					              "kebab_camel_case",
 | 
				
			||||||
 | 
					              "kebab_pascal_case",
 | 
				
			||||||
 | 
					              "kebab_upper_case",
 | 
				
			||||||
 | 
					              "space_case",
 | 
				
			||||||
 | 
					              "space_camel_case",
 | 
				
			||||||
 | 
					              "space_pascal_case",
 | 
				
			||||||
 | 
					              "space_upper_case",
 | 
				
			||||||
 | 
					              "dot_case",
 | 
				
			||||||
 | 
					              "dot_camel_case",
 | 
				
			||||||
 | 
					              "dot_pascal_case",
 | 
				
			||||||
 | 
					              "dot_upper_case",
 | 
				
			||||||
 | 
					              "lower_case",
 | 
				
			||||||
 | 
					              "upper_case"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "enumDescriptions": [
 | 
				
			||||||
 | 
					              "小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 全大写命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 全大写命名",
 | 
				
			||||||
 | 
					              "空格分隔命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "点分隔命名",
 | 
				
			||||||
 | 
					              "点分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "全小写",
 | 
				
			||||||
 | 
					              "全大写"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "default": []
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "variable-conversion.circularConversionFormatOrder": {
 | 
				
			||||||
 | 
					          "order": 2,
 | 
				
			||||||
 | 
					          "title": "定义循环转换快捷键的目标格式排序",
 | 
				
			||||||
 | 
					          // "description": "Defines the destination format ordering of the circular conversion shortcut.\n定义循环转换快捷键的目标格式排序",
 | 
				
			||||||
 | 
					          // markdownDescription 最多配置 11 行
 | 
				
			||||||
 | 
					          // "markdownDescription": "Defines the destination format ordering of the circular conversion shortcut, separated by commas.\n\n 定义循环转换快捷键的目标格式排序,以英文逗号分隔\n\n Target formats that are not in the following configuration list will appear last in the following custom order in the default order.\n\n不在以下配置列表中的目标格式,将按照默认顺序排在以下自定义顺序最后\n\n 🌟Lower Case 全小写命名: `lower_case`(全小写), `snake_case`(下划线), `kebab_case`(连字符), `space_case`(空格), `dot_case`(点)\n\n 🌟Upper Case 全大写命名: `upper_case`(全大写), `snake_upper_case`(下划线), `kebab_upper_case`(连字符), `space_upper_case`(空格), `dot_upper_case`(点)\n\n 🌟Pascal Case 大驼峰命名: `pascal_case`(大驼峰), `snake_pascal_case`(下划线), `kebab_pascal_case`(连字符), `space_pascal_case`(空格), `dot_pascal_case`(点)\n\n 🌟Camel Case 小驼峰命名: `camel_case`(小驼峰), `snake_camel_case`(下划线), `kebab_camel_case`(连字符), `space_camel_case`(空格), `dot_camel_case`(点)\n\n🐳Default value 默认值: `camel_case, snake_case, pascal_case, kebab_case, space_case, dot_case, snake_upper_case, kebab_upper_case, space_upper_case, dot_upper_case, snake_pascal_case, kebab_pascal_case, space_pascal_case, dot_pascal_case, snake_camel_case, kebab_camel_case, space_camel_case, dot_camel_case, lower_case, upper_case`\n\n If you find the following configuration troublesome, you can also edit this configuration item in `settings.json`. 若您感觉以下配置比较麻烦,也可以选择在 `settings.json` 中编辑: `\"variable-conversion.circularConversionFormatOrder\": \"...\",` [Edit in settings.json (在 settings.json 中编辑)](command:workbench.action.openSettingsJson)",
 | 
				
			||||||
 | 
					          "markdownDescription": "定义循环转换快捷键的目标格式排序,以英文逗号分隔。不在以下配置列表中的目标格式,将按照默认顺序排在以下自定义顺序最后\n\n Defines the destination format ordering of the circular conversion shortcut, separated by commas. (Target formats that are not in the following configuration list will appear last in the following custom order in the default order.)\n\n 📌请[在 `settings.json` 中编辑该配置](command:workbench.action.openSettingsJson),**不要使用**设置页面的下拉框进行配置: `\"variable-conversion.circularConversionFormatOrder\": [ ... ],`\n\n 📌Please [edit this configuration in `settings.json`](command:workbench.action.openSettingsJson), **instead of** using the drop-down box on the settings page.\n\n 🐳默认值 Default value: `\"variable-conversion.circularConversionFormatOrder\": [ \"camel_case\", \"snake_case\", \"pascal_case\", \"kebab_case\", \"space_case\", \"dot_case\", \"snake_upper_case\", \"kebab_upper_case\", \"space_upper_case\", \"dot_upper_case\", \"snake_pascal_case\", \"kebab_pascal_case\", \"space_pascal_case\", \"dot_pascal_case\", \"snake_camel_case\", \"kebab_camel_case\", \"space_camel_case\", \"dot_camel_case\", \"lower_case\", \"upper_case\" ],`\n\n 👉Configuration item meaning 配置项说明\n\n 🌟Lower Case 全小写命名: `lower_case`(全小写), `snake_case`(下划线), `kebab_case`(连字符), `space_case`(空格), `dot_case`(点)\n\n 🌟Upper Case 全大写命名: `upper_case`(全大写), `snake_upper_case`(下划线), `kebab_upper_case`(连字符), `space_upper_case`(空格), `dot_upper_case`(点)\n\n 🌟Pascal Case 大驼峰命名: `pascal_case`(大驼峰), `snake_pascal_case`(下划线), `kebab_pascal_case`(连字符), `space_pascal_case`(空格), `dot_pascal_case`(点)\n\n 🌟Camel Case 小驼峰命名: `camel_case`(小驼峰), `snake_camel_case`(下划线), `kebab_camel_case`(连字符), `space_camel_case`(空格), `dot_camel_case`(点)",
 | 
				
			||||||
 | 
					          // "type": "string",
 | 
				
			||||||
 | 
					          // "default": "camel_case, snake_case, pascal_case, kebab_case, space_case, dot_case, snake_upper_case, kebab_upper_case, space_upper_case, dot_upper_case, snake_pascal_case, kebab_pascal_case, space_pascal_case, dot_pascal_case, snake_camel_case, kebab_camel_case, space_camel_case, dot_camel_case, lower_case, upper_case"
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "enum": [
 | 
				
			||||||
 | 
					              "camel_case",
 | 
				
			||||||
 | 
					              "pascal_case",
 | 
				
			||||||
 | 
					              "snake_case",
 | 
				
			||||||
 | 
					              "snake_camel_case",
 | 
				
			||||||
 | 
					              "snake_pascal_case",
 | 
				
			||||||
 | 
					              "snake_upper_case",
 | 
				
			||||||
 | 
					              "kebab_case",
 | 
				
			||||||
 | 
					              "kebab_camel_case",
 | 
				
			||||||
 | 
					              "kebab_pascal_case",
 | 
				
			||||||
 | 
					              "kebab_upper_case",
 | 
				
			||||||
 | 
					              "space_case",
 | 
				
			||||||
 | 
					              "space_camel_case",
 | 
				
			||||||
 | 
					              "space_pascal_case",
 | 
				
			||||||
 | 
					              "space_upper_case",
 | 
				
			||||||
 | 
					              "dot_case",
 | 
				
			||||||
 | 
					              "dot_camel_case",
 | 
				
			||||||
 | 
					              "dot_pascal_case",
 | 
				
			||||||
 | 
					              "dot_upper_case",
 | 
				
			||||||
 | 
					              "lower_case",
 | 
				
			||||||
 | 
					              "upper_case"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "enumDescriptions": [
 | 
				
			||||||
 | 
					              "小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 全大写命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 全大写命名",
 | 
				
			||||||
 | 
					              "空格分隔命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "点分隔命名",
 | 
				
			||||||
 | 
					              "点分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "全小写",
 | 
				
			||||||
 | 
					              "全大写"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "default": [
 | 
				
			||||||
 | 
					            "camel_case",
 | 
				
			||||||
 | 
					            "snake_case",
 | 
				
			||||||
 | 
					            "pascal_case",
 | 
				
			||||||
 | 
					            "kebab_case",
 | 
				
			||||||
 | 
					            "space_case",
 | 
				
			||||||
 | 
					            "dot_case",
 | 
				
			||||||
 | 
					            "snake_upper_case",
 | 
				
			||||||
 | 
					            "kebab_upper_case",
 | 
				
			||||||
 | 
					            "space_upper_case",
 | 
				
			||||||
 | 
					            "dot_upper_case",
 | 
				
			||||||
 | 
					            "snake_pascal_case",
 | 
				
			||||||
 | 
					            "kebab_pascal_case",
 | 
				
			||||||
 | 
					            "space_pascal_case",
 | 
				
			||||||
 | 
					            "dot_pascal_case",
 | 
				
			||||||
 | 
					            "snake_camel_case",
 | 
				
			||||||
 | 
					            "kebab_camel_case",
 | 
				
			||||||
 | 
					            "space_camel_case",
 | 
				
			||||||
 | 
					            "dot_camel_case",
 | 
				
			||||||
 | 
					            "lower_case",
 | 
				
			||||||
 | 
					            "upper_case"
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "vscode:prepublish": "npm run compile",
 | 
				
			||||||
 | 
					    "compile": "tsc -p ./",
 | 
				
			||||||
 | 
					    "watch": "tsc -watch -p ./",
 | 
				
			||||||
 | 
					    "pretest": "npm run compile && npm run lint",
 | 
				
			||||||
 | 
					    "lint": "eslint src --ext ts",
 | 
				
			||||||
 | 
					    "test": "vscode-test",
 | 
				
			||||||
 | 
					    "package": "echo \"start `vsce package`\" & vsce package",
 | 
				
			||||||
 | 
					    "publish": "vsce publish"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "@types/mocha": "^10.0.6",
 | 
				
			||||||
 | 
					    "@types/node": "18.x",
 | 
				
			||||||
 | 
					    "@types/vscode": "^1.87.0",
 | 
				
			||||||
 | 
					    "@typescript-eslint/eslint-plugin": "^7.4.0",
 | 
				
			||||||
 | 
					    "@typescript-eslint/parser": "^7.4.0",
 | 
				
			||||||
 | 
					    "@vscode/test-cli": "^0.0.8",
 | 
				
			||||||
 | 
					    "@vscode/test-electron": "^2.3.9",
 | 
				
			||||||
 | 
					    "eslint": "^8.57.0",
 | 
				
			||||||
 | 
					    "typescript": "^5.3.3"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										84
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								package.json
									
									
									
									
									
								
							@@ -155,84 +155,104 @@
 | 
				
			|||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "variable-conversion.stringConversionMenu": [
 | 
					      "variable-conversion.stringConversionMenu": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_camel_case",
 | 
				
			||||||
          "command": "variable-conversion.toCamelCase",
 | 
					          "command": "variable-conversion.toCamelCase",
 | 
				
			||||||
          "group": "group-1-camel@1"
 | 
					          "group": "group-1-camel@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_pascal_case",
 | 
				
			||||||
          "command": "variable-conversion.toPascalCase",
 | 
					          "command": "variable-conversion.toPascalCase",
 | 
				
			||||||
          "group": "group-1-camel@2"
 | 
					          "group": "group-1-camel@2"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_case",
 | 
				
			||||||
          "command": "variable-conversion.toSnakeCase",
 | 
					          "command": "variable-conversion.toSnakeCase",
 | 
				
			||||||
          "group": "group-2-snake@1"
 | 
					          "group": "group-2-snake@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_upper_case",
 | 
				
			||||||
          "command": "variable-conversion.toSnakeUpperCase",
 | 
					          "command": "variable-conversion.toSnakeUpperCase",
 | 
				
			||||||
          "group": "group-2-snake@2"
 | 
					          "group": "group-2-snake@2"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_pascal_case",
 | 
				
			||||||
          "command": "variable-conversion.toSnakePascalCase",
 | 
					          "command": "variable-conversion.toSnakePascalCase",
 | 
				
			||||||
          "group": "group-2-snake@3"
 | 
					          "group": "group-2-snake@3"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_snake_camel_case",
 | 
				
			||||||
          "command": "variable-conversion.toSnakeCamelCase",
 | 
					          "command": "variable-conversion.toSnakeCamelCase",
 | 
				
			||||||
          "group": "group-2-snake@4"
 | 
					          "group": "group-2-snake@4"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_case",
 | 
				
			||||||
          "command": "variable-conversion.toKebabCase",
 | 
					          "command": "variable-conversion.toKebabCase",
 | 
				
			||||||
          "group": "group-3-kebab@1"
 | 
					          "group": "group-3-kebab@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_upper_case",
 | 
				
			||||||
          "command": "variable-conversion.toKebabUpperCase",
 | 
					          "command": "variable-conversion.toKebabUpperCase",
 | 
				
			||||||
          "group": "group-3-kebab@2"
 | 
					          "group": "group-3-kebab@2"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_pascal_case",
 | 
				
			||||||
          "command": "variable-conversion.toKebabPascalCase",
 | 
					          "command": "variable-conversion.toKebabPascalCase",
 | 
				
			||||||
          "group": "group-3-kebab@3"
 | 
					          "group": "group-3-kebab@3"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_kebab_camel_case",
 | 
				
			||||||
          "command": "variable-conversion.toKebabCamelCase",
 | 
					          "command": "variable-conversion.toKebabCamelCase",
 | 
				
			||||||
          "group": "group-3-kebab@4"
 | 
					          "group": "group-3-kebab@4"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_case",
 | 
				
			||||||
          "command": "variable-conversion.toSpaceCase",
 | 
					          "command": "variable-conversion.toSpaceCase",
 | 
				
			||||||
          "group": "group-4-space@1"
 | 
					          "group": "group-4-space@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_upper_case",
 | 
				
			||||||
          "command": "variable-conversion.toSpaceUpperCase",
 | 
					          "command": "variable-conversion.toSpaceUpperCase",
 | 
				
			||||||
          "group": "group-4-space@2"
 | 
					          "group": "group-4-space@2"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_pascal_case",
 | 
				
			||||||
          "command": "variable-conversion.toSpacePascalCase",
 | 
					          "command": "variable-conversion.toSpacePascalCase",
 | 
				
			||||||
          "group": "group-4-space@3"
 | 
					          "group": "group-4-space@3"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_space_camel_case",
 | 
				
			||||||
          "command": "variable-conversion.toSpaceCamelCase",
 | 
					          "command": "variable-conversion.toSpaceCamelCase",
 | 
				
			||||||
          "group": "group-4-space@4"
 | 
					          "group": "group-4-space@4"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_case",
 | 
				
			||||||
          "command": "variable-conversion.toDotCase",
 | 
					          "command": "variable-conversion.toDotCase",
 | 
				
			||||||
          "group": "group-5-dot@1"
 | 
					          "group": "group-5-dot@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_upper_case",
 | 
				
			||||||
          "command": "variable-conversion.toDotUpperCase",
 | 
					          "command": "variable-conversion.toDotUpperCase",
 | 
				
			||||||
          "group": "group-5-dot@2"
 | 
					          "group": "group-5-dot@2"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_pascal_case",
 | 
				
			||||||
          "command": "variable-conversion.toDotPascalCase",
 | 
					          "command": "variable-conversion.toDotPascalCase",
 | 
				
			||||||
          "group": "group-5-dot@3"
 | 
					          "group": "group-5-dot@3"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_dot_camel_case",
 | 
				
			||||||
          "command": "variable-conversion.toDotCamelCase",
 | 
					          "command": "variable-conversion.toDotCamelCase",
 | 
				
			||||||
          "group": "group-5-dot@4"
 | 
					          "group": "group-5-dot@4"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_lower_case",
 | 
				
			||||||
          "command": "variable-conversion.toLowerCase",
 | 
					          "command": "variable-conversion.toLowerCase",
 | 
				
			||||||
          "group": "group-5-upper-lower@1"
 | 
					          "group": "group-6-upper-lower@1"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "when": "!_isHideSubMenuItem_upper_case",
 | 
				
			||||||
          "command": "variable-conversion.toUpperCase",
 | 
					          "command": "variable-conversion.toUpperCase",
 | 
				
			||||||
          "group": "group-5-upper-lower@2"
 | 
					          "group": "group-6-upper-lower@2"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -241,7 +261,65 @@
 | 
				
			|||||||
        "id": "variable-conversion.stringConversionMenu",
 | 
					        "id": "variable-conversion.stringConversionMenu",
 | 
				
			||||||
        "label": "将变量转换为..."
 | 
					        "label": "将变量转换为..."
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ]
 | 
					    ],
 | 
				
			||||||
 | 
					    "configuration": {
 | 
				
			||||||
 | 
					      "title": "Variable Conversion 变量转换",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        "variable-conversion.disableFormat": {
 | 
				
			||||||
 | 
					          "order": 1,
 | 
				
			||||||
 | 
					          "markdownDescription": "定义哪些格式是禁用的\n\nDefine which formats are disabled.\n\n若您感觉以下配置比较麻烦,也可以选择在 `settings.json` 中编辑:\n\nIf you find the following configuration troublesome, you can also edit this configuration item in `settings.json`:\n\n`\"variable-conversion.disableFormat\": [ ... ],`\n\n[在 settings.json 中编辑 (Edit in settings.json)](command:workbench.action.openSettingsJson)\n\n配置后,您可能需要*重启扩展宿主*,或*重启当前窗口*才可使该配置完全生效(二选一即可):\n\nYou may need to *restart extension host* or *reload window* after configuration to take full effect (either):\n\n[重启扩展宿主 (Restart Extension Host)](command:workbench.action.restartExtensionHost), [重启当前窗口 (Reload Window)](command:workbench.action.reloadWindow)",
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "enum": [
 | 
				
			||||||
 | 
					              "camel_case",
 | 
				
			||||||
 | 
					              "pascal_case",
 | 
				
			||||||
 | 
					              "snake_case",
 | 
				
			||||||
 | 
					              "snake_camel_case",
 | 
				
			||||||
 | 
					              "snake_pascal_case",
 | 
				
			||||||
 | 
					              "snake_upper_case",
 | 
				
			||||||
 | 
					              "kebab_case",
 | 
				
			||||||
 | 
					              "kebab_camel_case",
 | 
				
			||||||
 | 
					              "kebab_pascal_case",
 | 
				
			||||||
 | 
					              "kebab_upper_case",
 | 
				
			||||||
 | 
					              "space_case",
 | 
				
			||||||
 | 
					              "space_camel_case",
 | 
				
			||||||
 | 
					              "space_pascal_case",
 | 
				
			||||||
 | 
					              "space_upper_case",
 | 
				
			||||||
 | 
					              "dot_case",
 | 
				
			||||||
 | 
					              "dot_camel_case",
 | 
				
			||||||
 | 
					              "dot_pascal_case",
 | 
				
			||||||
 | 
					              "dot_upper_case",
 | 
				
			||||||
 | 
					              "lower_case",
 | 
				
			||||||
 | 
					              "upper_case"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "enumDescriptions": [
 | 
				
			||||||
 | 
					              "小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "下划线(蛇形) + 全大写命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "中划线(连字符/脊柱式) + 全大写命名",
 | 
				
			||||||
 | 
					              "空格分隔命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "空格分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "点分隔命名",
 | 
				
			||||||
 | 
					              "点分隔 + 小驼峰(驼峰)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 大驼峰(帕斯卡)命名",
 | 
				
			||||||
 | 
					              "点分隔 + 全大写命名",
 | 
				
			||||||
 | 
					              "全小写",
 | 
				
			||||||
 | 
					              "全大写"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "default": []
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "vscode:prepublish": "npm run compile",
 | 
					    "vscode:prepublish": "npm run compile",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,12 @@
 | 
				
			|||||||
import * as vscode from 'vscode';
 | 
					import * as vscode from 'vscode';
 | 
				
			||||||
import QuickPickItemEx from "../type-definition/QuickPickItemExType";
 | 
					import QuickPickItemEx from "../type-definition/QuickPickItemExType";
 | 
				
			||||||
import { quickPickSupportCases } from '../type-definition/SupportCaseType';
 | 
					import { QuickPickSupportCaseItem, quickPickSupportCases } from '../type-definition/SupportCaseType';
 | 
				
			||||||
import { TransformTextResult } from '../type-definition/TransformTextResultType';
 | 
					import { TransformTextResult } from '../type-definition/TransformTextResultType';
 | 
				
			||||||
import { transformMutliLineText, transformMutliSelectionText } from '../main-code/transform';
 | 
					import { transformMutliSelectionText } from '../main-code/transform';
 | 
				
			||||||
import { EOL } from '../type-definition/EOLType';
 | 
					import { EOL } from '../type-definition/EOLType';
 | 
				
			||||||
import { caseConversion } from '../main-code/conversion';
 | 
					import { caseConversion } from '../main-code/conversion';
 | 
				
			||||||
import { isStringArrayEqual } from '../main-code/utils';
 | 
					import { isStringArrayEqual } from '../main-code/utils';
 | 
				
			||||||
 | 
					import { getUserConfigurations } from '../main-code/user-configuration';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const QuickPickLabelMaxLength = 60;
 | 
					const QuickPickLabelMaxLength = 60;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -18,12 +19,12 @@ interface RecommendItem {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * 弹出的提示
 | 
					 * 弹出的提示
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function generateOptionsBasedOnText(textList: string[], eol: EOL): Array<QuickPickItemEx> {
 | 
					function generateOptionsBasedOnText(textList: string[], eol: EOL, enabledQuickPickSupportCases: Array<QuickPickSupportCaseItem>): Array<QuickPickItemEx> {
 | 
				
			||||||
    // Cut text 切割文本
 | 
					    // Cut text 切割文本
 | 
				
			||||||
    const resultsList: Array<TransformTextResult[]> = transformMutliSelectionText(textList);
 | 
					    const resultsList: Array<TransformTextResult[]> = transformMutliSelectionText(textList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const mergeResultList: Array<RecommendItem> = [];
 | 
					    const mergeResultList: Array<RecommendItem> = [];
 | 
				
			||||||
    for (const quickPick of quickPickSupportCases) {
 | 
					    for (const quickPick of enabledQuickPickSupportCases) {
 | 
				
			||||||
        const conversionResults: Array<string> = [];
 | 
					        const conversionResults: Array<string> = [];
 | 
				
			||||||
        for (let i = 0; i < textList.length; i++) {
 | 
					        for (let i = 0; i < textList.length; i++) {
 | 
				
			||||||
            const text = textList[i];
 | 
					            const text = textList[i];
 | 
				
			||||||
@@ -95,8 +96,24 @@ export function handleQuickPick() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // issue: #1 https://github.com/coder-xiaomo/variable-conversion-vscode-extension/issues/1
 | 
				
			||||||
 | 
					    // 获取用户配置
 | 
				
			||||||
 | 
					    const disableFormatList = getUserConfigurations('disableFormat');
 | 
				
			||||||
 | 
					    // 排除禁用的选项
 | 
				
			||||||
 | 
					    const enabledQuickPickSupportCases = [];
 | 
				
			||||||
 | 
					    for (const quickPick of quickPickSupportCases) {
 | 
				
			||||||
 | 
					        if (disableFormatList.includes(quickPick.settingsKey)) {
 | 
				
			||||||
 | 
					            continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        enabledQuickPickSupportCases.push(quickPick);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (enabledQuickPickSupportCases.length === 0) {
 | 
				
			||||||
 | 
					        vscode.window.showInformationMessage('所有格式都已被配置为禁用,请修改配置 `variable-conversion.disableFormat` 后重试\nAll formats have been configured to disable. Modify the `variable-conversion.disableFormat` configuration and try again.');
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 基于选中的文本生成选项
 | 
					    // 基于选中的文本生成选项
 | 
				
			||||||
    const options = generateOptionsBasedOnText(textList, eol);
 | 
					    const options = generateOptionsBasedOnText(textList, eol, enabledQuickPickSupportCases);
 | 
				
			||||||
    if (options.length === 0) {
 | 
					    if (options.length === 0) {
 | 
				
			||||||
        vscode.window.showInformationMessage('所选内容暂无可选转换,请尝试重新选择\nNo conversion candidates are available for the selected content, please try to select another text.');
 | 
					        vscode.window.showInformationMessage('所选内容暂无可选转换,请尝试重新选择\nNo conversion candidates are available for the selected content, please try to select another text.');
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ import { commands } from './type-definition/SupportCaseType';
 | 
				
			|||||||
import { createStatusBarItem, updateStatusBarItemVisable } from './extension-handler/status-bar-handler';
 | 
					import { createStatusBarItem, updateStatusBarItemVisable } from './extension-handler/status-bar-handler';
 | 
				
			||||||
import * as CyclicConversion from './main-code/cyclic-conversion';
 | 
					import * as CyclicConversion from './main-code/cyclic-conversion';
 | 
				
			||||||
import { EOL } from './type-definition/EOLType';
 | 
					import { EOL } from './type-definition/EOLType';
 | 
				
			||||||
 | 
					import { getUserConfigurations } from './main-code/user-configuration';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// This method is called when your extension is activated
 | 
					// This method is called when your extension is activated
 | 
				
			||||||
// Your extension is activated the very first time the command is executed
 | 
					// Your extension is activated the very first time the command is executed
 | 
				
			||||||
@@ -41,6 +42,14 @@ export function activate(context: vscode.ExtensionContext) {
 | 
				
			|||||||
		// 更新 _textSelectionLength (用于判断是否展示右键菜单)
 | 
							// 更新 _textSelectionLength (用于判断是否展示右键菜单)
 | 
				
			||||||
		vscode.commands.executeCommand('setContext', '_textSelectionLength', selectTextLength);
 | 
							vscode.commands.executeCommand('setContext', '_textSelectionLength', selectTextLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// issue: #1 https://github.com/coder-xiaomo/variable-conversion-vscode-extension/issues/1
 | 
				
			||||||
 | 
							// 获取用户配置
 | 
				
			||||||
 | 
							const disableFormatList = getUserConfigurations('disableFormat');
 | 
				
			||||||
 | 
							// 更新右键菜单每一项是否展示
 | 
				
			||||||
 | 
							for (const { settingsKey } of commands) {
 | 
				
			||||||
 | 
								vscode.commands.executeCommand('setContext', '_isHideSubMenuItem_' + settingsKey, disableFormatList.includes(settingsKey));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 判断是否展示状态栏按钮
 | 
							// 判断是否展示状态栏按钮
 | 
				
			||||||
		updateStatusBarItemVisable(selectTextLength);
 | 
							updateStatusBarItemVisable(selectTextLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ import { EOL } from "../type-definition/EOLType";
 | 
				
			|||||||
import { cyclicConvertCaseOrder } from "../type-definition/SupportCaseType";
 | 
					import { cyclicConvertCaseOrder } from "../type-definition/SupportCaseType";
 | 
				
			||||||
import { caseConversion } from "./conversion";
 | 
					import { caseConversion } from "./conversion";
 | 
				
			||||||
import { isStringArrayEqual, stringListArrayDuplicateRemoval } from './utils';
 | 
					import { isStringArrayEqual, stringListArrayDuplicateRemoval } from './utils';
 | 
				
			||||||
 | 
					import { getUserConfigurations } from './user-configuration';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface UserSelection {
 | 
					interface UserSelection {
 | 
				
			||||||
    currentEol: EOL
 | 
					    currentEol: EOL
 | 
				
			||||||
@@ -64,16 +65,25 @@ function lazyConvert() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 获取用户配置
 | 
				
			||||||
 | 
					    const disableFormatList = getUserConfigurations('disableFormat');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const textList = userSelection.currentSelectionsText;
 | 
					    const textList = userSelection.currentSelectionsText;
 | 
				
			||||||
    // vscode.window.showInformationMessage('lazyConvert' + textList.join('\n'));
 | 
					    // vscode.window.showInformationMessage('lazyConvert' + textList.join('\n'));
 | 
				
			||||||
    const eol = userSelection.currentEol;
 | 
					    const eol = userSelection.currentEol;
 | 
				
			||||||
    const conversionsTarget: Array<string[]> = [textList];
 | 
					    const conversionsTarget: Array<string[]> = [textList];
 | 
				
			||||||
    for (const cyclicConvertCase of cyclicConvertCaseOrder) {
 | 
					    for (const cyclicConvertCase of cyclicConvertCaseOrder) {
 | 
				
			||||||
 | 
					        // issue: #1 https://github.com/coder-xiaomo/variable-conversion-vscode-extension/issues/1
 | 
				
			||||||
 | 
					        // 跳过禁用的目标格式
 | 
				
			||||||
 | 
					        if (disableFormatList.includes(cyclicConvertCase.settingsKey)) {
 | 
				
			||||||
 | 
					            continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 每一个类型
 | 
					        // 每一个类型
 | 
				
			||||||
        const conversionsTargetItem: string[] = [];
 | 
					        const conversionsTargetItem: string[] = [];
 | 
				
			||||||
        for (const line of textList) {
 | 
					        for (const line of textList) {
 | 
				
			||||||
            // 选中区块的每一行
 | 
					            // 选中区块的每一行
 | 
				
			||||||
            const conversionResult: string = caseConversion(cyclicConvertCase, line, eol);
 | 
					            const conversionResult: string = caseConversion(cyclicConvertCase.type, line, eol);
 | 
				
			||||||
            conversionsTargetItem.push(conversionResult);
 | 
					            conversionsTargetItem.push(conversionResult);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        conversionsTarget.push(conversionsTargetItem);
 | 
					        conversionsTarget.push(conversionsTargetItem);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								src/main-code/user-configuration.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/main-code/user-configuration.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					const vscode = require('vscode');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getUserConfigurations(configKey: string) {
 | 
				
			||||||
 | 
					    const config = vscode.workspace.getConfiguration('variable-conversion');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 获取 disableFormat 配置项
 | 
				
			||||||
 | 
					    const configValue = config.get(configKey);
 | 
				
			||||||
 | 
					    console.log('configValue:', configValue);
 | 
				
			||||||
 | 
					    return configValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export {
 | 
				
			||||||
 | 
					    getUserConfigurations
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Code:
 | 
					 * Code:
 | 
				
			||||||
 * - Add type definition in below `SupportCase` enum and following array
 | 
					 * - Add type definition in below `SupportCase` enum and following array
 | 
				
			||||||
 * - Add `commands`, `menus` parts in [package.json] and [package-comment.jsonc]
 | 
					 * - Add `commands`, `menus`, `configuration` parts in [package.json] and [package-comment.jsonc]
 | 
				
			||||||
 * - Add main conversion logic in [src/main-code/conversion.ts]
 | 
					 * - Add main conversion logic in [src/main-code/conversion.ts]
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Test:
 | 
					 * Test:
 | 
				
			||||||
@@ -281,188 +281,301 @@ const keyword = {
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * 接管的变量转换命令
 | 
					 * 接管的变量转换命令
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export const commands: Array<{ command: string; targetCase: SupportCase }> = [
 | 
					export const commands: Array<{ command: string; targetCase: SupportCase; settingsKey: string }> = [
 | 
				
			||||||
    { command: 'variable-conversion.toCamelCase', targetCase: SupportCase.CAMEL_CASE },
 | 
					    {
 | 
				
			||||||
    { command: 'variable-conversion.toPascalCase', targetCase: SupportCase.PASCAL_CASE },
 | 
					        command: 'variable-conversion.toCamelCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.CAMEL_CASE,
 | 
				
			||||||
    { command: 'variable-conversion.toSnakeCase', targetCase: SupportCase.SNAKE_CASE },
 | 
					        settingsKey: 'camel_case'
 | 
				
			||||||
    { command: 'variable-conversion.toSnakeUpperCase', targetCase: SupportCase.SNAKE_UPPER_CASE },
 | 
					    },
 | 
				
			||||||
    { command: 'variable-conversion.toSnakePascalCase', targetCase: SupportCase.SNAKE_PASCAL_CASE },
 | 
					    {
 | 
				
			||||||
    { command: 'variable-conversion.toSnakeCamelCase', targetCase: SupportCase.SNAKE_CAMEL_CASE },
 | 
					        command: 'variable-conversion.toPascalCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.PASCAL_CASE,
 | 
				
			||||||
    { command: 'variable-conversion.toKebabCase', targetCase: SupportCase.KEBAB_CASE },
 | 
					        settingsKey: 'pascal_case'
 | 
				
			||||||
    { command: 'variable-conversion.toKebabUpperCase', targetCase: SupportCase.KEBAB_UPPER_CASE },
 | 
					    },
 | 
				
			||||||
    { command: 'variable-conversion.toKebabPascalCase', targetCase: SupportCase.KEBAB_PASCAL_CASE },
 | 
					    // +++++++++++++++++++++++++++++++++++++++++++++++
 | 
				
			||||||
    { command: 'variable-conversion.toKebabCamelCase', targetCase: SupportCase.KEBAB_CAMEL_CASE },
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSnakeCase',
 | 
				
			||||||
    { command: 'variable-conversion.toSpaceCase', targetCase: SupportCase.SPACE_CASE },
 | 
					        targetCase: SupportCase.SNAKE_CASE,
 | 
				
			||||||
    { command: 'variable-conversion.toSpaceUpperCase', targetCase: SupportCase.SPACE_UPPER_CASE },
 | 
					        settingsKey: 'snake_case'
 | 
				
			||||||
    { command: 'variable-conversion.toSpacePascalCase', targetCase: SupportCase.SPACE_PASCAL_CASE },
 | 
					    },
 | 
				
			||||||
    { command: 'variable-conversion.toSpaceCamelCase', targetCase: SupportCase.SPACE_CAMEL_CASE },
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSnakeUpperCase',
 | 
				
			||||||
    { command: 'variable-conversion.toDotCase', targetCase: SupportCase.DOT_CASE },
 | 
					        targetCase: SupportCase.SNAKE_UPPER_CASE,
 | 
				
			||||||
    { command: 'variable-conversion.toDotUpperCase', targetCase: SupportCase.DOT_UPPER_CASE },
 | 
					        settingsKey: 'snake_upper_case'
 | 
				
			||||||
    { command: 'variable-conversion.toDotPascalCase', targetCase: SupportCase.DOT_PASCAL_CASE },
 | 
					    },
 | 
				
			||||||
    { command: 'variable-conversion.toDotCamelCase', targetCase: SupportCase.DOT_CAMEL_CASE },
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSnakePascalCase',
 | 
				
			||||||
    { command: 'variable-conversion.toLowerCase', targetCase: SupportCase.LOWER_CASE },
 | 
					        targetCase: SupportCase.SNAKE_PASCAL_CASE,
 | 
				
			||||||
    { command: 'variable-conversion.toUpperCase', targetCase: SupportCase.UPPER_CASE },
 | 
					        settingsKey: 'snake_pascal_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSnakeCamelCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.SNAKE_CAMEL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'snake_camel_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // +++++++++++++++++++++++++++++++++++++++++++++++
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toKebabCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.KEBAB_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toKebabUpperCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.KEBAB_UPPER_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_upper_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toKebabPascalCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.KEBAB_PASCAL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_pascal_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toKebabCamelCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.KEBAB_CAMEL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_camel_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // +++++++++++++++++++++++++++++++++++++++++++++++
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSpaceCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.SPACE_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'space_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSpaceUpperCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.SPACE_UPPER_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'space_upper_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSpacePascalCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.SPACE_PASCAL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'space_pascal_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toSpaceCamelCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.SPACE_CAMEL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'space_camel_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // +++++++++++++++++++++++++++++++++++++++++++++++
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toDotCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.DOT_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'dot_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toDotUpperCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.DOT_UPPER_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'dot_upper_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toDotPascalCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.DOT_PASCAL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'dot_pascal_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toDotCamelCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.DOT_CAMEL_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'dot_camel_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // +++++++++++++++++++++++++++++++++++++++++++++++
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toLowerCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.LOWER_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'lower_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        command: 'variable-conversion.toUpperCase',
 | 
				
			||||||
 | 
					        targetCase: SupportCase.UPPER_CASE,
 | 
				
			||||||
 | 
					        settingsKey: 'upper_case'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface QuickPickSupportCaseItem {
 | 
				
			||||||
 | 
					    type: SupportCase,
 | 
				
			||||||
 | 
					    name: string,
 | 
				
			||||||
 | 
					    shortName: string,
 | 
				
			||||||
 | 
					    keyword: string[],
 | 
				
			||||||
 | 
					    settingsKey: string,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 所有支持的命名方式
 | 
					 * 所有支持的命名方式
 | 
				
			||||||
 * @since 2024-04-06
 | 
					 * @since 2024-04-06
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export const quickPickSupportCases = [
 | 
					export const quickPickSupportCases: Array<QuickPickSupportCaseItem> = [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.CAMEL_CASE,
 | 
					        type: SupportCase.CAMEL_CASE,
 | 
				
			||||||
        name: '小驼峰(驼峰)命名',
 | 
					        name: '小驼峰(驼峰)命名',
 | 
				
			||||||
        shortName: '小驼峰',
 | 
					        shortName: '小驼峰',
 | 
				
			||||||
        keyword: keyword.camel,
 | 
					        keyword: keyword.camel,
 | 
				
			||||||
 | 
					        settingsKey: 'camel_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.PASCAL_CASE,
 | 
					        type: SupportCase.PASCAL_CASE,
 | 
				
			||||||
        name: '大驼峰(帕斯卡)命名',
 | 
					        name: '大驼峰(帕斯卡)命名',
 | 
				
			||||||
        shortName: '帕斯卡',
 | 
					        shortName: '帕斯卡',
 | 
				
			||||||
        keyword: keyword.pascal,
 | 
					        keyword: keyword.pascal,
 | 
				
			||||||
 | 
					        settingsKey: 'pascal_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SNAKE_CASE,
 | 
					        type: SupportCase.SNAKE_CASE,
 | 
				
			||||||
        name: '下划线(蛇形)命名',
 | 
					        name: '下划线(蛇形)命名',
 | 
				
			||||||
        shortName: '蛇形',
 | 
					        shortName: '蛇形',
 | 
				
			||||||
        keyword: [...keyword.snake, ...keyword.lower],
 | 
					        keyword: [...keyword.snake, ...keyword.lower],
 | 
				
			||||||
 | 
					        settingsKey: 'snake_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SNAKE_CAMEL_CASE,
 | 
					        type: SupportCase.SNAKE_CAMEL_CASE,
 | 
				
			||||||
        name: '下划线(蛇形) + 小驼峰(驼峰)命名',
 | 
					        name: '下划线(蛇形) + 小驼峰(驼峰)命名',
 | 
				
			||||||
        shortName: '蛇形驼峰',
 | 
					        shortName: '蛇形驼峰',
 | 
				
			||||||
        keyword: [...keyword.snake, ...keyword.camel],
 | 
					        keyword: [...keyword.snake, ...keyword.camel],
 | 
				
			||||||
 | 
					        settingsKey: 'snake_camel_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SNAKE_PASCAL_CASE,
 | 
					        type: SupportCase.SNAKE_PASCAL_CASE,
 | 
				
			||||||
        name: '下划线(蛇形) + 大驼峰(帕斯卡)命名',
 | 
					        name: '下划线(蛇形) + 大驼峰(帕斯卡)命名',
 | 
				
			||||||
        shortName: '蛇形帕斯卡',
 | 
					        shortName: '蛇形帕斯卡',
 | 
				
			||||||
        keyword: [...keyword.snake, ...keyword.pascal],
 | 
					        keyword: [...keyword.snake, ...keyword.pascal],
 | 
				
			||||||
 | 
					        settingsKey: 'snake_pascal_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SNAKE_UPPER_CASE,
 | 
					        type: SupportCase.SNAKE_UPPER_CASE,
 | 
				
			||||||
        name: '下划线(蛇形) + 全大写命名',
 | 
					        name: '下划线(蛇形) + 全大写命名',
 | 
				
			||||||
        shortName: '蛇形大写',
 | 
					        shortName: '蛇形大写',
 | 
				
			||||||
        keyword: [...keyword.snake, ...keyword.upper],
 | 
					        keyword: [...keyword.snake, ...keyword.upper],
 | 
				
			||||||
 | 
					        settingsKey: 'snake_upper_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.KEBAB_CASE,
 | 
					        type: SupportCase.KEBAB_CASE,
 | 
				
			||||||
        name: '中划线(连字符/脊柱式)命名',
 | 
					        name: '中划线(连字符/脊柱式)命名',
 | 
				
			||||||
        shortName: '脊柱',
 | 
					        shortName: '脊柱',
 | 
				
			||||||
        keyword: [...keyword.kebab, ...keyword.lower],
 | 
					        keyword: [...keyword.kebab, ...keyword.lower],
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.KEBAB_CAMEL_CASE,
 | 
					        type: SupportCase.KEBAB_CAMEL_CASE,
 | 
				
			||||||
        name: '中划线(连字符/脊柱式) + 小驼峰(驼峰)命名',
 | 
					        name: '中划线(连字符/脊柱式) + 小驼峰(驼峰)命名',
 | 
				
			||||||
        shortName: '脊柱驼峰',
 | 
					        shortName: '脊柱驼峰',
 | 
				
			||||||
        keyword: [...keyword.kebab, ...keyword.camel],
 | 
					        keyword: [...keyword.kebab, ...keyword.camel],
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_camel_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.KEBAB_PASCAL_CASE,
 | 
					        type: SupportCase.KEBAB_PASCAL_CASE,
 | 
				
			||||||
        name: '中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名',
 | 
					        name: '中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名',
 | 
				
			||||||
        shortName: '脊柱帕斯卡',
 | 
					        shortName: '脊柱帕斯卡',
 | 
				
			||||||
        keyword: [...keyword.kebab, ...keyword.pascal],
 | 
					        keyword: [...keyword.kebab, ...keyword.pascal],
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_pascal_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.KEBAB_UPPER_CASE,
 | 
					        type: SupportCase.KEBAB_UPPER_CASE,
 | 
				
			||||||
        name: '中划线(连字符/脊柱式) + 全大写命名',
 | 
					        name: '中划线(连字符/脊柱式) + 全大写命名',
 | 
				
			||||||
        shortName: '脊柱大写',
 | 
					        shortName: '脊柱大写',
 | 
				
			||||||
        keyword: [...keyword.kebab, ...keyword.upper],
 | 
					        keyword: [...keyword.kebab, ...keyword.upper],
 | 
				
			||||||
 | 
					        settingsKey: 'kebab_upper_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SPACE_CASE,
 | 
					        type: SupportCase.SPACE_CASE,
 | 
				
			||||||
        name: '空格分隔命名',
 | 
					        name: '空格分隔命名',
 | 
				
			||||||
        shortName: '脊柱',
 | 
					        shortName: '脊柱',
 | 
				
			||||||
        keyword: [...keyword.space, ...keyword.lower],
 | 
					        keyword: [...keyword.space, ...keyword.lower],
 | 
				
			||||||
 | 
					        settingsKey: 'space_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SPACE_CAMEL_CASE,
 | 
					        type: SupportCase.SPACE_CAMEL_CASE,
 | 
				
			||||||
        name: '空格分隔 + 小驼峰(驼峰)命名',
 | 
					        name: '空格分隔 + 小驼峰(驼峰)命名',
 | 
				
			||||||
        shortName: '脊柱驼峰',
 | 
					        shortName: '脊柱驼峰',
 | 
				
			||||||
        keyword: [...keyword.space, ...keyword.camel],
 | 
					        keyword: [...keyword.space, ...keyword.camel],
 | 
				
			||||||
 | 
					        settingsKey: 'space_camel_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SPACE_PASCAL_CASE,
 | 
					        type: SupportCase.SPACE_PASCAL_CASE,
 | 
				
			||||||
        name: '空格分隔 + 大驼峰(帕斯卡)命名',
 | 
					        name: '空格分隔 + 大驼峰(帕斯卡)命名',
 | 
				
			||||||
        shortName: '脊柱帕斯卡',
 | 
					        shortName: '脊柱帕斯卡',
 | 
				
			||||||
        keyword: [...keyword.space, ...keyword.pascal],
 | 
					        keyword: [...keyword.space, ...keyword.pascal],
 | 
				
			||||||
 | 
					        settingsKey: 'space_pascal_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.SPACE_UPPER_CASE,
 | 
					        type: SupportCase.SPACE_UPPER_CASE,
 | 
				
			||||||
        name: '空格分隔 + 全大写命名',
 | 
					        name: '空格分隔 + 全大写命名',
 | 
				
			||||||
        shortName: '脊柱大写',
 | 
					        shortName: '脊柱大写',
 | 
				
			||||||
        keyword: [...keyword.space, ...keyword.upper],
 | 
					        keyword: [...keyword.space, ...keyword.upper],
 | 
				
			||||||
 | 
					        settingsKey: 'space_upper_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.DOT_CASE,
 | 
					        type: SupportCase.DOT_CASE,
 | 
				
			||||||
        name: '点分隔命名',
 | 
					        name: '点分隔命名',
 | 
				
			||||||
        shortName: '脊柱',
 | 
					        shortName: '脊柱',
 | 
				
			||||||
        keyword: [...keyword.dot, ...keyword.lower],
 | 
					        keyword: [...keyword.dot, ...keyword.lower],
 | 
				
			||||||
 | 
					        settingsKey: 'dot_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.DOT_CAMEL_CASE,
 | 
					        type: SupportCase.DOT_CAMEL_CASE,
 | 
				
			||||||
        name: '点分隔 + 小驼峰(驼峰)命名',
 | 
					        name: '点分隔 + 小驼峰(驼峰)命名',
 | 
				
			||||||
        shortName: '脊柱驼峰',
 | 
					        shortName: '脊柱驼峰',
 | 
				
			||||||
        keyword: [...keyword.dot, ...keyword.camel],
 | 
					        keyword: [...keyword.dot, ...keyword.camel],
 | 
				
			||||||
 | 
					        settingsKey: 'dot_camel_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.DOT_PASCAL_CASE,
 | 
					        type: SupportCase.DOT_PASCAL_CASE,
 | 
				
			||||||
        name: '点分隔 + 大驼峰(帕斯卡)命名',
 | 
					        name: '点分隔 + 大驼峰(帕斯卡)命名',
 | 
				
			||||||
        shortName: '脊柱帕斯卡',
 | 
					        shortName: '脊柱帕斯卡',
 | 
				
			||||||
        keyword: [...keyword.dot, ...keyword.pascal],
 | 
					        keyword: [...keyword.dot, ...keyword.pascal],
 | 
				
			||||||
 | 
					        settingsKey: 'dot_pascal_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.DOT_UPPER_CASE,
 | 
					        type: SupportCase.DOT_UPPER_CASE,
 | 
				
			||||||
        name: '点分隔 + 全大写命名',
 | 
					        name: '点分隔 + 全大写命名',
 | 
				
			||||||
        shortName: '脊柱大写',
 | 
					        shortName: '脊柱大写',
 | 
				
			||||||
        keyword: [...keyword.dot, ...keyword.upper],
 | 
					        keyword: [...keyword.dot, ...keyword.upper],
 | 
				
			||||||
 | 
					        settingsKey: 'dot_upper_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.LOWER_CASE,
 | 
					        type: SupportCase.LOWER_CASE,
 | 
				
			||||||
        name: '全小写',
 | 
					        name: '全小写',
 | 
				
			||||||
        shortName: '小写',
 | 
					        shortName: '小写',
 | 
				
			||||||
        keyword: keyword.lower,
 | 
					        keyword: keyword.lower,
 | 
				
			||||||
 | 
					        settingsKey: 'lower_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        type: SupportCase.UPPER_CASE,
 | 
					        type: SupportCase.UPPER_CASE,
 | 
				
			||||||
        name: '全大写',
 | 
					        name: '全大写',
 | 
				
			||||||
        shortName: '大写',
 | 
					        shortName: '大写',
 | 
				
			||||||
        keyword: keyword.upper,
 | 
					        keyword: keyword.upper,
 | 
				
			||||||
 | 
					        settingsKey: 'upper_case',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface CyclicConvertCaseOrderItem {
 | 
				
			||||||
 | 
					    type: SupportCase,
 | 
				
			||||||
 | 
					    settingsKey: string,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 通过快捷键循环转换的顺序
 | 
					 * 通过快捷键循环转换的顺序
 | 
				
			||||||
 * @since 2024-04-08
 | 
					 * @since 2024-04-08
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export const cyclicConvertCaseOrder = [
 | 
					export const cyclicConvertCaseOrder: Array<CyclicConvertCaseOrderItem> = [
 | 
				
			||||||
    SupportCase.CAMEL_CASE,
 | 
					    { type: SupportCase.CAMEL_CASE, settingsKey: 'camel_case' },
 | 
				
			||||||
    SupportCase.SNAKE_CASE,
 | 
					    { type: SupportCase.SNAKE_CASE, settingsKey: 'snake_case' },
 | 
				
			||||||
    SupportCase.PASCAL_CASE,
 | 
					    { type: SupportCase.PASCAL_CASE, settingsKey: 'pascal_case' },
 | 
				
			||||||
    SupportCase.KEBAB_CASE,
 | 
					    { type: SupportCase.KEBAB_CASE, settingsKey: 'kebab_case' },
 | 
				
			||||||
    SupportCase.SPACE_CASE,
 | 
					    { type: SupportCase.SPACE_CASE, settingsKey: 'space_case' },
 | 
				
			||||||
    SupportCase.DOT_CASE,
 | 
					    { type: SupportCase.DOT_CASE, settingsKey: 'dot_case' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SupportCase.SNAKE_UPPER_CASE,
 | 
					    { type: SupportCase.SNAKE_UPPER_CASE, settingsKey: 'snake_upper_case' },
 | 
				
			||||||
    SupportCase.KEBAB_UPPER_CASE,
 | 
					    { type: SupportCase.KEBAB_UPPER_CASE, settingsKey: 'kebab_upper_case' },
 | 
				
			||||||
    SupportCase.SPACE_UPPER_CASE,
 | 
					    { type: SupportCase.SPACE_UPPER_CASE, settingsKey: 'space_upper_case' },
 | 
				
			||||||
    SupportCase.DOT_UPPER_CASE,
 | 
					    { type: SupportCase.DOT_UPPER_CASE, settingsKey: 'dot_upper_case' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SupportCase.SNAKE_PASCAL_CASE,
 | 
					    { type: SupportCase.SNAKE_PASCAL_CASE, settingsKey: 'snake_pascal_case' },
 | 
				
			||||||
    SupportCase.KEBAB_PASCAL_CASE,
 | 
					    { type: SupportCase.KEBAB_PASCAL_CASE, settingsKey: 'kebab_pascal_case' },
 | 
				
			||||||
    SupportCase.SPACE_PASCAL_CASE,
 | 
					    { type: SupportCase.SPACE_PASCAL_CASE, settingsKey: 'space_pascal_case' },
 | 
				
			||||||
    SupportCase.DOT_PASCAL_CASE,
 | 
					    { type: SupportCase.DOT_PASCAL_CASE, settingsKey: 'dot_pascal_case' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SupportCase.SNAKE_CAMEL_CASE,
 | 
					    { type: SupportCase.SNAKE_CAMEL_CASE, settingsKey: 'snake_camel_case' },
 | 
				
			||||||
    SupportCase.KEBAB_CAMEL_CASE,
 | 
					    { type: SupportCase.KEBAB_CAMEL_CASE, settingsKey: 'kebab_camel_case' },
 | 
				
			||||||
    SupportCase.SPACE_CAMEL_CASE,
 | 
					    { type: SupportCase.SPACE_CAMEL_CASE, settingsKey: 'space_camel_case' },
 | 
				
			||||||
    SupportCase.DOT_CAMEL_CASE,
 | 
					    { type: SupportCase.DOT_CAMEL_CASE, settingsKey: 'dot_camel_case' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SupportCase.LOWER_CASE,
 | 
					    { type: SupportCase.LOWER_CASE, settingsKey: 'lower_case' },
 | 
				
			||||||
    SupportCase.UPPER_CASE,
 | 
					    { type: SupportCase.UPPER_CASE, settingsKey: 'upper_case' },
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								test-code.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								test-code.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					```javascript
 | 
				
			||||||
 | 
					// 小驼峰
 | 
				
			||||||
 | 
					const helloWorld = ''
 | 
				
			||||||
 | 
					// 大驼峰
 | 
				
			||||||
 | 
					const HelloWorld = ''
 | 
				
			||||||
 | 
					// 下划线 + 首字母大写
 | 
				
			||||||
 | 
					const Hello_World = ''
 | 
				
			||||||
 | 
					// 下划线 + 全小写
 | 
				
			||||||
 | 
					const hello_world = ''
 | 
				
			||||||
 | 
					// 下划线 + 全大写
 | 
				
			||||||
 | 
					const HELLO_WORLD = ''
 | 
				
			||||||
 | 
					// 小写
 | 
				
			||||||
 | 
					const helloworld = ''
 | 
				
			||||||
 | 
					// 大写
 | 
				
			||||||
 | 
					const HELLOWORLD = ''
 | 
				
			||||||
 | 
					// 加空格
 | 
				
			||||||
 | 
					const a = 'hello world'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user