Private/Completers.ps1
|
# PSSnips — Tab-completion registrations for snippet name parameters. # Tab-completion for snippet names on all relevant commands. $snipNameCompleter = { param($cmd, $param, $word) $null = $cmd, $param $now = Get-Date if ($null -eq $script:CompleterCache -or ($now - $script:CompleterCacheTime).TotalSeconds -gt $script:CompleterTtlSecs) { $script:CompleterCache = (script:LoadIdx).snippets.Keys | Sort-Object $script:CompleterCacheTime = $now } $script:CompleterCache | Where-Object { $_ -like "$word*" } } Register-ArgumentCompleter -CommandName 'Invoke-SnipCLI','snip','Show-Snip','Edit-Snip','Invoke-Snip','Remove-Snip','Copy-Snip','Export-Gist','Sync-Gist','Set-SnipTag','Invoke-SnipLint','Test-SnipLint' -ParameterName Name -ScriptBlock $snipNameCompleter Register-ArgumentCompleter -CommandName 'Invoke-SnipCLI','snip' -ParameterName Arg1 -ScriptBlock $snipNameCompleter Register-ArgumentCompleter -CommandName 'Get-Snip' -ParameterName 'Namespace' -ScriptBlock { param($commandName, $paramName, $wordToComplete, $commandAst, $fakeBoundParams) $null = $commandName, $paramName, $commandAst, $fakeBoundParams script:InitEnv $idx = script:LoadIdx $idx.snippets.Keys | Where-Object { $_ -match '/' } | ForEach-Object { ($_ -split '/')[0] } | Sort-Object -Unique | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) } } |