From 46259edd2d39e2513b77eea1b9ce83a2c5b826c7 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Tue, 14 Jun 2022 22:15:26 -0700 Subject: [PATCH] Update ZSH prompt Include a shortened version of the current directory. --- oni/home/data/config.scm | 3 ++- zsh/.zsh/functions/spwd | 25 +++++++++++++++++++++++++ zsh/zshrc.org | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 zsh/.zsh/functions/spwd diff --git a/oni/home/data/config.scm b/oni/home/data/config.scm index 25a3659..9447293 100644 --- a/oni/home/data/config.scm +++ b/oni/home/data/config.scm @@ -54,7 +54,8 @@ (environment-variables '(("HISTFILE" . "$HOME/.zsh/histfile") ("HISTSIZE" . "1000") - ("SAVEHIST" . "1000"))) + ("SAVEHIST" . "1000") + ("PROMPT" . "%T \\$(spwd) %B%(?.%F{2}.%F{1}[%?])>%b%f "))) (zshrc (list (mixed-text-file diff --git a/zsh/.zsh/functions/spwd b/zsh/.zsh/functions/spwd new file mode 100644 index 0000000..15aef1b --- /dev/null +++ b/zsh/.zsh/functions/spwd @@ -0,0 +1,25 @@ +# From https://stackoverflow.com/a/45336078 +paths=(${(s:/:)PWD}) + +cur_path='/' +cur_short_path='/' +for directory in ${paths[@]} +do + cur_dir='' + for (( i=0; i<${#directory}; i++ )); do + cur_dir+="${directory:$i:1}" + matching=("$cur_path"/"$cur_dir"*/) + if [[ ${#matching[@]} -eq 1 ]]; then + break + fi + done + cur_short_path+="$cur_dir/" + cur_path+="$directory/" + + if [[ $cur_path == $HOME/ ]]; + then cur_short_path='~/' + fi +done + +printf %b "${cur_short_path: : -1}" +echo diff --git a/zsh/zshrc.org b/zsh/zshrc.org index d6604de..68dca58 100644 --- a/zsh/zshrc.org +++ b/zsh/zshrc.org @@ -207,6 +207,6 @@ Autoload any ZSH function from =$HOME/.zsh/functions=. Set the actual prompts. #+begin_src sh - PROMPT='%T %2~ %B%(?.%F{2}.%F{1})→%b ' + PROMPT='%T $(spwd) %B%(?.%F{2}.%F{1}[%?])>%b%f ' RPROMPT='${vcs_info_msg_0_}' #+end_src