Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [RFC][PATCH] Add change-directory() widget function
> +++ b/Doc/Zsh/contrib.yo
> @@ -2423,6 +2423,21 @@ history is restricted, so cursor motions, etc., may not pass outside of
> the pasted content. Text assigned to tt(BUFFER) by the active widgets
> is copied back into tt(PASTED) before tt(paste-finish).
> )
> +tindex(change-directory)
> +item(tt(change-directory))(
> +This function implements the widgets tt(cd-upward), tt(cd-backward) and
> +tt(cd-forward). They can be used, respectively, to change to the current
> +directory's parent or the previous/next entry in the directory stack. They
> +should be initialized as follows:
> +
> +example(autoload -Uz change-directory
> +zle -N cd-upward change-directory
> +zle -N cd-backward change-directory
> +zle -N cd-forward change-directory
> +bindkey '^[^[OA' cd-upward # Alt-Up
> +bindkey '^[^[OD' cd-backward # Alt-Left
> +bindkey '^[^[OC' cd-forward # Alt-Right
s/Right/Right)/
> +)
> tindex(copy-earlier-word)
> item(tt(copy-earlier-word))(
> This widget works like a combination of tt(insert-last-word) and
> diff --git a/Functions/Zle/change-directory b/Functions/Zle/change-directory
> new file mode 100644
> index 000000000..376e4414c
> --- /dev/null
> +++ b/Functions/Zle/change-directory
> @@ -0,0 +1,29 @@
> +zle .push-line-or-edit
> +case $WIDGET in
> + *-upward )
> + if [[ -o autocd ]]; then
> + BUFFER='..'
> + else
> + BUFFER='cd ..'
> + fi
> + ;;
> + *-backward )
> + if [[ -o pushdminus ]]; then
> + BUFFER='pushd -1'
> + else
> + BUFFER='pushd +1'
> + fi
> + ;;
> + *-forward )
> + if [[ -o pushdminus ]]; then
> + BUFFER='pushd +0'
> + else
> + BUFFER='pushd -0'
> + fi
> + ;;
> + * )
> + print -u2 'change-directory: widget name should end in -(up|back|for)ward'
Suggest to add a detail:
print -u2 $'change-directory: widget name should end in -(up|back|for)ward; review the \'zle -N ... change-directory\' commands in your configuration'
And to remove an implementation detail:
print -u2 $'change-directory: widget name should be cd-(up|back|for)ward; review the \'zle -N ... change-directory\' commands in your configuration'
And to avoid (foo|bar|baz) constructs — not for greppability reasons as
requested in 48402#13[48408] and again in 48632, but for
user-friendliness reasons (cf. my feedback to Sebastian back in
[workers/45149, second bullet]):
print -u2 $'change-directory: widget name should be "cd-upward", "cd-backward", or "cd-downward"; review the \'zle -N ... change-directory\' commands in your configuration'
> + return 1
> + ;;
> +esac
> +zle .accept-line
> --
> 2.31.1
>
>
>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author