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"触发.
+- 增加右键唤醒正则菜单.
+
+
### 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. **输入关键词搜索**, 比如"手机".
-
+1. 按**F1**(mac下fn+F1)打开正则列表.
+2. **输入关键词搜索**, 比如"手机".
+
+
**方式2:**
-1. 在代码的任意位置输入"**zz.**"弹出正则列表.
-2. **输入关键词搜索**, 比如"手机".
+右键选择"🦕正则大全".
-
+
-## 🦕图解正则
-在vscode中选择正则后, 可点击"🦕图解正则".
+**方式3:**
-
+在代码任意位置输入"**@zz**".
+
+
+
+
+## 🤖图解正则
+
+查看详情
+在vscode中选择正则后, 可点击"🤖图解正则".
+
+
点击后可以看到正则解析, 方便大家学习.
-
+
**注意**: 图解直接使用了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. **输入关键词搜索**, 比如"手机".
-
+1. 按**F1**(mac下fn+F1)打开正则列表.
+2. **输入关键词搜索**, 比如"手机".
+
+
**方式2:**
-1. 在代码的任意位置输入"**zz.**"弹出正则列表.
-2. **输入关键词搜索**, 比如"手机".
+右键选择"🦕正则大全".
-
+
-## 🦕图解正则
-在vscode中选择正则后, 可点击"🦕图解正则".
+**方式3:**
-
+在代码任意位置输入"**@zz**".
+
+
+
+
+## 🤖图解正则
+
+查看详情
+在vscode中选择正则后, 可点击"🤖图解正则".
+
+
点击后可以看到正则解析, 方便大家学习.
-
+
**注意**: 图解直接使用了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: '*'
}
}