mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
65 lines
1.7 KiB
PowerShell
65 lines
1.7 KiB
PowerShell
function Save-HistoryAll() {
|
|
$history = Get-History -Count $MaximumHistoryCount
|
|
[array]::Reverse($history)
|
|
$history = $history | Group CommandLine | Foreach {$_.Group[0]}
|
|
[array]::Reverse($history)
|
|
$history | Export-Csv $historyPath
|
|
}
|
|
|
|
function Save-HistoryIncremental() {
|
|
# Get-History -Count $MaximumHistoryCount | Group CommandLine | Foreach {$_.Group[0]} | Export-Csv $historyPath
|
|
Get-History -Count 1 | Export-Csv -Append $historyPath
|
|
}
|
|
|
|
# hook powershell's exiting event & hide the registration with -supportevent.
|
|
#Register-EngineEvent -SourceIdentifier powershell.exiting -SupportEvent -Action { Save-History }
|
|
|
|
$oldPrompt = Get-Content function:\prompt
|
|
|
|
if( $oldPrompt -notlike '*Save-HistoryIncremental*' )
|
|
{
|
|
$newPrompt = @'
|
|
Save-HistoryIncremental
|
|
|
|
'@
|
|
$newPrompt += $oldPrompt
|
|
$function:prompt = [ScriptBlock]::Create($newPrompt)
|
|
}
|
|
|
|
# load previous history, if it exists
|
|
if ((Test-Path $historyPath)) {
|
|
$loadTime =
|
|
(
|
|
Measure-Command {
|
|
Import-Csv $historyPath | Add-History
|
|
Save-HistoryAll
|
|
Clear-History
|
|
Import-Csv $historyPath | ? {$count++;$true} | Add-History
|
|
}
|
|
).totalseconds
|
|
Write-Host -Fore Green "`nLoaded $count history item(s) in $loadTime seconds.`n"
|
|
}
|
|
|
|
|
|
function Search-History()
|
|
{
|
|
<#
|
|
.SYNOPSIS
|
|
Retrive and filter history based on query
|
|
.DESCRIPTION
|
|
.PARAMETER Name
|
|
.EXAMPLE
|
|
.LINK
|
|
#>
|
|
|
|
param(
|
|
[string[]] $query
|
|
)
|
|
|
|
$history = Get-History -Count $MaximumHistoryCount
|
|
foreach ($item in $query){
|
|
$item = $item.ToLower()
|
|
$history = $history | where {$_.CommandLine.ToLower().Contains($item)}
|
|
}
|
|
$history
|
|
} |