any-rule/src/useCommand.ts

38 lines
1.6 KiB
TypeScript
Raw Normal View History

2020-02-22 01:08:31 +08:00
import {window,version,commands,Range,ExtensionContext,extensions} from "vscode";
2020-02-21 01:17:23 +08:00
import { Rule } from './interface';
2020-02-22 01:08:31 +08:00
import inserLog from './inserLog';
export default function (context: ExtensionContext, RULES: Rule[]) {
2020-02-21 01:17:23 +08:00
RULES.forEach(({ title, rule }, index) => {
2020-02-22 01:08:31 +08:00
let disposable = commands.registerCommand(`extension.rule${index}`, () => {
const editor = window.activeTextEditor;
2020-02-21 01:17:23 +08:00
if (editor) {
const { selections } = editor;
editor.edit(editBuilder => {
selections.forEach(selection => {
const { start, end } = selection;
2020-02-22 01:08:31 +08:00
const range = new Range(start, end);
2020-02-21 01:17:23 +08:00
editBuilder.replace(range, String(rule));
});
});
2020-02-22 01:08:31 +08:00
// 日志
const language = window.activeTextEditor ? window.activeTextEditor.document.languageId as string : '';
const e = extensions.getExtension('russell.any-rule')
inserLog({
vscodeVersion: version,
language,
rule: String(rule),
title,
extensionVersion: e && e.packageJSON.version,
method: 'Command'
});
window.showInformationMessage(`已插入正则: ${title}`);
2020-02-21 01:17:23 +08:00
} else {
2020-02-22 01:08:31 +08:00
window.showWarningMessage('any-rule: 只有在编辑文本的时候才可以使用!');
2020-02-21 01:17:23 +08:00
}
});
context.subscriptions.push(disposable);
});
}