private/DirStackCompleter.ps1
function CompleteStack($wordToComplete, $direction) { $stack = if ($direction -eq '+') {Get-Stack -Redo} else {Get-Stack -Undo} if (-not $stack) { return } $numberedStack = @{} 1..$stack.Length |% { $numberedStack[$_] = $stack[$_ - 1] } $numberedStack.GetEnumerator() | Where {$_.Value -match $wordToComplete} | Select -Unique -Property Value | % { New-Object Management.Automation.CompletionResult $_, "$($_.Key) $($_.Value)" , 'ParameterValue', $_ } } function RegisterStackCompletion() { Register-ArgumentCompleter -CommandName 'Undo-Location' -ParameterName 'n' -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $boundParameters) CompleteStack $wordToComplete '-' } Register-ArgumentCompleter -CommandName 'Redo-Location' -ParameterName 'n' -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $boundParameters) CompleteStack $wordToComplete '+' } } |