Add fish support for enter_accept
(#1315)
* Add fish support for `enter_accept` Also fixes shell detection. Who trusted me to write jetlagged code last night huh? * Document
This commit is contained in:
parent
88f3e2a04f
commit
2f9df9350d
5 changed files with 20 additions and 7 deletions
|
@ -115,7 +115,12 @@ pub fn get_current_dir() -> String {
|
|||
|
||||
pub fn is_zsh() -> bool {
|
||||
// only set on zsh
|
||||
env::var("ZSH_VERSION").is_ok()
|
||||
env::var("ATUIN_SHELL_ZSH").is_ok()
|
||||
}
|
||||
|
||||
pub fn is_fish() -> bool {
|
||||
// only set on zsh
|
||||
env::var("ATUIN_SHELL_FISH").is_ok()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
@ -703,9 +703,10 @@ pub async fn history(
|
|||
|
||||
if index < results.len() {
|
||||
let mut command = results.swap_remove(index).command;
|
||||
if accept && utils::is_zsh() {
|
||||
if accept && (utils::is_zsh() || utils::is_fish()) {
|
||||
command = String::from("__atuin_accept__:") + &command;
|
||||
}
|
||||
|
||||
// index is in bounds so we return that entry
|
||||
Ok(command)
|
||||
} else if index == RETURN_ORIGINAL {
|
||||
|
|
|
@ -8,18 +8,25 @@ end
|
|||
|
||||
function _atuin_postexec --on-event fish_postexec
|
||||
set s $status
|
||||
|
||||
if test -n "$ATUIN_HISTORY_ID"
|
||||
ATUIN_LOG=error atuin history end --exit $s -- $ATUIN_HISTORY_ID &>/dev/null &
|
||||
disown
|
||||
end
|
||||
|
||||
set --erase ATUIN_HISTORY_ID
|
||||
end
|
||||
|
||||
function _atuin_search
|
||||
set h (ATUIN_LOG=error atuin search $argv -i -- (commandline -b) 3>&1 1>&2 2>&3)
|
||||
set h (ATUIN_SHELL_FISH=t ATUIN_LOG=error atuin search $argv -i -- (commandline -b) 3>&1 1>&2 2>&3)
|
||||
commandline -f repaint
|
||||
|
||||
if test -n "$h"
|
||||
commandline -r "$h"
|
||||
if string match -g '__atuin_accept__:*' "$h"
|
||||
eval (string match -r '__atuin_accept__:(.*|\s*)' "$h" | awk 'NR == 2')
|
||||
else
|
||||
commandline -r "$h"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -32,6 +39,7 @@ function _atuin_bind_up
|
|||
|
||||
# Only invoke atuin if we're on the top line of the command
|
||||
set -l lineno (commandline --line)
|
||||
|
||||
switch $lineno
|
||||
case 1
|
||||
_atuin_search --shell-up-key-binding
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
autoload -U add-zsh-hook
|
||||
|
||||
export ATUIN_SESSION=$(atuin uuid)
|
||||
export ATUIN_HISTORY="atuin history list"
|
||||
|
||||
_atuin_preexec() {
|
||||
local id
|
||||
|
@ -34,7 +33,7 @@ _atuin_search() {
|
|||
# swap stderr and stdout, so that the tui stuff works
|
||||
# TODO: not this
|
||||
# shellcheck disable=SC2048
|
||||
output=$(ATUIN_LOG=error atuin search $* -i -- $BUFFER 3>&1 1>&2 2>&3)
|
||||
output=$(ATUIN_SHELL_ZSH=t ATUIN_LOG=error atuin search $* -i -- $BUFFER 3>&1 1>&2 2>&3)
|
||||
|
||||
zle reset-prompt
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ remote sync server. Any longer than this and the request will fail.
|
|||
## enter_accept
|
||||
Default: false
|
||||
|
||||
Only supported on Zsh.
|
||||
Only supported on Zsh and Fish.
|
||||
|
||||
When set to true, Atuin will default to immediately executing a command rather
|
||||
than the user having to press enter twice. Pressing tab will return to the
|
||||
|
|
Loading…
Reference in a new issue