Hi guys, I've been trying to segment my stuff as per XDG guidelines and zkbd insisted on packing their output in $ZDOTDIR/.zkbd which I did'nt like. I'd like to add a -d switch to zkbd to allow the user to specify a directory of their choosing as the output dir of zkbd. diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo index c1bea6022..3be632c9f 100644 --- a/Doc/Zsh/contrib.yo +++ b/Doc/Zsh/contrib.yo @@ -192,7 +192,8 @@ The keystrokes read by tt(zkbd) are recorded as a definition for an associative array named tt(key), written to a file in the subdirectory tt(.zkbd) within either your tt(HOME) or tt(ZDOTDIR) directory. The name of the file is composed from the tt(TERM), tt(VENDOR) and tt(OSTYPE) -parameters, joined by hyphens. +parameters, joined by hyphens. This may be overridden with the option tt(-d) +if you plan to keep it elsewhere: tt(zkbd -d /path/to/zkbd). You may read this file into your tt(.zshrc) or another startup file with the `tt(source)' or `tt(.)' commands, then reference the tt(key) parameter diff --git a/Functions/Misc/zkbd b/Functions/Misc/zkbd index 1065a84f1..7b9d5b8c4 100644 --- a/Functions/Misc/zkbd +++ b/Functions/Misc/zkbd @@ -11,7 +11,9 @@ emulate -RL zsh local zkbd term key seq -zkbd=${ZDOTDIR:-$HOME}/.zkbd +zparseopts -D -F -- d:=rawdir || return 1 +[[ -n "$rawdir" ]] && zkbd="${rawdir[2]}" +[[ ! -d "$zkbd" ]] && zkbd="${ZDOTDIR:-$HOME}/.zkbd" [[ -d $zkbd ]] || mkdir $zkbd || return 1 trap 'unfunction getmbkey getseq; command rm -f $zkbd/$TERM.tmp' 0