feat: initial commit; NixOS Era
This commit is contained in:
76
pkgs/fish/prompt.fish
Normal file
76
pkgs/fish/prompt.fish
Normal file
@@ -0,0 +1,76 @@
|
||||
function fish_mode_prompt; end
|
||||
|
||||
function fish_prompt
|
||||
set -l command_status $status;
|
||||
|
||||
set -l duration '';
|
||||
begin
|
||||
[ $CMD_DURATION -gt 700 ]; and set -l seconds \
|
||||
"$(round -p 2 (math $CMD_DURATION / 1000 % 60))s";
|
||||
[ $CMD_DURATION -gt 60000 ]; and set -l minutes \
|
||||
"$(round (math $CMD_DURATION / 60000))m";
|
||||
|
||||
[ $CMD_DURATION -gt 700 ]; and set duration (string join '' -- \
|
||||
(set_color normal) \
|
||||
'took ' \
|
||||
(set_color yellow) \
|
||||
(string join ' ' -- $minutes $seconds) \
|
||||
);
|
||||
end
|
||||
|
||||
set -l mode
|
||||
begin
|
||||
function color_and_wrap -a color char
|
||||
string join '' -- (set_color --bold $color) "[$char]"
|
||||
functions -e color_and_wrap
|
||||
end
|
||||
|
||||
set -l indicator \
|
||||
(switch $fish_bind_mode
|
||||
case default; color_and_wrap red 'N'
|
||||
case insert; color_and_wrap cyan 'I'
|
||||
case replace_one; color_and_wrap green 'R'
|
||||
case visual; color_and_wrap brmagenta 'V'
|
||||
case '*'; color_and_wrap red '?'
|
||||
end)
|
||||
set mode (string join '' -- $indicator (set_color normal) ' ')
|
||||
end
|
||||
|
||||
set -l nix_shell
|
||||
begin
|
||||
set -l packages (string split ' ' -- $FISH_NIX_PACKAGES)
|
||||
|
||||
if [ -n "$IN_NIX_SHELL" ]
|
||||
set nix_shell "$(set_color brblue) "
|
||||
|
||||
set -ql packages[1]; and set nix_shell "$nix_shell($packages[1]";
|
||||
set -ql packages[2]; and set nix_shell "$nix_shell, $packages[2]";
|
||||
set -ql packages[3]; and not set -ql packages[4]; and set nix_shell "$nix_shell, $packages[3]";
|
||||
|
||||
set -ql packages[4]; and set nix_shell "$nix_shell, +$(math (count $packages) - 2) more"
|
||||
|
||||
set -ql packages[1]; set nix_shell "$nix_shell) "
|
||||
end
|
||||
end
|
||||
|
||||
set -l cursor_color (set_color green)
|
||||
[ $command_status -ne 0 ]; and set -l cursor_color (set_color red)
|
||||
|
||||
set -l pwd (string join '' -- \
|
||||
$cursor_color \
|
||||
(prompt_pwd -D 2 -d 1) \
|
||||
(set_color normal) \
|
||||
);
|
||||
|
||||
[ (fish_vcs_prompt) ]; and set -l git (string join '' -- \
|
||||
(set_color yellow) \
|
||||
' ' \
|
||||
(string sub -s 3 -e -1 -- (fish_vcs_prompt)) \
|
||||
' ' \
|
||||
);
|
||||
|
||||
[ $command_status -ne 0 ]; and set -l last_status "[$command_status]";
|
||||
|
||||
[ -n $duration ]; and echo $duration
|
||||
string join '' -- $mode $nix_shell $pwd $git $cursor_color $last_status '|> '
|
||||
end
|
||||
Reference in New Issue
Block a user