2022-04-15 05:18:49 +02:00
|
|
|
# This script should be sourced inside of .bashrc to integrate bash with hishtory
|
|
|
|
# This is the same as config.sh, except it doesn't run the save process in the background. This is crucial to making tests reproducible.
|
|
|
|
|
2022-09-28 06:10:45 +02:00
|
|
|
# Implementation of running before/after every command based on https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/
|
|
|
|
function __hishtory_precommand() {
|
2022-04-15 05:18:49 +02:00
|
|
|
if [ -z "$HISHTORY_AT_PROMPT" ]; then
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
unset HISHTORY_AT_PROMPT
|
|
|
|
|
|
|
|
# Run before every command
|
2022-04-19 07:36:57 +02:00
|
|
|
HISHTORY_START_TIME=`date +%s`
|
2022-04-15 05:18:49 +02:00
|
|
|
}
|
2022-09-28 06:10:45 +02:00
|
|
|
trap "__hishtory_precommand" DEBUG
|
2022-04-15 05:18:49 +02:00
|
|
|
|
|
|
|
HISHTORY_FIRST_PROMPT=1
|
2022-09-28 06:10:45 +02:00
|
|
|
function __hishtory_postcommand() {
|
2022-04-15 05:18:49 +02:00
|
|
|
EXIT_CODE=$?
|
|
|
|
HISHTORY_AT_PROMPT=1
|
|
|
|
|
|
|
|
if [ -n "$HISHTORY_FIRST_PROMPT" ]; then
|
|
|
|
unset HISHTORY_FIRST_PROMPT
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Run after every prompt
|
2022-04-18 04:54:17 +02:00
|
|
|
hishtory saveHistoryEntry bash $EXIT_CODE "`history 1`" $HISHTORY_START_TIME
|
2022-04-15 05:18:49 +02:00
|
|
|
}
|
2022-09-28 06:10:45 +02:00
|
|
|
PROMPT_COMMAND="__hishtory_postcommand; $PROMPT_COMMAND"
|
2022-09-28 07:25:57 +02:00
|
|
|
export HISTTIMEFORMAT=$HISTTIMEFORMAT
|
2022-10-21 09:14:28 +02:00
|
|
|
|
|
|
|
__history_control_r() {
|
|
|
|
READLINE_LINE=$(hishtory tquery "$READLINE_LINE" | tr -d '\n')
|
|
|
|
READLINE_POINT=0x7FFFFFFF
|
|
|
|
}
|
|
|
|
|
|
|
|
__hishtory_bind_control_r() {
|
|
|
|
bind -x '"\C-r": __history_control_r'
|
|
|
|
}
|
|
|
|
|
|
|
|
[ "$(hishtory config-get enable-control-r)" = true ] && __hishtory_bind_control_r
|