37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
'use strict';
|
|
|
|
import * as VSCode from 'vscode';
|
|
import { Position } from 'vscode-languageclient';
|
|
|
|
|
|
|
|
export function registerCommands(context: VSCode.ExtensionContext) {
|
|
VSCode.commands.getCommands(false).then(commands => {
|
|
if (!commandExists(commands, "sts.open.url")) {
|
|
registerOpenUrl(context, "sts.open.url");
|
|
}
|
|
|
|
if (!commandExists(commands, "sts.showHoverAtPosition")) {
|
|
registerShowHoverAtPosition(context, "sts.showHoverAtPosition");
|
|
}
|
|
});
|
|
}
|
|
|
|
function registerOpenUrl(context: VSCode.ExtensionContext, commandId: string) {
|
|
context.subscriptions.push(VSCode.commands.registerCommand(commandId, (url) => {
|
|
VSCode.commands.executeCommand('vscode.open', VSCode.Uri.parse(url))
|
|
}));
|
|
}
|
|
|
|
function registerShowHoverAtPosition(context: VSCode.ExtensionContext, commandId: string) {
|
|
VSCode.commands.registerCommand(commandId, (position: Position) => {
|
|
const editor = VSCode.window.activeTextEditor;
|
|
const vsPosition = new VSCode.Position(position.line, position.character);
|
|
editor.selection = new VSCode.Selection(vsPosition, vsPosition);
|
|
VSCode.commands.executeCommand('editor.action.showHover');
|
|
});
|
|
}
|
|
|
|
function commandExists(commands: string[], commandId: string) {
|
|
return commands.indexOf(commandId) >= 0;
|
|
} |