Cleanup of basics to work in Win + fixes to bugs

This commit is contained in:
lksz@work 2021-04-07 16:04:46 -04:00
parent b558edacd9
commit b303fa0f88
3 changed files with 91 additions and 55 deletions

View file

@ -1,31 +1,44 @@
[CmdletBinding(SupportsShouldProcess)]param(
[switch]$sudo,
[Parameter(Position = 0, ValueFromRemainingArguments = $true)]
[Parameter(Position = 0, ValueFromPipeline, ValueFromRemainingArguments = $true)]
[string[]]$Path
)
$local:editors = $env:EDITOR,'nvim','code'
$local:editor = $null
foreach( $local:testEditor in $editors ) {
if( $(try{Get-Command -Type Application $testEditor -ErrorAction SilentlyContinue}catch{}) ) {
$editor = $testEditor
break;
begin {
$PathForEditor = @()
}
process {
foreach( $local:P in $Path ) {
$PathForEditor += $P | Get-Path -Expand
}
}
if( $editor -match 'vim?$' ) {
$editor += ' -p'
}
if( $editor -match 'code(\.exe)?$' ) {
if( -not (Get-Process -Name 'code' -ErrorAction SilentlyContinue) ) {
Invoke-ExpressionEx -sudo:$sudo $editor
end {
$local:editors = $env:EDITOR,'nvim','code'
$local:editor = $null
foreach( $local:testEditor in $editors ) {
if( $(try{Get-Command -Type Application $testEditor -ErrorAction SilentlyContinue}catch{}) ) {
$editor = $testEditor
break;
}
}
}
$local:arguments = $Path | Get-Path -Expand | Join-String -Separator "' '"
if( $Path ) { $arguments = "'$arguments'" }
if( $PSCmdlet.ShouldProcess( "Edit ($editor): $arguments" ) ) {
Invoke-ExpressionEx -sudo:$sudo $editor "$arguments"
}
if( $editor -match 'vim?$' ) {
$editor += ' -p'
}
if( $editor -match 'code(\.exe)?$' ) {
if( -not (Get-Process -Name 'code' -ErrorAction SilentlyContinue) ) {
Invoke-ExpressionEx -sudo:$sudo $editor
}
}
Write-Verbose $($Path | Out-String)
$local:arguments = $PathForEditor | Foreach-Object { "'$_'" }
if( $Path ) { $arguments = "$arguments" }
if( $PSCmdlet.ShouldProcess( "Edit ($editor): $arguments" ) ) {
Invoke-ExpressionEx -sudo:$sudo $editor "$arguments"
}
}