PSReadline.psm1
[bool]$firstTime = $true # # .SYNOPSIS # # This function is called by the console host when reading input to execute commands. # function PSConsoleHostReadline { if ($firstTime) { # This initialization is delayed until the first call so that # a profile with something like: # # ipmo PSReadline # Set-PSReadlineOption -HistorySaveStyle ?????? # # PSReadline will then handle the history choice in a reasonable way # regardless of the style. $script:firstTime = $false $options = [PSConsoleUtilities.PSConsoleReadLine]::GetOptions() # Honor $MaximumHistoryCount, but get it safely in case it was removed in the profile. $MaximumHistoryCount = Get-Variable -ea Ignore -ValueOnly MaximumHistoryCount if ($MaximumHistoryCount -gt 0) { $options.MaximumHistoryCount = $MaximumHistoryCount [PSConsoleUtilities.PSConsoleReadLine]::SetOptions($options) } if ($options.HistorySaveStyle -eq [PSConsoleUtilities.HistorySaveStyle]::SaveNothing) { # PSReadline isn't saving history, but we might still have history to reuse Get-History | ForEach-Object { [PSConsoleUtilities.PSConsoleReadLine]::AddToHistory($_.CommandLine) } } } # PSHost doesn't expose it's runspace. The InternalHost does, but that won't # work for arbitrary hosts, so we turn off strict mode. Set-StrictMode -Off $remoteRunspace = if ($host.IsRunspacePushed) { $host.Runspace } else { $null } [PSConsoleUtilities.PSConsoleReadLine]::ReadLine($remoteRunspace, $ExecutionContext) } |