diff --git a/modules/input/init.zsh b/modules/input/init.zsh index 17d5b32..ba05053 100644 --- a/modules/input/init.zsh +++ b/modules/input/init.zsh @@ -9,7 +9,7 @@ if [[ ${TERM} == 'dumb' ]]; then fi # Use human-friendly identifiers. -zmodload zsh/terminfo +zmodload -F zsh/terminfo +p:terminfo typeset -gA key_info key_info=( 'Control' '\C-' @@ -17,30 +17,30 @@ key_info=( 'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc \eOC' 'Escape' '\e' 'Meta' '\M-' - 'Backspace' "^?" - 'Delete' "^[[3~" - 'F1' "${terminfo[kf1]}" - 'F2' "${terminfo[kf2]}" - 'F3' "${terminfo[kf3]}" - 'F4' "${terminfo[kf4]}" - 'F5' "${terminfo[kf5]}" - 'F6' "${terminfo[kf6]}" - 'F7' "${terminfo[kf7]}" - 'F8' "${terminfo[kf8]}" - 'F9' "${terminfo[kf9]}" - 'F10' "${terminfo[kf10]}" - 'F11' "${terminfo[kf11]}" - 'F12' "${terminfo[kf12]}" - 'Insert' "${terminfo[kich1]}" - 'Home' "${terminfo[khome]}" - 'PageUp' "${terminfo[kpp]}" - 'End' "${terminfo[kend]}" - 'PageDown' "${terminfo[knp]}" - 'Up' "${terminfo[kcuu1]}" - 'Left' "${terminfo[kcub1]}" - 'Down' "${terminfo[kcud1]}" - 'Right' "${terminfo[kcuf1]}" - 'BackTab' "${terminfo[kcbt]}" + 'Backspace' ${terminfo[kbs]} + 'BackTab' ${terminfo[kcbt]} + 'Left' ${terminfo[kcub1]} + 'Down' ${terminfo[kcud1]} + 'Right' ${terminfo[kcuf1]} + 'Up' ${terminfo[kcuu1]} + 'Delete' ${terminfo[kdch1]} + 'End' ${terminfo[kend]} + 'F1' ${terminfo[kf1]} + 'F2' ${terminfo[kf2]} + 'F3' ${terminfo[kf3]} + 'F4' ${terminfo[kf4]} + 'F5' ${terminfo[kf5]} + 'F6' ${terminfo[kf6]} + 'F7' ${terminfo[kf7]} + 'F8' ${terminfo[kf8]} + 'F9' ${terminfo[kf9]} + 'F10' ${terminfo[kf10]} + 'F11' ${terminfo[kf11]} + 'F12' ${terminfo[kf12]} + 'Home' ${terminfo[khome]} + 'Insert' ${terminfo[kich1]} + 'PageDown' ${terminfo[knp]} + 'PageUp' ${terminfo[kpp]} ) # Bind the keys @@ -53,27 +53,15 @@ for key in "${(s: :)key_info[ControlRight]}"; do bindkey ${key} forward-word done -if [[ -n "${key_info[Home]}" ]]; then - bindkey "${key_info[Home]}" beginning-of-line -fi +[[ -n ${key_info[Home]} ]] && bindkey ${key_info[Home]} beginning-of-line +[[ -n ${key_info[End]} ]] && bindkey ${key_info[End]} end-of-line -if [[ -n "${key_info[End]}" ]]; then - bindkey "${key_info[End]}" end-of-line -fi +[[ -n ${key_info[PageUp]} ]] && bindkey ${key_info[PageUp]} up-line-or-history +[[ -n ${key_info[PageDown]} ]] && bindkey ${key_info[PageDown]} down-line-or-history -if [[ -n "${key_info[PageUp]}" ]]; then - bindkey "${key_info[PageUp]}" up-line-or-history -fi +[[ -n ${key_info[Insert]} ]] && bindkey ${key_info[Insert]} overwrite-mode -if [[ -n "${key_info[PageDown]}" ]]; then - bindkey "${key_info[PageDown]}" down-line-or-history -fi - -if [[ -n "${key_info[Insert]}" ]]; then - bindkey "${key_info[Insert]}" overwrite-mode -fi - -if [[ ${zdouble_dot_expand} == "true" ]]; then +if [[ ${zdouble_dot_expand} == 'true' ]]; then double-dot-expand() { if [[ ${LBUFFER} == *.. ]]; then LBUFFER+='/..' @@ -82,14 +70,14 @@ if [[ ${zdouble_dot_expand} == "true" ]]; then fi } zle -N double-dot-expand - bindkey "." double-dot-expand + bindkey '.' double-dot-expand fi -bindkey "${key_info[Delete]}" delete-char -bindkey "${key_info[Backspace]}" backward-delete-char +[[ -n ${key_info[Backspace]} ]] && bindkey ${key_info[Backspace]} backward-delete-char +[[ -n ${key_info[Delete]} ]] && bindkey ${key_info[Delete]} delete-char -bindkey "${key_info[Left]}" backward-char -bindkey "${key_info[Right]}" forward-char +[[ -n ${key_info[Left]} ]] && bindkey ${key_info[Left]} backward-char +[[ -n ${key_info[Right]} ]] && bindkey ${key_info[Right]} forward-char # Expandpace. bindkey ' ' magic-space @@ -98,9 +86,7 @@ bindkey ' ' magic-space bindkey "${key_info[Control]}L" clear-screen # Bind Shift + Tab to go to the previous menu item. -if [[ -n "${key_info[BackTab]}" ]]; then - bindkey "${key_info[BackTab]}" reverse-menu-complete -fi +[[ -n ${key_info[BackTab]} ]] && bindkey ${key_info[BackTab]} reverse-menu-complete autoload -Uz is-at-least && if ! is-at-least 5.3; then # Redisplay after completing, and avoid blank prompt after @@ -115,14 +101,10 @@ fi # Put into application mode and validate ${terminfo} zle-line-init() { - if (( ${+terminfo[smkx]} )); then - echoti smkx - fi + (( ${+terminfo[smkx]} )) && echoti smkx } zle-line-finish() { - if (( ${+terminfo[rmkx]} )); then - echoti rmkx - fi + (( ${+terminfo[rmkx]} )) && echoti rmkx } zle -N zle-line-init zle -N zle-line-finish