diff options
| author | Michelle Tilley <michelle@michelletilley.net> | 2026-03-12 14:52:15 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-12 14:52:15 -0700 |
| commit | f7431afe2f0b424b6dcd0a76138607857563e008 (patch) | |
| tree | 2557c66400371ba2d353fbf847406c4028c3aafa /crates/atuin-ai/src/commands/init.rs | |
| parent | chore: update changelog (diff) | |
| download | atuin-f7431afe2f0b424b6dcd0a76138607857563e008.zip | |
feat: Add `atuin setup` (#3257)
Diffstat (limited to 'crates/atuin-ai/src/commands/init.rs')
| -rw-r--r-- | crates/atuin-ai/src/commands/init.rs | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/crates/atuin-ai/src/commands/init.rs b/crates/atuin-ai/src/commands/init.rs index caf4c8d9..6b23e936 100644 --- a/crates/atuin-ai/src/commands/init.rs +++ b/crates/atuin-ai/src/commands/init.rs @@ -43,7 +43,10 @@ _atuin_ai_question_mark() { # Clean up the inline viewport _atuin_ai_cleanup - if [[ $output == __atuin_ai_cancel__ ]]; then + if [[ $output == __atuin_ai_print__:* ]]; then + zle -I + echo "${output#__atuin_ai_print__:}" + elif [[ $output == __atuin_ai_cancel__ ]]; then zle reset-prompt elif [[ $output == __atuin_ai_execute__:* ]]; then RBUFFER="" @@ -86,8 +89,11 @@ _atuin_ai_question_mark() { local output output=$(atuin ai inline --hook 3>&1 1>&2 2>&3) - if [[ $output == __atuin_ai_cancel__ ]]; then - # User cancelled, do nothing + if [[ $output == __atuin_ai_print__:* ]]; then + echo "${output#__atuin_ai_print__:}" + READLINE_LINE="" + READLINE_POINT=0 + elif [[ $output == __atuin_ai_cancel__ ]]; then READLINE_LINE="" READLINE_POINT=0 elif [[ $output == __atuin_ai_execute__:* ]]; then @@ -145,8 +151,10 @@ function _atuin_ai_question_mark # Run atuin ai inline, swapping stdout and stderr set -l output (atuin ai inline --hook 3>&1 1>&2 2>&3 | string collect) - if test "$output" = "__atuin_ai_cancel__" - # User cancelled, do nothing + 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 @@ -188,6 +196,7 @@ mod tests { assert!(result.contains("_atuin_ai_question_mark")); assert!(result.contains("bindkey")); assert!(result.contains("atuin ai inline --hook")); + assert!(result.contains("__atuin_ai_print__")); assert!(result.contains("__atuin_ai_cancel__")); assert!(result.contains("__atuin_ai_execute__")); assert!(result.contains("__atuin_ai_insert__")); @@ -200,6 +209,7 @@ mod tests { assert!(result.contains("bind")); assert!(result.contains("READLINE_LINE")); assert!(result.contains("atuin ai inline --hook")); + assert!(result.contains("__atuin_ai_print__")); assert!(result.contains("__atuin_ai_cancel__")); assert!(result.contains("__atuin_ai_execute__")); assert!(result.contains("__atuin_ai_insert__")); @@ -212,6 +222,7 @@ mod tests { assert!(result.contains("bind")); assert!(result.contains("commandline")); assert!(result.contains("atuin ai inline --hook")); + assert!(result.contains("__atuin_ai_print__")); assert!(result.contains("__atuin_ai_cancel__")); assert!(result.contains("__atuin_ai_execute__")); assert!(result.contains("__atuin_ai_insert__")); |
