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