mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-12 19:18:28 +02:00
speed up todo prompt
This commit is contained in:
parent
0b8a9bded5
commit
743b7c6584
@ -1139,7 +1139,7 @@ function _p9k_cached_cmd_stdout() {
|
||||
shift
|
||||
local -H stat
|
||||
zstat -H stat -- $cmd 2>/dev/null || return
|
||||
if ! _p9k_cache_get "$0" "$stat[inode]" "$stat[mtime]" "$stat[size]" "$cmd" "$@"; then
|
||||
if ! _p9k_cache_get $0 $stat[inode] $stat[mtime] $stat[size] $stat[mode] $cmd "$@"; then
|
||||
local out
|
||||
out=$($cmd "$@" 2>/dev/null)
|
||||
_p9k_cache_set $(( ! $? )) "$out"
|
||||
@ -1581,12 +1581,36 @@ prompt_date() {
|
||||
################################################################
|
||||
# todo.sh: shows the number of tasks in your todo.sh file
|
||||
prompt_todo() {
|
||||
if $(hash todo.sh 2>&-); then
|
||||
count=$(todo.sh ls | egrep "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }')
|
||||
if [[ "$count" = <-> ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" 'TODO_ICON' 0 '' "${count//\%/%%}"
|
||||
#emulate -L zsh && setopt xtrace
|
||||
local todo=$commands[todo.sh]
|
||||
[[ -n $todo ]] || return
|
||||
if (( ! $+_P9K_TODO_FILE )); then
|
||||
# There is a bug in todo.sh where it uses $0 instead of ${BASH_SOURCE[0]}. We work around
|
||||
# it by overriding `dirname`, to which $0 is passed as an argument.
|
||||
local script="
|
||||
function dirname() {
|
||||
local f=\$1
|
||||
[[ \"\$f\" == bash ]] && f=${(Q)commands[todo.sh]}
|
||||
command dirname \"\$f\"
|
||||
}
|
||||
source todo.sh shorthelp &>/dev/null
|
||||
echo \"\$TODO_FILE\""
|
||||
typeset -g _P9K_TODO_FILE=$(bash -c $script)
|
||||
fi
|
||||
[[ -r $_P9K_TODO_FILE ]] || return
|
||||
local -H stat
|
||||
zstat -H stat -- $_P9K_TODO_FILE 2>/dev/null || return
|
||||
if ! _p9k_cache_get $0 $stat[inode] $stat[mtime] $stat[size]; then
|
||||
local count=$($todo -p ls | command tail -1)
|
||||
emulate -L zsh && setopt extendedglob
|
||||
if [[ $count == (#b)'TODO: '[[:digit:]]##' of '([[:digit:]]##)' '* ]]; then
|
||||
_p9k_cache_set 1 $match[1]
|
||||
else
|
||||
_p9k_cache_set 0 0
|
||||
fi
|
||||
fi
|
||||
(( $_P9K_CACHE_VAL[1] )) || return
|
||||
"$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" 'TODO_ICON' 0 '' "${_P9K_CACHE_VAL[2]}"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
Loading…
Reference in New Issue
Block a user