preexec: set options before load
By setting `__bp_delay_install`, we avoid any immediate initialization at all. We then override two troublesome functions before calling `__bp_install_after_session_init()`. The `__bp_install_after_session_init()` function doesn't enable the DEBUG trap, just sets `$PROMPT_COMMAND` to include `__bp_install()`, so the actual final `$PROMPT_COMMAND` is not finished, and DEBUG trap set, until after the first prompt is displayed.pull/1979/head
parent
2d1bd82575
commit
9ce199c251
|
|
@ -155,6 +155,3 @@ if ! _command_exists reload && [[ -n "${BASH_IT_RELOAD_LEGACY:-}" ]]; then
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Disable trap DEBUG on subshells - https://github.com/Bash-it/bash-it/pull/1040
|
|
||||||
set +T
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,25 @@
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
# shellcheck disable=1090
|
# shellcheck disable=SC2034
|
||||||
source "${BASH_IT}"/vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh
|
#
|
||||||
|
# Load the `bash-preexec.sh` library, and define helper functions
|
||||||
|
|
||||||
|
## Prepare, load, fix, and install `bash-preexec.sh`
|
||||||
|
|
||||||
|
# Disable immediate `$PROMPT_COMMAND` modification
|
||||||
|
__bp_delay_install="delayed"
|
||||||
|
|
||||||
|
# shellcheck source-path=SCRIPTDIR/../github.com/rcaloras/bash-preexec
|
||||||
|
source "${BASH_IT?}/vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh"
|
||||||
|
|
||||||
|
# Block damanaging user's `$HISTCONTROL`
|
||||||
|
function __bp_adjust_histcontrol() { :; }
|
||||||
|
|
||||||
|
# Don't fail on readonly variables
|
||||||
|
function __bp_require_not_readonly() { :; }
|
||||||
|
|
||||||
|
# Disable trap DEBUG on subshells - https://github.com/Bash-it/bash-it/pull/1040
|
||||||
|
__bp_enable_subshells= # blank
|
||||||
|
set +T
|
||||||
|
|
||||||
|
# Modify `$PROMPT_COMMAND` now
|
||||||
|
__bp_install_after_session_init
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue