Skip to content

Commit

Permalink
Merge pull request #326 from dracula/feature/cwd_max_length
Browse files Browse the repository at this point in the history
feature: add max length feature to cwd
  • Loading branch information
ethancedwards8 authored Feb 16, 2025
2 parents a97cf51 + 42b3179 commit 3e1e7a1
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions scripts/cwd.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/usr/bin/env bash

current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$current_dir/utils.sh"

# return current working directory of tmux pane
getPaneDir() {
nextone="false"
Expand All @@ -13,10 +16,34 @@ getPaneDir() {
}

main() {
path=$(getPaneDir)
path="$(getPaneDir)"

if [[ "$path" == "$HOME" ]]; then
echo "~"
exit 0
fi

# change '/home/user' to '~'
cwd="${path/"$HOME"/'~'}"
cwd="${path/"${HOME}/"/'~/'}"

# check max number of subdirs to display. 0 means unlimited
cwd_max_dirs="$(get_tmux_option "@dracula-cwd-max-dirs" "0")"

if [[ "$cwd_max_dirs" -gt 0 ]]; then
base_to_erase=$cwd
for ((i = 0 ; i < cwd_max_dirs ; i++)); do
base_to_erase="${base_to_erase%/*}"
done
# / would have #base_to_erase of 0 and ~/ has #base_to_erase of 1. we want to exclude both cases
if [[ ${#base_to_erase} -gt 1 ]]; then
cwd="…/${cwd:${#base_to_erase}+1}"
fi
fi

cwd_max_chars="$(get_tmux_option "@dracula-cwd-max-chars" "0")"
if [[ "${cwd_max_chars}" -gt 0 && "${#cwd}" -gt "$cwd_max_chars" ]]; then
cwd="…/…${cwd:(- cwd_max_chars)}"
fi

echo "$cwd"
}
Expand Down

0 comments on commit 3e1e7a1

Please sign in to comment.