Commit Graph

144 Commits (e97d132b3bef126b3f9c8f61b8a0bbefb9b29a9a)

Author SHA1 Message Date
Eric Freese 7d968869e3 Return if no completion found 7 years ago
Eric Freese 8593624996
Merge pull request #330 from zsh-users/features/completion-suggestions
Features/completion suggestions
7 years ago
Eric Freese 1ec43c7291 Fix error when single quote entered into buffer
Error looked something like:

```
% echo 'f(zpty):8: unmatched '
_zsh_autosuggest_capture_completion:zpty:9: no such pty command: zsh_autosuggest_completion_pty
_zsh_autosuggest_capture_completion:zpty:14: no such pty command: zsh_autosuggest_completion_pty
_zsh_autosuggest_capture_completion:zpty:21: no such pty command: zsh_autosuggest_completion_pty
```

According to `man zshmodules`, the args to `zpty` are "concatenated with
spaces between, then executed as a command, as if passed to the eval
builtin." So we need to escape the `$` so that `$1` is passed to eval
instead of the value of `$1`.
7 years ago
Martin Väth 43a011026f Do not leak global variables REPLY and strategy
https://github.com/zsh-users/zsh-autosuggestions/issues/341
7 years ago
Eric Freese cd81522b30 Attempt to kill async worker process when new request comes in
See http://www.zsh.org/mla/users/2018/msg00432.html
7 years ago
Eric Freese d7171232c3 Merge branch 'develop' into features/completion-suggestions 7 years ago
Eric Freese 9cb0101512 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
7 years ago
Eric Freese b0ffc34fb8 completion should be a local var 7 years ago
Eric Freese 4e466f0e4e Support widgets starting with dashes (ex: `-a-widget`)
Fixes #337
7 years ago
Eric Freese bcbdad83e9 Support fallback strategies by setting array in config 7 years ago
Eric Freese 949c374195 Fix `completion` strategy on older versions of zsh
`zpty -r` with a pattern seems to have some funky behavior on older
versions, giving unpredictable results
7 years ago
Eric Freese 973205005c Add spec for `completion` strategy 7 years ago
Eric Freese cf458d2a3b Fix completion suggestions when compinit is not enabled
Need to make sure compinit is called in the pty or the shell hangs
7 years ago
Eric Freese 3dbd9afaec Fix completion strategy killing other pty's
Only a problem in synchronous mode
7 years ago
Eric Freese 6ffaec725a Allow completion suggestions from current shell
The `zsh -f` running in the PTY doesn't know about the non-exported
variables and functions defined in the original shell, thus can't make
suggestions for them. Run local functions in the PTY instead of a new
`zsh` process.

