Commit Graph

18 Commits (85919cd1ffa7d2d5412f6d3fe437ebdbeeec4fc5)

Author SHA1 Message Date
Eric Freese 6c634c1e35 Enable async mode by default in newer versions of zsh
Allow users to override the default by unsetting (or setting) the
ZSH_AUTOSUGGEST_USE_ASYNC variable.

See GitHub issue #498.
6 years ago
Eric Freese 19e375bbc8 cleanup: Consolidate `autoload`s 6 years ago
Eric Freese c1910348c7 Implement completion suggestion strategy (#111)
Based on https://github.com/Valodim/zsh-capture-completion

`zpty -r` with a pattern seems to have some funky behavior on older
versions, giving unpredictable results

Don't use `-s` option to `zmodload`. It is not available in zsh versions
older than 5.3

If running in sync mode and a completion takes a long time, the user can
^C out of it. We need to use `always` in the strategy function or the
pty will not be destroyed in this case and the next time we go to create
it, it will fail, making the shell unusable.

User can have many different completion styles set that will modify what
they've already typed. These styles will result in suggestions that
don't match what the user has already typed. We try our best to unset
some of the more problematic ones, but add some code to fetch to
invalidate suggestions that don't match what the user's already typed.
6 years ago
Eric Freese b9fee8a324 Allow disabling of automatic widget re-binding
Addresses github #411
6 years ago
Eric Freese e405afab29 Refactor async mode to no longer use zpty
See technique used in `fast-syntax-highlighting`:
- ca2e18bbc9
- http://www.zsh.org/mla/users/2018/msg00424.html

Also see http://www.zsh.org/mla/users/2018/msg00432.html

In async response handler:
- We only want to read data in case of POLLIN or POLLHUP. Not POLLNVAL
  or select error.
- We always want to remove the handler, so it doesn't get called in an
  infinite loop when error is nval or err.

There is an upstream bug that prevents ctrl-c from resetting the prompt
immediately after a suggestion has been fetched asynchronously. A patch
has been submitted, but a workaround for now is to add `command true`
after the exec.

See https://github.com/zsh-users/zsh-autosuggestions/issues/364
6 years ago
Kaleb Elwert 940e10a691 Fix conditionals to use [[ and (( rather than [
This fixes a small issue in src/widgets.zsh which makes it so if you
alias [ to g[ (as is done in prezto if the gnu-utility module is loaded)
autosuggestions would fail.

The documentation for GNU test mentions that -o and -a should be avoided
if possible because it's not very clear. Also, with zsh and [[ -o
actually tests if an option is set, which makes this option even more
confusing.
8 years ago
Eric Freese 4afbbbadda We only need to run the feature detection if starting async 9 years ago
Eric Freese e3fa4e4904 Don't do anything but re-bind widgets on each precmd
There's no need to re-run feature detection or async_start on every
precmd. Just do those once.
9 years ago
Eric Freese 4321fc097c We need to bind on every precmd to ensure we wrap other wrappers
Specifically, highlighting breaks if our widgets are wrapped by z-syn-h
widgets.
9 years ago
Eric Freese dcce973287 Remove support for long-deprecated options
These options have been deprecated for over a year.
9 years ago
Eric Freese e3eb286ea2 Lots of little async cleanups 9 years ago
Eric Freese f33b605a63 Move async initialization into `start` function to keep in one place 9 years ago
Eric Freese 78ba07179a Add feature detection
Checks whether `zpty` gives a file descriptor, which was not the case in
older versions of zsh.

Based on a4b2f81c96/async.zsh (L395-L401)
9 years ago
Eric Freese 3f57198d07 Only bind widgets once, on initial sourcing 9 years ago
Eric Freese ab8f295225 First pass at async functionality 9 years ago
Eric Freese ebcfc46b72 Comment formatting 10 years ago
Eric Freese 00bd0e9125 Use `add-zsh-hook` to remove need to call `autosuggest_start`. 10 years ago
Eric Freese 775dd20706 Rewrite 10 years ago