summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-02-26 11:28:25 +0800
committerGitHub <noreply@github.com>2024-02-26 11:28:25 +0800
commitff0ec15e065957a0da197711f6e3adfb9992325a (patch)
tree9d0d588d8365b6c850072dd69532995c63b001e7 /scripts
parentaec1b707afb1cf80ff4eb8591e1cd050fffe47b0 (diff)
downloadaichat-ff0ec15e065957a0da197711f6e3adfb9992325a.tar.gz
feat: add shell integration (#323)
Diffstat (limited to 'scripts')
-rw-r--r--scripts/integration.bash7
-rw-r--r--scripts/integration.fish9
-rw-r--r--scripts/integration.ps110
-rw-r--r--scripts/integration.zsh11
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