Commit Graph

178 Commits

Author SHA1 Message Date
Eric Freese db290c518b cleanup: Leave max size config unset by default to match other options 2019-04-10 11:43:20 -06:00
Eric Freese d8ba53678e cleanup: Use `+` param expansion flag in arithmetic context 2019-04-10 11:42:25 -06:00
Eric Freese 4cd210b70d Fix async suggestions when SH_WORD_SPLIT is set 2019-04-10 09:51:33 -06:00
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
2019-04-09 14:45:22 -06:00
Eric Freese a5dc4a8db4 Fix version in compiled plugin script 2019-04-09 14:43:48 -06:00
romkatv 4a82ff1ead speed up widget rebinding by removing redundant array subscripts 2019-04-01 14:56:53 -06:00
Eric Freese f76472272e cleanup: Remove unnecessary braces 2019-04-01 14:36:31 -06:00
Eric Freese 50579b3371 Move widget definitions inside anonymous function 2018-12-21 23:20:08 -07:00
dana aee1b10db6 Avoid warn_create_global warnings 2018-12-19 13:38:06 -06:00
Eric Freese e937e89267 Respect user's set options when running original widget
Fixes GitHub #379
2018-12-16 21:13:02 -07:00
Eric Freese 11251d97ca Merge branch 'master' into develop 2018-12-16 20:50:16 -07:00
Eric Freese 41657e3565 Revert async process substitution & completion strategy
They're not quite ready. Keep them on a feature branch for now.
2018-12-16 20:49:06 -07:00
Eric Freese 286656635c v0.5.0 2018-11-24 09:56:52 -07:00
Eric Nielsen 9e4d3c337f Don't overwrite config with default values
otherwise users are obliged to set the config values *after* sourcing
the plugin. They're not able to do it before. Also, re-sourcing the
plugin will reset the values to the defaults again.

See zimfw/zimfw#301

Fixes #335
2018-11-24 09:56:52 -07:00
Eric Freese a78ea16c50 Support fallback strategies by setting array in config 2018-11-24 09:56:30 -07:00
Eric Freese 62f5f14f2f default => history 2018-11-24 09:56:00 -07:00
Eric Freese 4540304fa0 Reset opts in some functions affected by GLOB_SUBST
Should fix GitHub #334
2018-11-19 15:15:48 -07:00
Eric Freese 4097d6e0ae Support widgets starting with dashes (ex: `-a-widget`)
Fixes #337
2018-11-19 15:15:48 -07:00
Eric Freese 0f80f9511d Fix handling of newline + carriage return in async pty (#333) 2018-11-19 15:15:48 -07:00
Eric Nielsen e61442161e Don't overwrite config with default values
otherwise users are obliged to set the config values *after* sourcing
the plugin. They're not able to do it before. Also, re-sourcing the
plugin will reset the values to the defaults again.

See zimfw/zimfw#301

Fixes #335
2018-11-18 12:39:23 -07:00
Eric Freese 681ffc7b28 Reset opts in some functions affected by GLOB_SUBST
Should fix GitHub #334
2018-07-13 22:16:53 -06:00
Eric Freese b8bf86f6ab
Merge pull request #359 from zsh-users/fixes/async-bad-file-descriptor
Fixes/async bad file descriptor
2018-07-13 20:50:31 -07:00
Eric Freese 7ab2124904 Kill async process by id when job control disabled 2018-07-13 21:48:25 -06:00
Eric Freese 88fe824ddf Add some error handling to 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.

In zsh source, see main zle event loop in zle_main.c raw_getbyte
function.
2018-07-13 11:26:57 -06:00
Eric Freese 93877f6b76 We also need to remove the handler when cancelling async request
Should fix GitHub #353
2018-07-13 11:25:59 -06:00
Eric Freese bd1fd97738 Cleanup unused async pty name 2018-07-02 22:38:20 -06:00
Eric Freese f1c3b98774 Only capture completions at the end of the buffer.
To prevent the suggestion from not starting with the buffer string.

Example:

`ls / /[cursor left][cursor left]b`

Before the patch, suggests `ls /b /ls /bin/ /`

After the patch, suggests `ls /b /bin/`.

https://github.com/zsh-users/zsh-autosuggestions/issues/343#issuecomment-401675712
2018-07-02 12:25:20 -06:00
Eric Freese 4869a757c8 Ensure we always destroy the zpty
If running in sync mode and a completion takes a long time, the user can
^C out of it. Without this patch, 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.
2018-07-02 12:25:20 -06:00
Eric Freese 302bd7c059 Setup zshexit hook immediately in both sync/async cases 2018-07-02 12:25:20 -06:00
Eric Freese 245f5d2ba2 Improve completion suggestions
Just insert the first completion directly into the buffer and read the
whole buffer from the zpty.
2018-07-02 12:25:20 -06:00
Martin Väth 8ae0283c90 Do not rely on implicit NULLCMD=cat 2018-07-02 12:21:49 -06:00
Eric Freese c0315e96d8 Don't use `-s` option to `zmodload`
It is not available in zsh versions older than 5.3
2018-06-30 16:54:33 -06:00
Eric Freese 5529102afc zpty module is only needed for `completion` strategy 2018-06-30 15:09:24 -06:00
Eric Freese dad6be4d5e Remove unused feature detection
Not needed after move away from zpty for async
2018-06-30 15:05:37 -06:00
Eric Freese 7d968869e3 Return if no completion found 2018-06-30 15:03:14 -06:00
Eric Freese 8593624996
Merge pull request #330 from zsh-users/features/completion-suggestions
Features/completion suggestions
2018-06-30 14:35:50 -06:00
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`.
2018-06-29 22:08:33 -06:00
Martin Väth 43a011026f Do not leak global variables REPLY and strategy
https://github.com/zsh-users/zsh-autosuggestions/issues/341
2018-06-18 16:39:48 -06:00
Eric Freese cd81522b30 Attempt to kill async worker process when new request comes in
See http://www.zsh.org/mla/users/2018/msg00432.html
2018-06-12 23:45:29 -06:00
Eric Freese d7171232c3 Merge branch 'develop' into features/completion-suggestions 2018-06-11 02:34:24 -06:00
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
2018-06-11 02:12:47 -06:00
Eric Freese b0ffc34fb8 completion should be a local var 2018-06-10 23:35:22 -06:00
Eric Freese 4e466f0e4e Support widgets starting with dashes (ex: `-a-widget`)
Fixes #337
2018-06-10 22:39:58 -06:00
Eric Freese bcbdad83e9 Support fallback strategies by setting array in config 2018-06-06 22:03:56 -06:00
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
2018-05-26 15:42:50 -06:00
Eric Freese 973205005c Add spec for `completion` strategy 2018-05-26 15:42:50 -06:00
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
2018-05-26 15:35:29 -06:00
Eric Freese 3dbd9afaec Fix completion strategy killing other pty's
Only a problem in synchronous mode
2018-05-26 15:35:29 -06:00
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).
2018-05-26 15:35:29 -06:00
Eric Freese 0a548c62f4 Forgot to make after small tweak 2018-05-26 15:35:29 -06:00