diff --git a/fish_right_prompt.fish b/fish_right_prompt.fish index e47b537..fecaae0 100644 --- a/fish_right_prompt.fish +++ b/fish_right_prompt.fish @@ -8,16 +8,13 @@ function __bobthefish_cmd_duration -S -d 'Show command duration' if [ "$CMD_DURATION" -lt 5000 ] echo -ns $CMD_DURATION 'ms' else if [ "$CMD_DURATION" -lt 60000 ] - math -s1 "$CMD_DURATION/1000" | string replace -r '\\.0$' '' - echo -n 's' + __bobthefish_pretty_ms $CMD_DURATION s else if [ "$CMD_DURATION" -lt 3600000 ] set_color $fish_color_error - math -s1 "$CMD_DURATION/60000" | string replace -r '\\.0$' '' - echo -n 'm' + __bobthefish_pretty_ms $CMD_DURATION m else set_color $fish_color_error - math -s2 "$CMD_DURATION/3600000" | string replace -r '(\\.0)?0$' '' - echo -n 'h' + __bobthefish_pretty_ms $CMD_DURATION h end set_color $fish_color_normal @@ -27,6 +24,28 @@ function __bobthefish_cmd_duration -S -d 'Show command duration' or echo -ns ' ' $__bobthefish_left_arrow_glyph end +function __bobthefish_pretty_ms -S -a ms interval -d 'Millisecond formatting for humans' + set -l interval_ms + set -l scale 1 + + switch $interval + case s + set interval_ms 1000 + case m + set interval_ms 60000 + case h + set interval_ms 3600000 + set scale 2 + end + + switch $FISH_VERSION + case 2.\* + math "scale=$scale;$ms/$interval_ms" | string replace -r '\\.?0*$' $interval + case \* + math -s$scale "$ms/$interval_ms" | string replace -r '\\.?0*$' $interval + end +end + function __bobthefish_timestamp -S -d 'Show the current timestamp' [ "$theme_display_date" = "no" ]; and return set -q theme_date_format