line editing mode for bash

This commit is contained in:
Stuart Mashaal 2024-02-05 19:10:04 -05:00
parent cc6ae100b3
commit 171ea83264
2 changed files with 8 additions and 1 deletions

View File

@ -31,6 +31,12 @@ starship_preexec() {
# Will be run before the prompt is drawn
starship_precmd() {
KEYMAP="$(bind -V 2> /dev/null | grep keymap)"
STARSHIP_KEYMAP="viins"
if [[ "$KEYMAP" =~ "vi" ]] && [[ ! "$KEYMAP" =~ "vi-insert" ]]; then
STARSHIP_KEYMAP="vicmd"
fi
# Save the status, because commands in this pipeline will change $?
STARSHIP_CMD_STATUS=$? STARSHIP_PIPE_STATUS=(${PIPESTATUS[@]})
if [[ ${BLE_ATTACHED-} && ${#BLE_PIPESTATUS[@]} -gt 0 ]]; then
@ -69,7 +75,7 @@ starship_precmd() {
eval "$_PRESERVED_PROMPT_COMMAND"
fi
local -a ARGS=(--terminal-width="${COLUMNS}" --status="${STARSHIP_CMD_STATUS}" --pipestatus="${STARSHIP_PIPE_STATUS[*]}" --jobs="${NUM_JOBS}")
local -a ARGS=(--terminal-width="${COLUMNS}" --status="${STARSHIP_CMD_STATUS}" --pipestatus="${STARSHIP_PIPE_STATUS[*]}" --jobs="${NUM_JOBS}" --keymap="$STARSHIP_KEYMAP")
# Prepare the timer data, if needed.
if [[ -n "${STARSHIP_START_TIME-}" ]]; then
STARSHIP_END_TIME=$(::STARSHIP:: time)

View File

@ -36,6 +36,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
// The result: in non-vi fish, keymap is always reported as "insert"
let mode = match (&context.shell, keymap) {
(Shell::Fish, "default")
| (Shell::Bash, "vicmd")
| (Shell::Zsh, "vicmd")
| (Shell::Cmd | Shell::PowerShell, "vi") => ShellEditMode::Normal,
(Shell::Fish, "visual") => ShellEditMode::Visual,