81 lines
2.2 KiB
Fish
81 lines
2.2 KiB
Fish
#!/usr/bin/env fish
|
|
# -*- mode:fish; tab-width:4 -*-
|
|
|
|
function fishline -d "fishline prompt function"
|
|
|
|
set -g FLINT_POSITION left
|
|
set -g FLSYM_SEPARATOR $FLSYM_LEFT_SEPARATOR
|
|
set -g FLINT_FIRST true
|
|
set -g FLINT_LAST false
|
|
set -g FLINT_BCOLOR normal
|
|
set -g FLINT_PRINT_POST true
|
|
set -g FLINT_INVERT false
|
|
set -g FLINT_STATUS false
|
|
|
|
set -l prompt_segments $FLINE_DEFAULT_PROMPT
|
|
set -l args (getopt "lrxhvs:" $argv)
|
|
if [ $status -gt 0 ]
|
|
return 1
|
|
end
|
|
|
|
set args (echo $args | sed -E 's/^\s//;s/\ +/ /g' | tr ' ' '\n')
|
|
while [ (count $args) -ge 0 ]
|
|
switch $args[1]
|
|
case "-s"
|
|
set FLINT_STATUS $args[2]
|
|
set args $args[2..-1]
|
|
case "-r"
|
|
set FLINT_POSITION right
|
|
set FLSYM_SEPARATOR $FLSYM_RIGHT_SEPARATOR
|
|
case "-l"
|
|
set FLINT_POSITION left
|
|
set FLSYM_SEPARATOR $FLSYM_LEFT_SEPARATOR
|
|
case "-x"
|
|
functions -a | sed -nE 's/__flseg_([a-zA-Z_]+)/\1/p'
|
|
return 0
|
|
case "-h"
|
|
__fishline_usage
|
|
return 0
|
|
case "-v"
|
|
__fishline_version
|
|
return 0
|
|
case "--"
|
|
break
|
|
end
|
|
set args $args[2..-1]
|
|
end
|
|
|
|
if [ "$FLINT_STATUS" = "false" ]
|
|
if [ (count $args) -ge 2 ]; and [ "$args[2]" -eq "$args[2]" ]
|
|
set FLINT_STATUS $args[2]
|
|
if [ (count $args) -eq 2 ]
|
|
set args '--'
|
|
else
|
|
set args -- $args[3..-1]
|
|
end
|
|
else
|
|
echo "Warning: last status not passed as positional '-s' argument to fishline" >&2
|
|
set FLINT_STATUS 0
|
|
end
|
|
end
|
|
|
|
if [ (count $args) -gt 1 ]
|
|
set prompt_segments (echo $args[2..-1] | tr 'A-Z' 'a-z' | tr ' ' '\n')
|
|
else if set -q FLINE_PROMPT
|
|
set prompt_segments (echo $FLINE_PROMPT | tr 'A-Z' 'a-z' | tr ' ' '\n')
|
|
end
|
|
|
|
for seg in $prompt_segments
|
|
eval __flseg_$seg
|
|
end
|
|
__fishline_segment_close
|
|
|
|
set -e FLINT_FIRST
|
|
set -e FLINT_LAST
|
|
set -e FLINT_POSITION
|
|
set -e FLINT_STATUS
|
|
set -e FLINT_BCOLOR
|
|
set -e FLINT_INVERT
|
|
set -e FLINT_PRINT_POST
|
|
|
|
end
|