# This file controls the behaviour of line input editing for programs that use
# the GNU Readline library. See 'man bash' >> "READLINE" for documentation on
# readline options and commands.
# https://www.gnu.org/software/bash/manual/bashref.html#Command-Line-Editing

# Use 'bind' ('man bash' >> "SHELL BUILTIN COMMANDS") to view current readline
# config:
#   bind -p
#      Display readline function names and bindings in such a way that they can
#      be re-read.
#   bind -p | egrep -v "^#" | LC_ALL='C' egrep -v "(self-insert|do-lowercase-version|digit-argument)"
#      Display only "interesting" mappings from `bind -p`.
#   bind -P | grep -v "is not bound"
#      List current readline function names and bindings.
#   bind -V
#      List current readline variable names and values.

set bell-style visible
set expand-tilde off
set input-meta off
set convert-meta on
set output-meta off
set horizontal-scroll-mode off
set history-preserve-point on
set mark-directories on
set mark-symlinked-directories on
set match-hidden-files off
set colored-stats on

# completion settings
set page-completions off
set completion-query-items 2000
set completion-ignore-case off
set show-all-if-ambiguous on
set show-all-if-unmodified on
set completion-prefix-display-length 10
set print-completions-horizontally off

set editing-mode emacs

# reload file
"\C-x\C-r": re-read-init-file

"\C-n": history-search-forward
"\C-p": history-search-backward

$if mode=emacs

"\e[A": history-search-backward
"\e[B": history-search-forward

# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# for non RH/Debian xterm, can't hurt for RH/Debian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
# for rxvt
$if term=rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word

$endif