commit
3aedf713f4
@ -134,6 +134,13 @@ Note also that all the `LP_ENABLE_…` variables override the templates,
|
||||
i.e. if you use `$LP_BATT` in your template and you set `LP_ENABLE_BATT=0`
|
||||
in your config file, you will not have the battery informations.
|
||||
|
||||
If you are using bash and want to use the `PROMPT_DIRTRIM` built-in
|
||||
functionality to shorten but still have liquidprompt calculating the number of
|
||||
directories to keep in the path, precise a value for `PROMPT_DIRTRIM` before
|
||||
sourcing liquidprompt and liquidprompt will override this value with one
|
||||
fitting the width of your terminal.
|
||||
|
||||
|
||||
## CUSTOMIZING THE PROMPT
|
||||
|
||||
### ADD A PS1 PREFIX
|
||||
|
53
liquidprompt
53
liquidprompt
@ -29,7 +29,7 @@
|
||||
# Joris Dedieu <joris@pontiac3.nfrance.com> # Portability framework, FreeBSD support, bugfixes.
|
||||
# Ludovic Rousseau <ludovic.rousseau@gmail.com> # Lot of bugfixes.
|
||||
# Yann 'Ze' Richard <ze@nbox.org> # Do not fail on missing commands.
|
||||
# François Schmidts <fschmidts@olfeo.com> # Simpler SSH_IP acquiring method.
|
||||
# François Schmidts <francois.schmidts@gmail.com> # small code fix, _lp_get_dirtrim
|
||||
# Thomas Debesse <thomas.debesse@gmail.com> # Fix columns use.
|
||||
# Florian Le Frioux <florian@lefrioux.fr> # Use ± mark when root in VCS dir.
|
||||
# Luc Didry <luc@fiat-tux.fr> # Zsh port
|
||||
@ -411,8 +411,12 @@ _lp_proxy()
|
||||
# + keep some left part of the path if asked
|
||||
_lp_shorten_path()
|
||||
{
|
||||
if [[ "$LP_ENABLE_SHORTEN_PATH" != 1 ]] ; then
|
||||
echo "$1"
|
||||
if [[ "$LP_ENABLE_SHORTEN_PATH" != 1 || -n "$PROMPT_DIRTRIM" ]] ; then
|
||||
if [[ "$_LP_WORKING_SHELL" == "bash" ]]; then
|
||||
echo "\\w"
|
||||
else
|
||||
echo "$(print -P "%~")"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
# the character that will replace the part of the path that is masked
|
||||
@ -423,17 +427,10 @@ _lp_shorten_path()
|
||||
keep=$LP_PATH_KEEP
|
||||
fi
|
||||
|
||||
local len_percent=$2
|
||||
|
||||
local p
|
||||
if [[ "$_LP_WORKING_SHELL" == "bash" ]]; then
|
||||
p=$(echo "$1" | sed -e "s|$HOME|~|")
|
||||
elif [[ "$_LP_WORKING_SHELL" == "zsh" ]]; then
|
||||
p=$1
|
||||
fi
|
||||
local p="${PWD/$HOME/~}"
|
||||
local len="${#p}"
|
||||
|
||||
local max_len=$((${COLUMNS:-80}*$len_percent/100))
|
||||
local max_len=$((${COLUMNS:-80}*$LP_PATH_LENGTH/100))
|
||||
local mask_len="${#mask}"
|
||||
local slashes=0
|
||||
|
||||
@ -506,6 +503,31 @@ _lp_shorten_path()
|
||||
fi
|
||||
}
|
||||
|
||||
# In bash shell, PROMPT_DIRTRIM is the number of directory to keep at the end
|
||||
# of the displayed path (if "\w" is present in the PS1 var).
|
||||
# liquidprompt can calculate this number under two condition, path shortening
|
||||
# must be activated and PROMPT_DIRTRIM must be already set.
|
||||
_lp_get_dirtrim() {
|
||||
[[ "$LP_ENABLE_SHORTEN_PATH" != 1 ]] && echo 0 && return
|
||||
|
||||
local p="${PWD/$HOME/~}"
|
||||
local len=${#p}
|
||||
local max_len=$((${COLUMNS:-80}*$LP_PATH_LENGTH/100))
|
||||
local PROMPT_DIRTRIM=0
|
||||
|
||||
if [[ "$((len))" -gt "$((max_len))" ]]; then
|
||||
local i
|
||||
|
||||
for ((i=$len;i>=0;i--))
|
||||
do
|
||||
[[ $(($len-$i)) -gt $max_len ]] && break
|
||||
[[ "${p:i:1}" == "/" ]] && PROMPT_DIRTRIM=$((PROMPT_DIRTRIM+1))
|
||||
done
|
||||
[[ "$((PROMPT_DIRTRIM))" -eq 0 ]] && PROMPT_DIRTRIM=1
|
||||
fi
|
||||
echo "$PROMPT_DIRTRIM"
|
||||
}
|
||||
|
||||
# Display a ":"
|
||||
# colored in green if user have write permission on the current directory
|
||||
# colored in red if it have not.
|
||||
@ -1094,11 +1116,8 @@ _lp_set_prompt()
|
||||
LP_USER=$(_lp_user)
|
||||
# LP_HOST is a global set at load time
|
||||
LP_PERM=$(_lp_permissions_color)
|
||||
if [[ "$_LP_WORKING_SHELL" == "bash" ]]; then
|
||||
LP_PWD=$(_lp_shorten_path "$PWD" $LP_PATH_LENGTH)
|
||||
elif [[ "$_LP_WORKING_SHELL" == "zsh" ]]; then
|
||||
LP_PWD=$(_lp_shorten_path "$(print -P "%~")" $LP_PATH_LENGTH)
|
||||
fi
|
||||
LP_PWD=$(_lp_shorten_path)
|
||||
[[ -n "$PROMPT_DIRTRIM" ]] && PROMPT_DIRTRIM=$(_lp_get_dirtrim)
|
||||
LP_PROXY="${LP_COLOR_PROXY}$(_lp_proxy)${NO_COL}"
|
||||
|
||||
# right of main prompt: space at left
|
||||
|
Loading…
Reference in New Issue
Block a user