PR #420 addressed the existence of pagination in a fish prompt by trying
to track when pagination was enabled and disabled. This introduced
atuin-specific bindings for common keys: `\t`, `\e`, `\r`, and `\n`
which exports a variable and informs the `_autiun_search` function to
not show the TUI.
Fish has a commandline function that will instead tell you whether
pagination is enabled so the user doesn't need to keep track of that
state. This PR uses this function, `commandline -P` to replace the prior
TUI supression scheme. Removing these extra function calls allows us to
remove the additional bindings which were breaking fish vi key bindings.
Replacing the value for `bind -M insert \e` completely breaks vi mode by
blocking the user from exiting insert mode. By removing these extra
binds, this PR restores fish vi mode compatability.
Inspired by the ClickHouse system contributors table, I thought this is
a nice extra way to say thank you to all those who put time and energy
into our project
Since we pass $BUFFER to atuin search, retaining RBUFFER (the part of
the buffer to the right of the cursor) probably doesn't make sense. The
advantage of setting RBUFFER and LBUFFER separately instead of setting
BUFFER is that the cursor is positioned after the end of LBUFFER instead
of remaining where it was before atuin was called.
* Allow stateless commands to be run without config/database
Fixes an issue where gen-completions fails trying to create a config
directory in restrained build environments/distribution.
* move non-db commands up to core subcommands
* re-add lost lines
* re-add lost lines
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
* Batch input events and only query once they are finished
This simplifies the code a lot (no more bounded channel) and yields
the same performance improvement with scroll wheel spam while fixing copy/paste
* Clippy
* fmt
* Use blocking wait before emptying events channel
This was causing a busy loop
* Update query on filter mode change
* Adds the rpassword dependency
* Provides only a prompt based input for login and register with a hidden prompt for password
* Adds option based inputs for login and register commands
* Password can also be provided as an option
Co-authored-by: Satyarth <satyarth.sampath@gojek.com>
* Attempting to implement zsh-histdb import
Import compiles passes tests, but doesn't run b/c of async runtime.
zsh-histdb uses sqlite, and sqlx-rs is async, but import code is sync.
* More working on importing histdb
* Rewriting tests and using `Vec<u8>` instead of `String`
- Rewriting tests to eliminate depencency on local file system
- Using `Vec<u8>` for command strings instead of `String` to eliminate
the utf8 errors i was seeing previously. Seems to be working.
* Running fmt
Co-authored-by: Bradley Noyes <b@noyes.dev>
binding on "up" can conflict with the default fish keybindings as when
in tab-completion mode, you are supposed to be able to use arrow keys
to navigate the grid of suggestions, however pressing "up" will open
the tui instead.
This attempts to work around it by tracking when the user is probably in
a tab completion mode by setting a variable that we use to determine
whether to open atuin or perform the default fish up action
* stat command parsing is handled without subcommands
* Updates match clause based on PR review
Co-authored-by: Conrad Ludgate <oon@conradludgate.com>
* updates value returned by match based on PR review
* adds vscode to gitignore
* use an if statement instead of match
Co-authored-by: Satyarth <satyarth.sampath@gojek.com>
Co-authored-by: Conrad Ludgate <oon@conradludgate.com>
* Add history filters, and hotkey toggle
Switch between different search modes to narrow down the history you
want - global search for all history, host for all history from your
current machine, session for the current shell session, and directory
for the current directory
The default can be configured via `filter_mode`
* Update docs
* Add context
Resolve#189
We were throwing an OutOfRangeError. This occurs when you attempt to
convert to a duration, and your input is <0. A value in the future would
have done this. This is especially noticeable during DST...
* remove unused environment var loading entire history into an env var
* Add Alt+backspace and Ctrl+u keybinds for deleting by word and by line, respectively
* Add gen-completions subcommand for generating shell completions
* Update documentation about generating shell completions
* Include the shell completions in release tarball
* feat: allow credential input from stdin for registration
This changes the options for register to be optional. If arguments are
not given, the program will ask for them interactively.
* feat: allow credential input from stdin for login
* style: apply cargo fmt