mirror of
https://github.com/dylanaraps/shfm.git
synced 2026-09-30 21:12:45 +07:00
use alternative screen to avoid redraws
This commit is contained in:
@@ -4,12 +4,12 @@ term_setup() {
|
||||
stty=$(stty -g)
|
||||
stty -icanon -echo
|
||||
|
||||
printf '\033[?1049h\033[?7l\033[?25l\033[2J\033[1;%sr' \
|
||||
printf '\033[?7l\033[?25l\033[2J\033[1;%sr' \
|
||||
"$((LINES - 2))"
|
||||
}
|
||||
|
||||
term_reset() {
|
||||
printf '\033[?7h\033[?25h\033[2J\033[;r\033[?1049l'
|
||||
printf '\033[?7h\033[?25h\033[2J\033[;r'
|
||||
|
||||
stty "$stty"
|
||||
}
|
||||
@@ -28,6 +28,12 @@ term_resize() {
|
||||
bottom=$((LINES - 2))
|
||||
}
|
||||
|
||||
cmd_run() {
|
||||
printf '\033[?1049h\033[?25h'
|
||||
"$@"
|
||||
printf '\033[?25l\033[?1049l'
|
||||
}
|
||||
|
||||
file_escape() {
|
||||
tmp=$1 safe=
|
||||
|
||||
@@ -204,13 +210,10 @@ main() {
|
||||
if cd "$cur" >/dev/null 2>&1; then
|
||||
set -- *
|
||||
y=1 y2=1 cur=$1
|
||||
redraw "$@"
|
||||
else
|
||||
printf '\033[?25h'
|
||||
"${SHFM_OPENER:="${EDITOR:=vi}"}" "$cur"
|
||||
printf '\033[?25l'
|
||||
cmd_run "${SHFM_OPENER:="${EDITOR:=vi}"}" "$cur"
|
||||
fi
|
||||
|
||||
redraw "$@"
|
||||
;;
|
||||
|
||||
h?|D2|"$bs_char"?) # ARROW LEFT
|
||||
@@ -293,10 +296,7 @@ main() {
|
||||
export SHFM_LEVEL
|
||||
SHFM_LEVEL=$((SHFM_LEVEL + 1))
|
||||
|
||||
term_reset
|
||||
"${SHELL:=/bin/sh}"
|
||||
term_setup
|
||||
redraw "$@"
|
||||
cmd_run "${SHELL:=/bin/sh}"
|
||||
;;
|
||||
|
||||
q?)
|
||||
|
||||
Reference in New Issue
Block a user