diff --git a/.gitignore b/.gitignore index 48315d5..39656d5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ **/*.swp .bin/shpec .env +.config diff --git a/README.md b/README.md index 1fd7662..2850593 100644 --- a/README.md +++ b/README.md @@ -267,6 +267,23 @@ Besides putting a setting such as this one in your `~/.bash_profile` or `.zshenv ENHANCD_COMMAND=ecd; export ENHANCD_COMMAND ``` +### `ENHANCD_DOT_SHOW_FULLPATH` + +The ENHANCD_DOT_SHOW_FULLPATH environment variable is to set whether to show full path or not when executing Double-dot. It defaults to `0`. + +```console +$ export ENHANCD_DOT_SHOW_FULLPATH=1 +$ cd .. + / + /home + /home/lisa + /home/lisa/src + /home/lisa/src/github.com +> /home/lisa/src/github.com/b4b4r07 + 6/6 +> _ +``` + ### `ENHANCD_DISABLE_DOT` If you don't want to use the interactive filter, when specifing a double dot (`..`), you should set not zero value to `$ENHANCD_DISABLE_DOT`. Dedaluts to 0. diff --git a/init.sh b/init.sh index 1d1a36a..70bbe52 100644 --- a/init.sh +++ b/init.sh @@ -8,6 +8,7 @@ export ENHANCD_DISABLE_DOT="${ENHANCD_DISABLE_DOT:-0}" export ENHANCD_DISABLE_HYPHEN="${ENHANCD_DISABLE_HYPHEN:-0}" export ENHANCD_DOT_ARG="${ENHANCD_DOT_ARG:-..}" export ENHANCD_HYPHEN_ARG="${ENHANCD_HYPHEN_ARG:--}" +export ENHANCD_DOT_SHOW_FULLPATH="${ENHANCD_DOT_SHOW_FULLPATH:-0}" export _ENHANCD_VERSION="2.2.0" diff --git a/src/enhancd.sh b/src/enhancd.sh index d11c2a0..1852b9b 100644 --- a/src/enhancd.sh +++ b/src/enhancd.sh @@ -73,7 +73,7 @@ __enhancd::split_path() { awk \ -f "$ENHANCD_ROOT/src/share/split_path.awk" \ - -v arg="${1:-$PWD}" + -v arg="${1:-$PWD}" -v show_fullpath="$ENHANCD_DOT_SHOW_FULLPATH" } # __enhancd::get_dirstep returns a list of stepwise path diff --git a/src/share/split_path.awk b/src/share/split_path.awk index 70eb7ec..70ea889 100644 --- a/src/share/split_path.awk +++ b/src/share/split_path.awk @@ -14,7 +14,12 @@ BEGIN { # decompose the path by a slash for (i = 1; i < num; i++) { - print arr[i] + if (show_fullpath == 1) { + split(s, dirname, arr[i]) + print "/" dirname[1] arr[i] + } else { + print arr[i] + } } } diff --git a/test/enhancd-enhancd_test.sh b/test/enhancd-enhancd_test.sh index 897b904..9fbe85d 100644 --- a/test/enhancd-enhancd_test.sh +++ b/test/enhancd-enhancd_test.sh @@ -60,6 +60,13 @@ T_SUB "__enhancd::split_path()" (( expect="/${LF}home${LF}lisa" actual="$(__enhancd::split_path /home/lisa/work)" t_is "$expect" "$actual" + + T_SUB "With \$ENHANCD_DOT_SHOW_FULLPATH set" (( + ENHANCD_DOT_SHOW_FULLPATH=1 + expect="/${LF}/home${LF}/home/lisa" + actual="$(__enhancd::split_path /home/lisa/work)" + t_is "$expect" "$actual" + )) )) T_SUB "__enhancd::get_dirstep()" ((