aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--oni/home/data/config.scm3
-rw-r--r--zsh/.zsh/functions/spwd25
-rw-r--r--zsh/zshrc.org2
3 files changed, 28 insertions, 2 deletions
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