You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1017 B
45 lines
1017 B
#!/bin/sh |
|
|
|
# A cantrip to clear the user's current input lines in the terminal, including |
|
# the terminal prompt. |
|
# |
|
# Cast this spell to erase the user's current input lines, leaving the terminal |
|
# ready for a new command. |
|
|
|
# todo: modify this to use our cursor file |
|
|
|
clear_input_lines() { |
|
# Save the current cursor position |
|
printf '\033[s' |
|
|
|
# Move the cursor to the beginning of the line |
|
printf '\033[1G' |
|
|
|
# Clear the current line |
|
printf '\033[2K' |
|
|
|
# Calculate the number of lines used by the user's input |
|
lines="$(current_input_lines)" |
|
|
|
# Clear the remaining lines |
|
i=1 |
|
while [ "$i" -lt "$lines" ]; do |
|
# Move the cursor down one line |
|
printf '\033[1B' |
|
|
|
# Clear the current line |
|
printf '\033[2K' |
|
|
|
# Increment the counter |
|
i=$(( i + 1 )) |
|
done |
|
|
|
# Restore the cursor position |
|
printf '\033[u' |
|
} |
|
|
|
# Check if the script is being executed or sourced |
|
if [ "$0" = "$BASH_SOURCE" ]; then |
|
# Script is being executed, call the clear_input_lines function |
|
clear_input_lines |
|
fi
|
|
|