diff --git a/shell/navi.plugin.fish b/shell/navi.plugin.fish index 66fc71d..d8fef0a 100644 --- a/shell/navi.plugin.fish +++ b/shell/navi.plugin.fish @@ -1,5 +1,3 @@ -#!/usr/bin/env fish - function __call_navi navi --print end @@ -16,7 +14,37 @@ function navi-widget -d "Show cheat sheets" commandline -f repaint end -bind \cg navi-widget -if bind -M insert > /dev/null 2>&1 - bind -M insert \cg navi-widget +# set -g navi_last_cmd "" + +function smart_replace + set -l current_process (commandline -p) + + if [ $current_process = "" ] + commandline -p (navi --print) + commandline -f repaint + else + set -l best_match (navi --print --best-match --query $current_process) + + if not [ $best_match > /dev/null ]; + commandline -p $current_process + commandline -f repaint + return + end + + if [ $best_match = "" ] + commandline -p (navi --print --query $current_process) + commandline -f repaint + else if [ $current_process != $best_match ] + commandline -p $best_match + commandline -f repaint + else if [ $current_process = $best_match ] + commandline -p (navi --print --query $current_process) + commandline -f repaint + end + end +end + +bind \cg smart_replace +if bind -M insert > /dev/null 2>&1 + bind -M insert \cg smart_replace end