mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
feat(config): add Atuin AI inline integration and keybinding
This commit is contained in:
1 parent
8a33be3e28
commit
a82921c9e2
3 files changed
+53
No files matched your search
@@ -35,6 +35,7 @@ test -s ~/.config/envman/load.fish; and source ~/.config/envman/load.fish
|
||||
|
||||
if status is-interactive
|
||||
atuin init fish | source
|
||||
atuin ai init fish | source
|
||||
end
|
||||
|
||||
# cmux
|
||||
@@ -44,3 +45,52 @@ fish_add_path "/home/prad/.cache/.bun/bin"
|
||||
for _f in $HOME/.config/herdr/plugins/github/herdr-automatic-rename-*/shell/hook.fish
|
||||
test -r "$_f"; and source "$_f"; and break
|
||||
end
|
||||
|
||||
|
||||
# Question mark at start of line - natural language mode
|
||||
function _atuin_ai_question_mark
|
||||
set -l buf (commandline -b)
|
||||
|
||||
# If buffer is empty or just contains '?', trigger natural language mode
|
||||
if test -z "$buf" -o "$buf" = "?"
|
||||
commandline -r ""
|
||||
|
||||
# Close the semantic prompt zone (OSC 133 C) so terminals with
|
||||
# shell integration don't erase the TUI's output during their
|
||||
# resize-time prompt reflow.
|
||||
printf '\033]133;C\007' > /dev/tty
|
||||
|
||||
# Run atuin ai inline, swapping stdout and stderr
|
||||
set -l output (atuin ai inline --hook 3>&1 1>&2 2>&3 | string collect)
|
||||
|
||||
if string match --quiet '__atuin_ai_print__:*' "$output"
|
||||
echo (string replace "__atuin_ai_print__:" "" -- "$output" | string collect)
|
||||
commandline -f repaint
|
||||
else if test "$output" = "__atuin_ai_cancel__"
|
||||
commandline -f repaint
|
||||
else if string match --quiet '__atuin_ai_execute__:*' "$output"
|
||||
# Execute the command immediately
|
||||
set -l cmd (string replace "__atuin_ai_execute__:" "" -- "$output" | string collect)
|
||||
commandline -r "$cmd"
|
||||
commandline -f repaint
|
||||
commandline -f execute
|
||||
else if string match --quiet '__atuin_ai_insert__:*' "$output"
|
||||
# Insert the command for editing
|
||||
set -l cmd (string replace "__atuin_ai_insert__:" "" -- "$output" | string collect)
|
||||
commandline -r "$cmd"
|
||||
commandline -f repaint
|
||||
else if test -n "$output"
|
||||
# Default: insert for editing
|
||||
commandline -r "$output"
|
||||
commandline -f repaint
|
||||
else
|
||||
commandline -f repaint
|
||||
end
|
||||
else if not contains -- "$fish_key_bindings" fish_vi_key_bindings fish_hybrid_key_bindings
|
||||
# Not at empty prompt, just insert the question mark
|
||||
commandline -i "?"
|
||||
end
|
||||
end
|
||||
|
||||
# Set up keybindings
|
||||
bind "?" _atuin_ai_question_mark
|
||||
Reference in new issue
Block a user