2022-10-19 04:55:41 +02:00
|
|
|
function _hishtory_post_exec --on-event fish_postexec
|
|
|
|
# Runs after <ENTER>, but before the command is executed
|
|
|
|
set --global _hishtory_command $argv
|
|
|
|
set --global _hishtory_start_time (date +%s)
|
2023-08-27 23:24:59 +02:00
|
|
|
# TODO: Implement pre-saving for fish
|
2022-10-19 04:55:41 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
set --global _hishtory_first_prompt 1
|
|
|
|
|
|
|
|
function __hishtory_on_prompt --on-event fish_prompt
|
|
|
|
# Runs after the command is executed in order to render the prompt
|
|
|
|
# $? contains the exit code
|
|
|
|
set _hishtory_exit_code $status
|
|
|
|
if [ -n "$_hishtory_first_prompt" ]
|
|
|
|
set --global -e _hishtory_first_prompt
|
|
|
|
else if [ -n "$_hishtory_command" ]
|
2022-10-24 02:35:02 +02:00
|
|
|
hishtory saveHistoryEntry fish $_hishtory_exit_code "$_hishtory_command" $_hishtory_start_time & # Background Run
|
|
|
|
# hishtory saveHistoryEntry fish $_hishtory_exit_code "$_hishtory_command" $_hishtory_start_time # Foreground Run
|
2022-10-24 00:45:50 +02:00
|
|
|
set --global -e _hishtory_command # Unset _hishtory_command so we don't double-save entries when fish_prompt is invoked but fish_postexec isn't
|
2022-10-19 04:55:41 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-10-21 08:39:56 +02:00
|
|
|
function __hishtory_on_control_r
|
|
|
|
set -l tmp (mktemp -t fish.XXXXXX)
|
|
|
|
set -x init_query (commandline -b)
|
2022-11-12 01:42:07 +01:00
|
|
|
HISHTORY_TERM_INTEGRATION=1 hishtory tquery $init_query > $tmp
|
2022-10-21 08:39:56 +02:00
|
|
|
set -l res $status
|
|
|
|
commandline -f repaint
|
|
|
|
if [ -s $tmp ]
|
2022-11-20 07:27:08 +01:00
|
|
|
commandline -r -- (cat $tmp)
|
2022-10-21 08:39:56 +02:00
|
|
|
end
|
|
|
|
rm -f $tmp
|
|
|
|
end
|
|
|
|
|
2022-10-23 08:52:10 +02:00
|
|
|
[ (hishtory config-get enable-control-r) = true ] && bind \cr __hishtory_on_control_r
|