diff --git a/shell/navi.plugin.bash b/shell/navi.plugin.bash index ac01708..c8cb260 100644 --- a/shell/navi.plugin.bash +++ b/shell/navi.plugin.bash @@ -16,4 +16,31 @@ _call_navi() { fi } -bind -x '"\C-g": _call_navi' +__call_navi_legacy_versions() { + local -r result="$(navi --print)" + local -r linecount="$(echo "$result" | wc -l)" + + if [[ "$linecount" -lt 2 ]]; then + printf "%s" "$result" + return 0 + fi + + IFS=$'\n' + local i=1; + for line in $result; do + if echo "$line" | grep -q '\\$'; then + printf "${line::-1} " + elif [[ "$i" -eq "$linecount" ]]; then + printf "$line " + else + printf "${line}; " + fi + i=$((i+1)) + done +} + +if [ ${BASH_VERSION:0:1} -lt 4 ]; then + bind '"\C-g": " \C-b\C-k \C-u`__call_navi_legacy_versions`\e\C-e\C-a\C-y\C-h\C-e\e \C-y\ey\C-x\C-x\C-f"' +else + bind -x '"\C-g": _call_navi' +fi \ No newline at end of file