diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a0c063..846ffca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # 更新日志 🚀 [提交问题](https://github.com/any86/any-rule/issues/new) +### 0.3.0 (2020-02-28) +- 修改"zz."触发为"@zz"触发. +- 增加右键唤醒正则菜单. +![](https://user-gold-cdn.xitu.io/2020/2/28/1708764046b38231?w=381&h=413&f=png&s=73047) + ### 0.2.0 (2020-02-21) - 优化"zz."体验, 改用"quickPick"组件以支持"模糊搜索". diff --git a/README.md b/README.md index 46e1588..b34d60f 100644 --- a/README.md +++ b/README.md @@ -11,29 +11,38 @@ vscode应用商店中搜索"**any-rule**". ### 使用 **方式1:** -1. 安装完毕后按**F1**(或者ctrl+shift+p). -2. 输入"**zz**"弹出正则列表. -3. **输入关键词搜索**, 比如"手机". -![预览gif](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) +1. 按**F1**(mac下fn+F1)打开正则列表. +2. **输入关键词搜索**, 比如"手机". + +![预览图](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) **方式2:** -1. 在代码的任意位置输入"**zz.**"弹出正则列表. -2. **输入关键词搜索**, 比如"手机". +右键选择"🦕正则大全". -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199) +![](https://user-gold-cdn.xitu.io/2020/2/28/17087735718cca3b?w=389&h=400&f=png&s=55934) -## 🦕图解正则 -在vscode中选择正则后, 可点击"🦕图解正则". +**方式3:** -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) +在代码任意位置输入"**@zz**". + + +![预览图](https://user-gold-cdn.xitu.io/2020/2/28/17089999afc7a21c?w=722&h=408&f=gif&s=299355) + +## 🤖图解正则 +
+查看详情 +在vscode中选择正则后, 可点击"🤖图解正则". + +![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) 点击后可以看到正则解析, 方便大家学习. -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) +![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) **注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢. +
## :fire:关于PR 欢迎大家PR, 步骤如下: diff --git a/package.json b/package.json index 6b17e86..f88e4b5 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publisher": "russell", "displayName": "any-rule", "description": "你要的\"正则\"都在这!", - "version": "0.2.0", + "version": "0.3.0", "scripts": { "build:md": "node ./scripts/md.js", "build": "npm run test:rules && npm version patch && node ./scripts/genCommond.js && vsce package && npm run build:md", @@ -37,18 +37,22 @@ "type": "object", "title": "any-rule", "properties": { - "AnyRule.triggerString": { + "any-rule.triggerString": { "type": "string", - "default": "zz.", + "default": "@zz", "description": "触发字符串" - }, - "AnyRule.supportedLanguages": { - "type": "string", - "default": "*, javascript, typescript, javascriptreact, typescriptreact, markdown, jsx, vue, html, json, plaintext, coffeescript", - "description": "如果您的文件格式未被支持, 请在此处添加(⚡添加成功后需要重启vscode)" } } }, + "menus": { + "editor/context": [ + { + "when": "editorFocus", + "command": "extension.rule.callByMenu", + "group": "navigation" + } + ] + }, "commands": [ { "command": "extension.rule0", @@ -293,6 +297,10 @@ { "command": "extension.rule60", "title": "$(rocket) zz: java包名" + }, + { + "command": "extension.rule.callByMenu", + "title": "🦕正则大全(61条)" } ] }, diff --git a/scripts/genCommond.js b/scripts/genCommond.js index ec87a02..ccab154 100644 --- a/scripts/genCommond.js +++ b/scripts/genCommond.js @@ -9,6 +9,11 @@ pkg.contributes.commands = RULES.map((rule, index) => ({ title: `$(rocket) zz: ${rule.title}` })); +pkg.contributes.commands.push({ + command: 'extension.rule.callByMenu', + title: `🦕正则大全(${RULES.length}条)` +}); + // console.log(JSON.stringify(pkg)); fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 4), 'utf8'); console.log(chalk.green('🚀 pkg文件修改完毕, 请等待生成vsc包...')); \ No newline at end of file diff --git a/scripts/md.js b/scripts/md.js index 96dcd2e..1ed7f57 100644 --- a/scripts/md.js +++ b/scripts/md.js @@ -35,29 +35,38 @@ vscode应用商店中搜索"**any-rule**". ### 使用 **方式1:** -1. 安装完毕后按**F1**(或者ctrl+shift+p). -2. 输入"**zz**"弹出正则列表. -3. **输入关键词搜索**, 比如"手机". -![预览gif](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) +1. 按**F1**(mac下fn+F1)打开正则列表. +2. **输入关键词搜索**, 比如"手机". + +![预览图](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) **方式2:** -1. 在代码的任意位置输入"**zz.**"弹出正则列表. -2. **输入关键词搜索**, 比如"手机". +右键选择"🦕正则大全". -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199) +![](https://user-gold-cdn.xitu.io/2020/2/28/17087735718cca3b?w=389&h=400&f=png&s=55934) -## 🦕图解正则 -在vscode中选择正则后, 可点击"🦕图解正则". +**方式3:** -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) +在代码任意位置输入"**@zz**". + + +![预览图](https://user-gold-cdn.xitu.io/2020/2/28/17089999afc7a21c?w=722&h=408&f=gif&s=299355) + +## 🤖图解正则 +
+查看详情 +在vscode中选择正则后, 可点击"🤖图解正则". + +![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) 点击后可以看到正则解析, 方便大家学习. -![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) +![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) **注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢. +
## :fire:关于PR 欢迎大家PR, 步骤如下: diff --git a/src/extension.ts b/src/extension.ts index 0148e63..dfbe775 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,10 +6,12 @@ import { const RULES: { title: string, rule: RegExp, examples: string[] }[] = require('../packages/www/src/RULES.js'); import useCommand from './useCommand'; import useQuickPick from './useQuickPick'; +import useMenuCommand from './useMenuCommand'; export function activate(context: ExtensionContext) { useCommand(context, RULES); useQuickPick(context, RULES); + useMenuCommand(context, RULES); } export function deactivate() { } diff --git a/src/showResultMessage.ts b/src/showResultMessage.ts index e3e824a..528d0d5 100644 --- a/src/showResultMessage.ts +++ b/src/showResultMessage.ts @@ -2,8 +2,8 @@ import { extensions, window, version, env, Uri, languages } from 'vscode'; import { getCodeLanguage, getExtensionVersion } from './shared' import insertLog from './insertLog'; -const BUTTON_FEEDBACK = '🚀反馈问题'; -const BUTTON_DIAGRAMMATIZE = '🦕图解正则'; +const BUTTON_FEEDBACK = '✋意见反馈'; +const BUTTON_DIAGRAMMATIZE = '🤖图解正则'; const BUTTON_CANCEL = '关闭'; export default function (title: string, rule: string): void { diff --git a/src/useMenuCommand.ts b/src/useMenuCommand.ts new file mode 100644 index 0000000..f80df3d --- /dev/null +++ b/src/useMenuCommand.ts @@ -0,0 +1,55 @@ +import { window, commands, Range, ExtensionContext } from "vscode"; +import { Rule } from './interface'; +import insertLog from './insertLog'; +import showResultMessage from './showResultMessage'; + +export default function (context: ExtensionContext, RULES: Rule[]) { + + const disposable = commands.registerCommand(`extension.rule.callByMenu`, () => { + // showQuickPick + window.showQuickPick(RULES.map(({ examples, title, rule }) => { + // const match = title.match(/\((.+)\)/); + return { + label: title, + // description: null !== match ? match[1] : '', + rule: String(rule), // 非标准字段, 仅仅为了传值 + detail: `例如: ${examples.join(' 或 ')}` + }; + }), { + placeHolder: '请输入关键词', + // onDidSelectItem(item){ + // console.log(item) + // } + }).then(item => { + if (!item) return + + const editor = window.activeTextEditor; + if (editor) { + const ruleString = String(item.rule); + const title = item.label; + const { selections } = editor; + + editor.edit(editBuilder => { + selections.forEach(selection => { + const { start, end } = selection; + const range = new Range(start, end); + editBuilder.replace(range, ruleString); + }); + }); + + // 日志 + insertLog({ + rule: ruleString, + title, + method: 'Menu' + }); + + showResultMessage(title, ruleString); + } + + }); + + + }); + context.subscriptions.push(disposable); +} \ No newline at end of file diff --git a/src/useQuickPick.ts b/src/useQuickPick.ts index c50384c..cea65e0 100644 --- a/src/useQuickPick.ts +++ b/src/useQuickPick.ts @@ -43,7 +43,7 @@ export default function (context: ExtensionContext, RULES: Rule[]) { title: item.label, method: 'QuickPick' }); - showResultMessage(item.label,item.rule); + showResultMessage(item.label, item.rule); }); }, 10) return []; @@ -81,12 +81,12 @@ function insertRule(document: TextDocument, position: Position, ruleString: stri // 获取配置 function getConfig() { const configuration = workspace.getConfiguration(); - const { triggerString, supportedLanguages = '*' } = configuration.AnyRule; + const { triggerString } = configuration.AnyRule; const { length } = triggerString; const triggerStringStart = triggerString.substr(0, length - 1); const triggerStringEnd = triggerString.substr(-1); return { - triggerStringStart, triggerStringEnd, triggerString, supportedLanguages + triggerStringStart, triggerStringEnd, triggerString, supportedLanguages: '*' } }