Skip to content

Commit 3e6aaa3

Browse files
committed
Merge pull request #41 from PowerShell/dfinke/expandAlias
Add "Expand Alias" command
2 parents 12e91cf + e92d2dc commit 3e6aaa3

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

package.json

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,29 @@
3838
"compile": "node ./node_modules/vscode/bin/compile -watch -p ./"
3939
},
4040
"contributes": {
41-
"keybindings": [
41+
"keybindings": [
4242
{
4343
"command": "PowerShell.OnlineHelp",
4444
"key": "ctrl+f1",
4545
"when": "editorTextFocus && editorLangId == 'powershell'"
4646
},
47+
{
48+
"command": "PowerShell.ExpandAlias",
49+
"key": "ctrl+f5",
50+
"when": "editorTextFocus && editorLangId == 'powershell'"
51+
},
4752
{
4853
"command": "PowerShell.RunSelection",
4954
"key": "f8",
5055
"when": "editorTextFocus && editorLangId == 'powershell'"
5156
}
5257
],
53-
"commands": [
58+
"commands": [
59+
{
60+
"command": "PowerShell.ExpandAlias",
61+
"title": "Expand Alias",
62+
"category": "PowerShell"
63+
},
5464
{
5565
"command": "PowerShell.OnlineHelp",
5666
"title": "Get online help for command",

src/features/ExpandAlias.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import vscode = require('vscode');
2+
import { LanguageClient } from 'vscode-languageclient';
3+
import { RequestType, NotificationType, ResponseError } from 'vscode-jsonrpc';
4+
import Window = vscode.window;
5+
6+
export namespace ExpandAliasRequest {
7+
export const type: RequestType<string, any, void> = { get method() { return 'powerShell/expandAlias'; } };
8+
}
9+
10+
export function registerExpandAliasCommand(client: LanguageClient): void {
11+
var disposable = vscode.commands.registerCommand('PowerShell.ExpandAlias', () => {
12+
13+
var editor = Window.activeTextEditor;
14+
var document = editor.document;
15+
var selection = editor.selection;
16+
var text, range;
17+
18+
var sls = selection.start;
19+
var sle = selection.end;
20+
21+
if(
22+
(sls.character === sle.character ) &&
23+
(sls.line === sle.line)
24+
) {
25+
text = document.getText();
26+
range = new vscode.Range(0, 0, document.lineCount, text.length);
27+
} else {
28+
text = document.getText(selection);
29+
range = new vscode.Range(sls.line, sls.character, sle.line, sle.character);
30+
}
31+
32+
client.sendRequest(ExpandAliasRequest.type, text).then((result) => {
33+
editor.edit((editBuilder) => {
34+
editBuilder.replace(range, result);
35+
});
36+
});
37+
});
38+
}

src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import settingsManager = require('./settings');
1010
import { LanguageClient, LanguageClientOptions, Executable } from 'vscode-languageclient';
1111

1212
import { RequestType, NotificationType, ResponseError } from 'vscode-jsonrpc';
13+
import { registerExpandAliasCommand } from './features/ExpandAlias';
1314
import { registerShowHelpCommand } from './features/ShowOnlineHelp';
1415
import { registerConsoleCommands } from './features/Console';
1516

@@ -95,6 +96,7 @@ export function activate(context: vscode.ExtensionContext): void {
9596
client.start();
9697

9798
// Register other features
99+
registerExpandAliasCommand(client);
98100
registerShowHelpCommand(client);
99101
registerConsoleCommands(client);
100102
}

0 commit comments

Comments
 (0)