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
 | |
| } |