diff options
| author | sigoden <sigoden@gmail.com> | 2024-02-26 11:28:25 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-26 11:28:25 +0800 |
| commit | ff0ec15e065957a0da197711f6e3adfb9992325a (patch) | |
| tree | 9d0d588d8365b6c850072dd69532995c63b001e7 /scripts | |
| parent | aec1b707afb1cf80ff4eb8591e1cd050fffe47b0 (diff) | |
| download | aichat-ff0ec15e065957a0da197711f6e3adfb9992325a.tar.gz | |
feat: add shell integration (#323)
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/integration.bash | 7 | ||||
| -rw-r--r-- | scripts/integration.fish | 9 | ||||
| -rw-r--r-- | scripts/integration.ps1 | 10 | ||||
| -rw-r--r-- | scripts/integration.zsh | 11 |
4 files changed, 37 insertions, 0 deletions
diff --git a/scripts/integration.bash b/scripts/integration.bash new file mode 100644 index 0000000..572c7be --- /dev/null +++ b/scripts/integration.bash @@ -0,0 +1,7 @@ +_aichat_bash() { + if [[ -n "$READLINE_LINE" ]]; then + READLINE_LINE=$(aichat -e "$READLINE_LINE") + READLINE_POINT=${#READLINE_LINE} + fi +} +bind -x '"\ee": _aichat_bash'
\ No newline at end of file diff --git a/scripts/integration.fish b/scripts/integration.fish new file mode 100644 index 0000000..2d4dfb9 --- /dev/null +++ b/scripts/integration.fish @@ -0,0 +1,9 @@ +function _aichat_fish + set -l _old (commandline) + if test -n $_old + echo -n "⌛" + commandline -f repaint + commandline (aichat -e $_old) + end +end +bind \ee _aichat_fish
\ No newline at end of file diff --git a/scripts/integration.ps1 b/scripts/integration.ps1 new file mode 100644 index 0000000..6a94189 --- /dev/null +++ b/scripts/integration.ps1 @@ -0,0 +1,10 @@ +Set-PSReadLineKeyHandler -Chord "alt+e" -ScriptBlock { + $_old = $null + [Microsoft.PowerShell.PSConsoleReadline]::GetBufferState([ref]$_old, [ref]$null) + if ($_old) { + [Microsoft.PowerShell.PSConsoleReadLine]::Insert('⌛') + $_new = (aichat -e $_old) + [Microsoft.PowerShell.PSConsoleReadLine]::DeleteLine() + [Microsoft.PowerShell.PSConsoleReadline]::Insert($_new) + } +}
\ No newline at end of file diff --git a/scripts/integration.zsh b/scripts/integration.zsh new file mode 100644 index 0000000..2328bd6 --- /dev/null +++ b/scripts/integration.zsh @@ -0,0 +1,11 @@ +_aichat_zsh() { + if [[ -n "$BUFFER" ]]; then + local _old=$BUFFER + BUFFER+="⌛" + zle -I && zle redisplay + BUFFER=$(aichat -e "$_old") + zle end-of-line + fi +} +zle -N _aichat_zsh +bindkey '\ee' _aichat_zsh
\ No newline at end of file |
