mirror of
https://github.com/Llewellynvdm/zoxide.git
synced 2024-12-24 02:35:29 +00:00
Support for PWD hooks on all versions of PowerShell (#563)
This commit is contained in:
parent
0ecfbf7e68
commit
74ccc0232f
22
.github/CODE_OF_CONDUCT.md
vendored
22
.github/CODE_OF_CONDUCT.md
vendored
@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
|
@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Fish/Zsh: aliases on `__zoxide_z` will now use completions.
|
||||
- Nushell: add support for v0.78.0.
|
||||
- Fish: plugin now works on older versions.
|
||||
- PowerShell: warn when PowerShell version is too old for `z -` and `z +`.
|
||||
- PowerShell: support for PWD hooks on all versions.
|
||||
|
||||
### Fixed
|
||||
|
||||
@ -36,7 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Nushell: upgrade minimum supported version to v0.73.0.
|
||||
- Zsh: fix extra space in interactive completions when no match is found.
|
||||
- Fzf: various improvements, upgrade minimum supported version to v0.33.0.
|
||||
- Nushell: Accidental redefinition of hooks when initialized twice.
|
||||
- Nushell: accidental redefinition of hooks when initialized twice.
|
||||
|
||||
### Removed
|
||||
|
||||
@ -140,7 +142,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Fixed
|
||||
|
||||
- PowerShell: Hook not initializing correctly.
|
||||
- PowerShell: hook not initializing correctly.
|
||||
|
||||
## [0.7.6] - 2021-10-13
|
||||
|
||||
|
43
README.md
43
README.md
@ -71,10 +71,10 @@ zoxide can be installed in 4 easy steps:
|
||||
>
|
||||
> | Distribution | Repository | Instructions |
|
||||
> | ------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
> | ***Any*** | **[crates.io]** | `cargo install zoxide --locked` |
|
||||
> | *Any* | [asdf] | `asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git` <br /> `asdf install zoxide latest` |
|
||||
> | *Any* | [conda-forge] | `conda install -c conda-forge zoxide` |
|
||||
> | *Any* | [Linuxbrew] | `brew install zoxide` |
|
||||
> | **_Any_** | **[crates.io]** | `cargo install zoxide --locked` |
|
||||
> | _Any_ | [asdf] | `asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git` <br /> `asdf install zoxide latest` |
|
||||
> | _Any_ | [conda-forge] | `conda install -c conda-forge zoxide` |
|
||||
> | _Any_ | [Linuxbrew] | `brew install zoxide` |
|
||||
> | Alpine Linux 3.13+ | [Alpine Linux Packages] | `apk add zoxide` |
|
||||
> | Arch Linux | [Arch Linux Community] | `pacman -S zoxide` |
|
||||
> | CentOS 7+ | [Copr] | `dnf copr enable atim/zoxide` <br /> `dnf install zoxide` |
|
||||
@ -147,7 +147,7 @@ zoxide can be installed in 4 easy steps:
|
||||
>
|
||||
> | Distribution | Repository | Instructions |
|
||||
> | ------------- | --------------- | ------------------------------- |
|
||||
> | ***Any*** | **[crates.io]** | `cargo install zoxide --locked` |
|
||||
> | **_Any_** | **[crates.io]** | `cargo install zoxide --locked` |
|
||||
> | DragonFly BSD | [DPorts] | `pkg install zoxide` |
|
||||
> | FreeBSD | [FreshPorts] | `pkg install zoxide` |
|
||||
> | NetBSD | [pkgsrc] | `pkgin install zoxide` |
|
||||
@ -232,23 +232,9 @@ zoxide can be installed in 4 easy steps:
|
||||
> Add this to your configuration (find it by running `echo $profile` in
|
||||
> PowerShell):
|
||||
>
|
||||
> - For zoxide v0.8.0+:
|
||||
>
|
||||
> ```powershell
|
||||
> Invoke-Expression (& {
|
||||
> $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
|
||||
> (zoxide init --hook $hook powershell | Out-String)
|
||||
> })
|
||||
> ```
|
||||
>
|
||||
> - For older versions of zoxide:
|
||||
>
|
||||
> ```powershell
|
||||
> Invoke-Expression (& {
|
||||
> $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
|
||||
> (zoxide init --hook $hook powershell) -join "`n"
|
||||
> })
|
||||
> ```
|
||||
> ```powershell
|
||||
> Invoke-Expression (& { (zoxide init powershell | Out-String) })
|
||||
> ```
|
||||
|
||||
</details>
|
||||
|
||||
@ -272,7 +258,7 @@ zoxide can be installed in 4 easy steps:
|
||||
> eval "$(zoxide init zsh)"
|
||||
> ```
|
||||
>
|
||||
> For completions to work, the above line must be added *after* `compinit` is
|
||||
> For completions to work, the above line must be added _after_ `compinit` is
|
||||
> called. You may have to rebuild your completions cache by running
|
||||
> `rm ~/.zcompdump*; compinit`.
|
||||
|
||||
@ -434,10 +420,13 @@ Environment variables[^2] can be used for configuration. They must be set before
|
||||
| [zabb] | Finds the shortest possible query for a path | Natively supported |
|
||||
| [zsh-autocomplete] | Realtime completions for zsh | Natively supported |
|
||||
|
||||
[^1]: Debian / Ubuntu derivatives update their packages very slowly. If you're
|
||||
using one of these distributions, consider using the install script instead.
|
||||
[^2]: If you're not sure how to set an environment variable on your shell, check
|
||||
out the [wiki][wiki-env].
|
||||
[^1]:
|
||||
Debian / Ubuntu derivatives update their packages very slowly. If you're
|
||||
using one of these distributions, consider using the install script instead.
|
||||
|
||||
[^2]:
|
||||
If you're not sure how to set an environment variable on your shell, check
|
||||
out the [wiki][wiki-env].
|
||||
|
||||
[algorithm-aging]: https://github.com/ajeetdsouza/zoxide/wiki/Algorithm#aging
|
||||
[algorithm-matching]: https://github.com/ajeetdsouza/zoxide/wiki/Algorithm#matching
|
||||
|
@ -50,10 +50,7 @@ Add this to your configuration (find it by running \fBecho $profile\fR in
|
||||
PowerShell):
|
||||
.sp
|
||||
.nf
|
||||
\fBInvoke-Expression (& {
|
||||
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
|
||||
(zoxide init --hook $hook powershell | Out-String)
|
||||
})\fR
|
||||
\fBInvoke-Expression (& { (zoxide init powershell | Out-String) })\fR
|
||||
.fi
|
||||
.TP
|
||||
.B xonsh
|
||||
|
@ -30,7 +30,15 @@ function __zoxide_cd($dir, $literal) {
|
||||
$dir = if ($literal) {
|
||||
Set-Location -LiteralPath $dir -Passthru -ErrorAction Stop
|
||||
} else {
|
||||
Set-Location -Path $dir -Passthru -ErrorAction Stop
|
||||
if ($dir -eq '-' -and ($PSVersionTable.PSVersion -lt 6.1)) {
|
||||
Write-Error "cd - is not supported below PowerShell 6.1. Please upgrade your version of PowerShell."
|
||||
}
|
||||
elseif ($dir -eq '+' -and ($PSVersionTable.PSVersion -lt 6.2)) {
|
||||
Write-Error "cd + is not supported below PowerShell 6.2. Please upgrade your version of PowerShell."
|
||||
}
|
||||
else {
|
||||
Set-Location -Path $dir -Passthru -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
{%- if echo %}
|
||||
Write-Output $dir.Path
|
||||
@ -41,6 +49,15 @@ function __zoxide_cd($dir, $literal) {
|
||||
# Hook configuration for zoxide.
|
||||
#
|
||||
|
||||
{% if hook == InitHook::None -%}
|
||||
{{ not_configured }}
|
||||
|
||||
{%- else -%}
|
||||
{#-
|
||||
Initialize $__zoxide_hooked if it does not exist. Removing this will cause an
|
||||
unset variable error in StrictMode.
|
||||
-#}
|
||||
{%- if hook == InitHook::Prompt -%}
|
||||
# Hook to add new entries to the database.
|
||||
function __zoxide_hook {
|
||||
$result = __zoxide_pwd
|
||||
@ -48,37 +65,34 @@ function __zoxide_hook {
|
||||
zoxide add -- $result
|
||||
}
|
||||
}
|
||||
{%- else if hook == InitHook::Pwd -%}
|
||||
# Hook to add new entries to the database.
|
||||
$global:__zoxide_oldpwd = __zoxide_pwd
|
||||
function __zoxide_hook {
|
||||
$result = __zoxide_pwd
|
||||
if ($result -ne $global:__zoxide_oldpwd) {
|
||||
if ($null -ne $result) {
|
||||
zoxide add -- $result
|
||||
}
|
||||
$global:__zoxide_oldpwd = $result
|
||||
}
|
||||
}
|
||||
{%- endif %}
|
||||
|
||||
# Initialize hook.
|
||||
{#-
|
||||
Initialize $__zoxide_hooked if it does not exist. Removing this will cause an
|
||||
unset variable error in StrictMode.
|
||||
#}
|
||||
$__zoxide_hooked = (Get-Variable __zoxide_hooked -ValueOnly -ErrorAction SilentlyContinue)
|
||||
$__zoxide_hooked = (Get-Variable __zoxide_hooked -ErrorAction SilentlyContinue -ValueOnly)
|
||||
if ($__zoxide_hooked -ne 1) {
|
||||
$__zoxide_hooked = 1
|
||||
{%- match hook %}
|
||||
{%- when InitHook::None %}
|
||||
{{ not_configured }}
|
||||
{%- when InitHook::Prompt %}
|
||||
$prompt_old = $function:prompt
|
||||
$__zoxide_prompt_old = $function:prompt
|
||||
|
||||
function prompt {
|
||||
$null = __zoxide_hook
|
||||
& $prompt_old
|
||||
}
|
||||
{%- when InitHook::Pwd %}
|
||||
if ($PSVersionTable.PSVersion.Major -ge 6) {
|
||||
$ExecutionContext.InvokeCommand.LocationChangedAction = {
|
||||
$null = __zoxide_hook
|
||||
if ($null -ne $__zoxide_prompt_old) {
|
||||
& $__zoxide_prompt_old
|
||||
}
|
||||
$null = __zoxide_hook
|
||||
}
|
||||
else {
|
||||
Write-Error ("`n" +
|
||||
"zoxide: PWD hooks are not supported below powershell 6.`n" +
|
||||
" Use 'zoxide init powershell --hook prompt' instead.")
|
||||
}
|
||||
{%- endmatch %}
|
||||
}
|
||||
{%- endif %}
|
||||
|
||||
{{ section }}
|
||||
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
||||
@ -89,12 +103,12 @@ function __zoxide_z {
|
||||
if ($args.Length -eq 0) {
|
||||
__zoxide_cd ~ $true
|
||||
}
|
||||
elseif (
|
||||
$args.Length -eq 1 -and
|
||||
(($args[0] -eq '-' -or $args[0] -eq '+') -or (Test-Path $args[0] -PathType Container))
|
||||
) {
|
||||
elseif ($args.Length -eq 1 -and ($args[0] -eq '-' -or $args[0] -eq '+')) {
|
||||
__zoxide_cd $args[0] $false
|
||||
}
|
||||
elseif ($args.Length -eq 1 -and (Test-Path $args[0] -PathType Container)) {
|
||||
__zoxide_cd $args[0] $true
|
||||
}
|
||||
else {
|
||||
$result = __zoxide_pwd
|
||||
if ($null -ne $result) {
|
||||
@ -137,4 +151,4 @@ Set-Alias -Name {{cmd}}i -Value __zoxide_zi -Option AllScope -Scope Global -Forc
|
||||
# To initialize zoxide, add this to your configuration (find it by running
|
||||
# `echo $profile` in PowerShell):
|
||||
#
|
||||
# Invoke-Expression (& { $hook = if ($PSVersionTable.PSVersion.Major -ge 6) { 'pwd' } else { 'prompt' } (zoxide init powershell --hook $hook | Out-String) })
|
||||
# Invoke-Expression (& { (zoxide init powershell | Out-String) })
|
||||
|
Loading…
Reference in New Issue
Block a user