From 85d60d489c54150cc9df5cef0504f6af90638fbd Mon Sep 17 00:00:00 2001 From: Kristijan Date: Fri, 21 Mar 2025 05:47:01 +1100 Subject: feat(dirhistory): add support for ghostty (#12868) --- plugins/dirhistory/dirhistory.plugin.zsh | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'plugins/dirhistory') diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 8d67c6188..8d66de7f5 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -137,6 +137,7 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back ;; # Terminal.app iTerm.app) bindkey -M $keymap "^[^[[D" dirhistory_zle_dirhistory_back ;; # iTerm2 + ghostty) bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back ;; # ghostty esac if (( ${+terminfo[kcub1]} )); then @@ -152,6 +153,7 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future ;; # Terminal.app iTerm.app) bindkey -M $keymap "^[^[[C" dirhistory_zle_dirhistory_future ;; # iTerm2 + ghostty) bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future ;; # ghostty esac if (( ${+terminfo[kcuf1]} )); then @@ -200,6 +202,7 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[[A" dirhistory_zle_dirhistory_up ;; # Terminal.app iTerm.app) bindkey -M $keymap "^[^[[A" dirhistory_zle_dirhistory_up ;; # iTerm2 + ghostty) bindkey -M $keymap "^[[1;3A" dirhistory_zle_dirhistory_up ;; # ghostty esac if (( ${+terminfo[kcuu1]} )); then @@ -215,6 +218,7 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[[B" dirhistory_zle_dirhistory_down ;; # Terminal.app iTerm.app) bindkey -M $keymap "^[^[[B" dirhistory_zle_dirhistory_down ;; # iTerm2 + ghostty) bindkey -M $keymap "^[[1;3B" dirhistory_zle_dirhistory_down ;; # ghostty esac if (( ${+terminfo[kcud1]} )); then -- cgit v1.2.3-70-g09d2 From 068299685ceac5af570232ca5daa0ecd4d1f7d62 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 20 Mar 2025 20:07:36 +0100 Subject: fix(dirhistory): support iTerm2 natural text key bindings (#11026) Fixes #11026 Fixes #11407 --- plugins/dirhistory/dirhistory.plugin.zsh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'plugins/dirhistory') diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 8d66de7f5..4650666be 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -136,8 +136,11 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back ;; # Terminal.app - iTerm.app) bindkey -M $keymap "^[^[[D" dirhistory_zle_dirhistory_back ;; # iTerm2 ghostty) bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back ;; # ghostty + iTerm.app) + bindkey -M $keymap "^[^[[D" dirhistory_zle_dirhistory_back + bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back + ;; esac if (( ${+terminfo[kcub1]} )); then @@ -152,8 +155,11 @@ for keymap in emacs vicmd viins; do case "$TERM_PROGRAM" in Apple_Terminal) bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future ;; # Terminal.app - iTerm.app) bindkey -M $keymap "^[^[[C" dirhistory_zle_dirhistory_future ;; # iTerm2 ghostty) bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future ;; # ghostty + iTerm.app) + bindkey -M $keymap "^[^[[C" dirhistory_zle_dirhistory_future + bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future + ;; esac if (( ${+terminfo[kcuf1]} )); then -- cgit v1.2.3-70-g09d2 From 407be8f0368379892f7c0d5a3994bfca74e06969 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 20 Mar 2025 20:28:39 +0100 Subject: feat(dirhistory): preserve forward directories with `cde` alias (#9328) Closes #11954 Co-authored-by: Jeff Williams --- plugins/dirhistory/README.md | 43 ++++++++++++++++++++++++++++++++ plugins/dirhistory/dirhistory.plugin.zsh | 3 ++- 2 files changed, 45 insertions(+), 1 deletion(-) (limited to 'plugins/dirhistory') diff --git a/plugins/dirhistory/README.md b/plugins/dirhistory/README.md index ede9b5410..66e3e0469 100644 --- a/plugins/dirhistory/README.md +++ b/plugins/dirhistory/README.md @@ -60,3 +60,46 @@ to `/usr` again. After that, Alt + Down will probably go to `/usr/bin` if `bin` is the first directory in alphabetical order (depends on your `/usr` folder structure). Alt + Up will return to `/usr`, and once more will get you to the root folder (`/`). + +### cde + +This plugin also provides a `cde` alias that allows you to change to a directory without clearing the next directory stack. +This changes the default behavior of `dirhistory`, which is to clear the next directory stack when changing directories. + +For example, if the shell was started, and the following commands were entered: + +```shell +cd ~ +cd /usr +cd share +cd doc + +# +# +``` + +The directory stack would look like this: + +```sh +➜ /usr typeset -pm dirhistory_\* +typeset -ax dirhistory_past=( /home/user /usr ) +typeset -ax dirhistory_future=( /usr/share/doc /usr/share ) +``` + +This means that pressing Alt + Right, you'd go to `/usr/share` and `/usr/share/doc` (the "future" directories). + +If you run `cd /usr/bin`, the "future" directories will be removed, and you won't be able to access them with Alt + Right: + +```sh +➜ /u/bin typeset -pm dirhistory_\* +typeset -ax dirhistory_past=( /home/user /usr ) +typeset -ax dirhistory_future=( /usr/bin ) +``` + +If you instead run `cde /usr/bin`, the "future" directories will be preserved: + +```sh +➜ /u/bin typeset -pm dirhistory_\* +typeset -ax dirhistory_past=( /home/user /usr /usr/bin ) +typeset -ax dirhistory_future=( /usr/share/doc /usr/share ) +``` diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 4650666be..706bb6fb2 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -11,9 +11,10 @@ dirhistory_past=($PWD) dirhistory_future=() export dirhistory_past export dirhistory_future - export DIRHISTORY_SIZE=30 +alias cde='dirhistory_cd' + # Pop the last element of dirhistory_past. # Pass the name of the variable to return the result in. # Returns the element if the array was not empty, -- cgit v1.2.3-70-g09d2