From: martin f. krafft Date: Tue, 23 Aug 2022 07:59:11 +0000 (+0200) Subject: add inplace list X-Git-Url: https://git.madduck.net/etc/zsh.git/commitdiff_plain/51ac318a1294c0cc8a4eb2e5f8c647a2e2b7001f add inplace list --- diff --git a/.zsh/zshrc/80-zle_inplace_list b/.zsh/zshrc/80-zle_inplace_list new file mode 100644 index 0000000..dc7753d --- /dev/null +++ b/.zsh/zshrc/80-zle_inplace_list @@ -0,0 +1,37 @@ +# +# Provide a way to list target directory contents while editing ZLE +# +# Copyright © 1994–2017 martin f. krafft +# Released under the terms of the Artistic Licence 2.0 +# +# Source repository: http://git.madduck.net/v/etc/zsh.git +# + +_list_inplace() { + emulate -L zsh + local lastarg + if ((REGION_ACTIVE==1)); then + local F=$MARK T=$CURSOR + if [[ $F -gt $T ]]; then + F=${CURSOR} + T=${MARK} + fi + # get marked area from buffer and eliminate whitespace + lastarg=${BUFFER[F+1,T]%%[[:space:]]##} + lastarg=${pathtoview##[[:space:]]##} + else + local bufwords iword + bufwords=(${(z)LBUFFER}) + iword=${#bufwords} + bufwords=(${(z)BUFFER}) + lastarg="${(Q)bufwords[iword]}" + fi + [[ -z "${lastarg}" ]] && return 1 + ls -l ${~lastarg:h} + zle end-of-line +} +zle -N _list_inplace +bindkey '\el' _list_inplace + +# vim:ft=zsh +