# History
# -----------------------------------------------------------------------------
# Use more intelligent Up/Down behaviour: use the text that has already been
# typed as the prefix for searching through commands, like in Vim.
"\e[B": history-search-forward
"\e[A": history-search-backward

# Remember the cursor position for each history line. Note that this only works
# for previous-history and next-history, and apparently not (or not so well)
# with my Up/Down key bindings history-search-{back,for}ward.
set history-preserve-point on

# Autocompletion
# -----------------------------------------------------------------------------
# Make Tab autocompletion case-insensitive (cd ~/dow<Tab> => cd ~/Downloads/).
set completion-ignore-case On

# When autocompleting symlinks to directories, immediately add a trailing "/".
set mark-symlinked-directories on

# Flip through autocompletion matches with Shift-Tab.
"\e[Z": menu-complete

# Do not autocomplete hidden files ("dot files") unless the pattern explicitly
# begins with a dot.
set match-hidden-files off

# Show all autocomplete results at once.
set page-completions off

# If there are more than 200 possible completions for a word, ask to show them
# all.
set completion-query-items 200

# Immediately show all possible completions.
set show-all-if-ambiguous on

# Show extra file information when completing, like ls -F does.
set visible-stats on

# Be more intelligent when autocompleting by also looking at the text after
# the cursor. For example, when the current line is "cd ~/src/mozil", and
# the cursor is on the "z", pressing Tab will not autocomplete it to "cd
# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the
# Readline used by Bash 4.)
set skip-completed-text on

# Line editing
# -----------------------------------------------------------------------------
# Allow UTF-8 input and output, instead of showing them like $'\0123\0456'.
set input-meta on
set output-meta on
set convert-meta off

# Use Alt/Meta+Delete to delete the preceding word.
"\e[3;3~": kill-word

# Delete for wonky terminals.
"\e[3~": delete-char

# Use Ctrl+␠and Ctrl+⒠(or Alt/Meta, or Esc) to move between words.
"\e[1;5D": backward-word
"\e[1;3D": backward-word
"\e[5D": backward-word
"\e\e[D": backward-word
"\e[1;5C": forward-word
"\e[1;3C": forward-word
"\e[5C": forward-word
"\e\e[C": forward-word

# Miscellaneous
# -----------------------------------------------------------------------------
# Neither sound a beep nor flash the screen when trying to ring the bell.
set bell-style none
# History
# -----------------------------------------------------------------------------
# Use more intelligent Up/Down behaviour: use the text that has already been
# typed as the prefix for searching through commands, like in Vim.
"\e[B": history-search-forward
"\e[A": history-search-backward

# Remember the cursor position for each history line. Note that this only works
# for previous-history and next-history, and apparently not (or not so well)
# with my Up/Down key bindings history-search-{back,for}ward.
set history-preserve-point on

# Line editing
# -----------------------------------------------------------------------------
# Allow UTF-8 input and output, instead of showing them like $'\0123\0456'.
set input-meta on
set output-meta on
set convert-meta off

# Use Alt/Meta+Delete to delete the preceding word.
"\e[3;3~": kill-word

# Delete for wonky terminals.
"\e[3~": delete-char

# Use Alt+← and Alt+→ to move between words.
"\e[1;9D": backward-word
"\e[1;9C": forward-word

# Use Control+← and Control+→
"\e[1;5D": backward-word
"\e[1;5C": forward-word

# Miscellaneous
# -----------------------------------------------------------------------------
# Neither sound a beep nor flash the screen when trying to ring the bell.
set bell-style none