We have to handle things differently based on whether zle is active or
not (async vs. sync mode).
7 years ago
Eric Freese 0a548c62f4 Forgot to make after small tweak 7 years ago
Eric Freese 4cca26ec84 Modify completion code to better fit our needs
Only need the first completion result
7 years ago
Eric Freese c5551daabc Default strategy now tries history first and falls back to completion 7 years ago
Eric Freese 82b08e2dc8 First pass at getting suggestions from completion engine (#111)
Uses https://github.com/Valodim/zsh-capture-completion with some slight
modifications.
7 years ago
Eric Freese 63789e96b5 Fix handling of newline + carriage return in async pty (#333) 7 years ago
Eric Freese aa0b10db44 v0.4.3 7 years ago
Eric Freese c113e49fe2 Update license copyright year 7 years ago
Eric Freese df5fb858aa Destroy old pty even if it's no longer running (#249)
For unknown reasons, the pty will occasionally quit running. In these
cases, we still want to remove it so that a fresh one can be created. We
don't actually need this check because error messages from `zle` and
`zpty` are redirected to /dev/null.

One sure way to kill all currently running pty's is to run `exit` in a
subshell. Even without zsh-autosuggestions loaded, the following works:

    % zmodload zsh/zpty
    % zpty -b foo cat
    % zpty -b bar cat
    % zpty
    (31689) bar: cat
    (31666) foo: cat
    % $(exit)
    % zpty
    (finished) bar: cat
    (finished) foo: cat
7 years ago
Harm te Hennepe 59c72c6805 Don't break kill ring rotation 7 years ago
Eric Freese 393f7b8bb9 Fix vi-mode partial-accept
Issue #188. PR #324.

Thanks to @toadjaune and @IngoHeimbach.
7 years ago
Eric Freese 42f5a06f7f Need to reset the POSTDISPLAY if exiting early
Specific case where this matters is following:

Be in vi insert mode with some text in the buffer and the cursor at the
end of the buffer. Press `esc` to trigger `vi-cmd-mode widget`, then
before the cursor moves (KEYTIMEOUT), press `h` to trigger
`vi-backward-char` widget. When `vi-cmd-mode` original widget exits,
KEYS_QUEUED_COUNT will be non-zero and the suggestion will be lost.
7 years ago
Eric Freese 60aff2d944 Remove unused local `$suggestion` variable 7 years ago
Eric Freese 3136700ccf Don't fetch suggestions after [up,down]-line-or-beginning-search
These widgets rely on `$LASTWIDGET` being set to restore the cursor
position. When asynchronous suggestions are enabled, and the widget
triggers a suggestion to be fetched, `autosuggest-suggest` will be
called and $LASTWIDGET will be set to it.
7 years ago
dana c978004c0e ..._invoke_original_widget: Return 0 when given no arguments
`_zsh_autosuggest_widget_accept()` (&al.) passes this function's return status
on, and ZLE rings the bell if it's >0. Not having an original widget isn't an
error condition, so always returning 0 here should be OK to avoid the bell

Fixes #228
7 years ago
Eric Freese 15931f04ff v0.4.2 8 years ago
Eric Freese 4ea825faf8 Fix #247 and #248 without using `(b)` flag
To support older versions of zsh (< 5.0.8).

We were missing the EXTENDED_GLOB option that allows use of `(#m)` flag.
8 years ago
Eric Freese a1babef972 Revert "Simplify escaping of pattern and fix match_prev_cmd strategy"
This reverts commit 7f8ff2867c.
8 years ago
Eric Freese 9f9237ab8a v0.4.1 8 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 9f1f322979 Update comment about KEYS_QUEUED_COUNT support
Now that patch has released
8 years ago
Eric Freese 256293cbb6 Use typeset -g to avoid warnnestedvar warnings
Fixes github issue #271
8 years ago
Stefan Siegel 7f8ff2867c Simplify escaping of pattern and fix match_prev_cmd strategy
Maybe this is also a fix for #247, #248 and #258. Supersedes #267.

Testcase:
Using match_prev_cmd strategy and with these lines in history:
echo '1^'
echo '2^'
echo '1^'

type:
echo       (unexpected suggestion echo '1^' instead of echo '2^')
echo '1^1  (wrong suggestion echo '1^1echo '1^')
echo '1^#  (error "bad math expression")
8 years ago
Alexander Neumann 1915e28882 Add 'emacs-forward-word'
This commit adds the 'emacs-forward-word' widget to the list of partial
accept widgets.
8 years ago
Eric Freese 14179d869d Bump version 8 years ago
Eric Freese 83129dd796 Make asynchronous suggestions disabled by default
While they are still experimental
8 years ago
Eric Freese a2f0ffb122 Enabling suggestions should not fetch a suggestion if buffer is empty 8 years ago
Eric Freese 7d4a1d9a4a Add enable/disable/toggle widgets to disable suggestion functionality
[GitHub #219]

Intended to be helpful for folks using bracketed-paste-magic and other
widgets that use `zle -U`.
8 years ago
Eric Freese e1959d0f61 Put in a general fix for #219 - Handling input from `zle -U`
Depends on patch to ZSH from workers/40702:

  http://www.zsh.org/mla/workers/2017/msg00414.html
8 years ago
Eric Freese c52c428793 Fix issues with widgets wrapped by other plugins
Puts in a better fix for #126 and related issues.
8 years ago
Eric Freese c9a51e0c4c Handle dashes at the beginning of commands 8 years ago
Eric Freese 48a21bf79e [cleanup] Remove an extra newline 8 years ago
Eric Freese 4afbbbadda We only need to run the feature detection if starting async 8 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.
8 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.
8 years ago
Eric Freese 75e850577d Gracefully handle being sourced multiple times
Should fix #126
8 years ago