bash: reverse % + clear incomplete line a la zsh

This commit is contained in:
Loic Nageleisen 2012-08-14 17:41:42 +02:00
parent d7189d263e
commit 37ce373989
2 changed files with 20 additions and 1 deletions

View file

@ -41,6 +41,23 @@ __tpwd() {
__truncate_path "$PWD" __truncate_path "$PWD"
} }
clear_incomplete_line() {
# prevent the terminal response to be displayed
stty raw -echo
# ask for cursor position
echo -en "\033[6n"
# read answer
IFS=';' read -r -d R -a pos
# set back terminal to human mode
stty -raw echo
# extract tput-compatible answer
local row=$((${pos[0]:2} - 1))
local col=$((${pos[1]} - 1))
# not on first column? clean up!
[[ $col != 0 ]] && printf "\e[7m%%\e[m%$((COLUMNS-1))s\r"
}
# git prompt info # git prompt info
source $DOTFILES_BASH_DIR/git_prompt_info source $DOTFILES_BASH_DIR/git_prompt_info
GIT_PS1_SHOWDIRTYSTATE=1 GIT_PS1_SHOWDIRTYSTATE=1

View file

@ -7,7 +7,9 @@ source $DOTFILES_BASH_DIR/history
source $DOTFILES_BASH_DIR/term_title source $DOTFILES_BASH_DIR/term_title
source $DOTFILES_BASH_DIR/completion source $DOTFILES_BASH_DIR/completion
PROMPT_COMMAND="set_prompt; set_term_title;" PROMPT_COMMAND="set_prompt;"
PROMPT_COMMAND+="set_term_title;"
PROMPT_COMMAND+="clear_incomplete_line;"
# Make bash check its window size after a process completes # Make bash check its window size after a process completes
shopt -s checkwinsize shopt -s checkwinsize