PowerShell / vscode-powershell

Provides PowerShell language and debugging support for Visual Studio Code
https://marketplace.visualstudio.com/items/ms-vscode.PowerShell
MIT License
1.71k stars 488 forks source link

Auto expansion for alias commands. #496

Open ww40 opened 7 years ago

ww40 commented 7 years ago

A common factor in providing help and reviewing PowerShell scripts in general we find veterans who will use alias's for common commands such as %(ForEach-Object), cls(Clear-Host), ri(Remove-Item), mi(Move-Item, CD(Set-Location)....I'm sure you see where i'm going with this.

What if upon saving your solution there would be an option to automatically convert all the alias commands into their full commands to save time on converting documents into more readable documents for future use/reviews.

Could this be something you could implement?

daviwil commented 7 years ago

We could definitely enable "expand aliases on save" and put it behind a setting so that it can be turned on per-workspace.

daviwil commented 7 years ago

@kapilmb wanna give this a shot for 0.11.0?

kapilmb commented 7 years ago

This looks like a special case of #417. Sure, we can get target it for 0.11.0.

rkeithhill commented 7 years ago

Please do not enable it by default. I think this needs to be "opt-in".

daviwil commented 7 years ago

Yeah, enabling by default would not be the desired behavior.

eweilnau commented 7 years ago

It might be nice to allow configuration to include or exclude aliases from this expansion. I know several people in the community who are against expanding *-object aliases (i.e. select, where)

daviwil commented 7 years ago

Luckily Kapil has already satisfied your request :)

https://github.com/PowerShell/PSScriptAnalyzer/blob/development/RuleDocumentation/AvoidAlias.md#alias-whitelist

daviwil commented 7 years ago

Might be worth having a blacklist too, though. A whitelist will be harder to maintain.

rkeithhill commented 7 years ago

several people in the community who are against expanding *-object aliases

I was one of those folks until PowerShell went cross platform where sort is a native util and PowerShell Core does not provide sort as an alias to Sort-Object. Now I'm firmly in the camp of expanding *-Object.

eweilnau commented 7 years ago

I see this as part of (or at least similar to) formatting in which more configuration is better because consensus is (nearly) impossible.

Jaykul commented 7 years ago

I just wish tab-expansion would offer to change cd to Set-Location...

daviwil commented 7 years ago

@Jaykul: what would be the desired flow for that? You type cd and you get Set-Location as a completion option? Or you type cd and hit tab and it turns into Set-Location?

jagrock commented 7 years ago

For me, the completion option by default and a setting to enable the tab turns into on/off.

pcgeek86 commented 7 years ago

I would make the original request into something more broad, where you run an entire set of customizable PSScriptAnalyzer rules against the entire VSCode workspace, triggered by certain events (eg. Files: Save All). The PowerShell extension could have a configurable setting to point to the path of an array of PSScriptAnalyzer rule manifests, relative to the workspace path.

RickFlist commented 7 years ago

Hi all,

Has this been released? If not is there a date?

daviwil commented 7 years ago

@RickFlist try the "PowerShell: Expand Alias" command, that should work for now.

RickFlist commented 7 years ago

That's what I'm using now. Thanks

TylerLeonhardt commented 6 years ago

Doing some issue clean up. How are we feeling about this? Are we at a point where we can close it? The "PowerShell: Expand Alias" command works really well.

Or are we interested in an opt-in feature to turn on expanding aliases on save?

pcgeek86 commented 6 years ago

@tylerl0706 bigger fish to fry at the moment. I'd say close it.

nlupica1 commented 6 years ago

Some people want this feature. Just set it to false by default, but give people the option to enable it. We already have "editor.formatOnSave"-- why not add "editor.expandAliasOnSave"?