Compare commits
1 Commits
fff22c22d7
...
63b7170ccb
Author | SHA1 | Date | |
---|---|---|---|
63b7170ccb |
@ -27,9 +27,11 @@ prompt_fresh_setup() {
|
||||
if [ $almostontop -eq 1 ]; then
|
||||
# Hook to clear the screen then prints the prompt with previous command at
|
||||
# the top of the screen.
|
||||
add-zsh-hook preexec fresh_almostontop
|
||||
add-zsh-hook precmd fresh_almostontop_precmd
|
||||
add-zsh-hook preexec fresh_almostontop_preexec
|
||||
else
|
||||
add-zsh-hook -d preexec fresh_almostontop
|
||||
add-zsh-hook -d preexec fresh_almostontop_preexec
|
||||
add-zsh-hook -d precmd fresh_almostontop_precmd
|
||||
fi
|
||||
|
||||
[ $recompile -eq 1 ] && prompt_cleanup
|
||||
@ -128,7 +130,20 @@ fresh_line_one() {
|
||||
print -P "$time_stamp $directory$git$py$docker$result"
|
||||
}
|
||||
|
||||
fresh_almostontop() {
|
||||
# Executed before each prompt.
|
||||
fresh_almostontop_precmd() {
|
||||
# CSI ESC[6n gets the cursor position in the form ESC[<row>;<column>R
|
||||
printf "\033[6n"
|
||||
# Discard prefix delimited by [
|
||||
read -s -d [
|
||||
# Store the <row> delimited by ; in row_before
|
||||
read -s -d \; row_before
|
||||
# Discard suffix delimted by R otherwise it is output to the tty
|
||||
read -s -d R
|
||||
}
|
||||
|
||||
# Executed just after a command has been read and is about to be executed.
|
||||
fresh_almostontop_preexec() {
|
||||
# CSI ESC[6n gets the cursor position in the form ESC[<row>;<column>R
|
||||
printf "\033[6n"
|
||||
# Discard prefix delimited by [
|
||||
@ -141,14 +156,16 @@ fresh_almostontop() {
|
||||
# CSI ESC[<num>B moves the cursor down <num> lines
|
||||
let "down = $LINES - $row"
|
||||
printf "\033[${down}B"
|
||||
# Calculate the number of lines in the prompt
|
||||
let "prompt_lines = ($row - $row_before) + 2"
|
||||
# Print new lines to push the old command out of view
|
||||
let "new = $row - 3"
|
||||
let "new = $row - $prompt_lines"
|
||||
for (( i = 0; i < $new; i++ )); do
|
||||
printf "\n"
|
||||
done
|
||||
# Move the cursor to the line below the prompt
|
||||
# CSI ESC[<num>A moves the cursor up <num> lines
|
||||
let "up = $LINES - 3"
|
||||
let "up = $LINES - $prompt_lines"
|
||||
printf "\033[${up}A"
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user