diff options
author | romkatv <roman.perepelitsa@gmail.com> | 2019-05-19 00:50:06 +0300 |
---|---|---|
committer | romkatv <roman.perepelitsa@gmail.com> | 2019-05-19 00:50:06 +0300 |
commit | 7cfe479c87051b263ea34f1ddc6f605851040f51 (patch) | |
tree | 2081c9877e16921d25f3eeddf4e1546ae3bbd6b2 /functions/utilities.zsh | |
parent | 55d887c21e0355d0f891881ae7327ebdc0dfc09e (diff) |
support dynamic directories in dir prompt and fix a dozen bugs
Diffstat (limited to 'functions/utilities.zsh')
-rwxr-xr-x | functions/utilities.zsh | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/functions/utilities.zsh b/functions/utilities.zsh index 9821b287..eefe47b7 100755 --- a/functions/utilities.zsh +++ b/functions/utilities.zsh @@ -86,98 +86,6 @@ segment_in_use() { -n "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[(r)${key}_joined]}" ]] } -################################################################ -# Given a directory path, truncate it according to the settings. -# Parameters: -# * $1 Path: string - the directory path to be truncated -# * $2 Length: integer - length to truncate to -# * $3 Delimiter: string - the delimiter to use -# * $4 From: string - "right" | "middle". If omited, assumes right. -function truncatePath() { - # if the current path is not 1 character long (e.g. "/" or "~") - if (( ${#1} > 1 )); then - # convert $2 from string to integer - 2=$(( $2 )) - # set $3 to "" if not defined - [[ -z $3 ]] && 3="" || 3=$(echo -n $3) - # set $4 to "right" if not defined - [[ -z $4 ]] && 4="right" - # create a variable for the truncated path. - local trunc_path - # if the path is in the home folder, add "~/" to the start otherwise "/" - [[ $1 == "~"* ]] && trunc_path='~/' || trunc_path='/' - # split the path into an array using "/" as the delimiter - local paths=$1 - paths=(${(s:/:)${paths//"~\/"/}}) - # declare locals for the directory being tested and its length - local test_dir test_dir_length - # do the needed truncation - case $4 in - right) - # include the delimiter length in the threshhold - local threshhold=$(( $2 + ${#3} )) - # loop through the paths - for (( i=1; i<${#paths}; i++ )); do - # get the current directory value - test_dir=$paths[$i] - test_dir_length=${#test_dir} - # only truncate if the resulting truncation will be shorter than - # the truncation + delimiter length and at least 3 characters - if (( $test_dir_length > $threshhold )) && (( $test_dir_length > 3 )); then - # use the first $2 characters and the delimiter - trunc_path+="${test_dir:0:$2}$3/" - else - # use the full path - trunc_path+="${test_dir}/" - fi - done - ;; - middle) - # we need double the length for start and end truncation + delimiter length - local threshhold=$(( $2 * 2 )) - # create a variable for the start of the end truncation - local last_pos - # loop through the paths - for (( i=1; i<${#paths}; i++ )); do - # get the current directory value - test_dir=$paths[$i] - test_dir_length=${#test_dir} - # only truncate if the resulting truncation will be shorter than - # the truncation + delimiter length - if (( $test_dir_length > $threshhold )); then - # use the first $2 characters, the delimiter and the last $2 characters - last_pos=$(( $test_dir_length - $2 )) - trunc_path+="${test_dir:0:$2}$3${test_dir:$last_pos:$test_dir_length}/" - else - # use the full path - trunc_path+="${test_dir}/" - fi - done - ;; - esac - # return the truncated path + the current directory - echo $trunc_path${1:t} - else # current path is 1 character long (e.g. "/" or "~") - echo $1 - fi -} - -# Search recursively in parent folders for given file. -function upsearch () { - if [[ "$PWD" == "$HOME" || "$PWD" == "/" ]]; then - echo "$PWD" - elif test -e "$1"; then - pushd .. > /dev/null - upsearch "$1" - popd > /dev/null - echo "$PWD" - else - pushd .. > /dev/null - upsearch "$1" - popd > /dev/null - fi -} - # Parse IP address from ifconfig on OSX and from IP on Linux # Parameters: # $1 - string The desired Interface |