mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
Replace vendor powershell.tmBundle by SublimeText powershell. Improve samples for PS.
This commit is contained in:
91
samples/PowerShell/ZLocation.psm1
Normal file
91
samples/PowerShell/ZLocation.psm1
Normal file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
# Weight function.
|
||||
#
|
||||
function Update-ZLocation([string]$path)
|
||||
{
|
||||
$now = [datetime]::Now
|
||||
if (Test-Path variable:global:__zlocation_current)
|
||||
{
|
||||
$prev = $global:__zlocation_current
|
||||
$weight = $now.Subtract($prev.Time).TotalSeconds
|
||||
Add-ZWeight ($prev.Location) $weight
|
||||
}
|
||||
|
||||
$global:__zlocation_current = @{
|
||||
Location = $path
|
||||
Time = [datetime]::Now
|
||||
}
|
||||
|
||||
# populate folder immidiatly after the first cd
|
||||
Add-ZWeight $path 0
|
||||
}
|
||||
|
||||
# this approach hurts `cd` performance (0.0008 sec vs 0.025 sec).
|
||||
# Consider replace it with OnIdle Event.
|
||||
(Get-Variable pwd).attributes.Add((new-object ValidateScript { Update-ZLocation $_.Path; return $true }))
|
||||
#
|
||||
# End of weight function.
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Tab complention.
|
||||
#
|
||||
if (Test-Path Function:\TabExpansion) {
|
||||
Rename-Item Function:\TabExpansion PreZTabExpansion
|
||||
}
|
||||
|
||||
function Get-EscapedPath
|
||||
{
|
||||
param(
|
||||
[Parameter(
|
||||
Position=0,
|
||||
Mandatory=$true,
|
||||
ValueFromPipeline=$true,
|
||||
ValueFromPipelineByPropertyName=$true)
|
||||
]
|
||||
[string]$path
|
||||
)
|
||||
|
||||
process {
|
||||
if ($path.Contains(' '))
|
||||
{
|
||||
return '"' + $path + '"'
|
||||
}
|
||||
return $path
|
||||
}
|
||||
}
|
||||
|
||||
function global:TabExpansion($line, $lastWord) {
|
||||
switch -regex ($line) {
|
||||
"^(Set-ZLocation|z) .*" {
|
||||
$arguments = $line -split ' ' | Where { $_.length -gt 0 } | select -Skip 1
|
||||
Find-Matches (Get-ZLocation) $arguments | Get-EscapedPath
|
||||
}
|
||||
default {
|
||||
if (Test-Path Function:\PreZTabExpansion) {
|
||||
PreZTabExpansion $line $lastWord
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#
|
||||
# End of tab completion.
|
||||
#
|
||||
|
||||
function Set-ZLocation()
|
||||
{
|
||||
if (-not $args) {
|
||||
$args = @()
|
||||
}
|
||||
$matches = Find-Matches (Get-ZLocation) $args
|
||||
if ($matches) {
|
||||
Push-Location ($matches | Select-Object -First 1)
|
||||
} else {
|
||||
Write-Warning "Cannot find matching location"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Set-Alias -Name z -Value Set-ZLocation
|
||||
Export-ModuleMember -Function Set-ZLocation, Get-ZLocation -Alias z
|
||||
Reference in New Issue
Block a user