Commit Graph
100 Commits
Author SHA1 Message Date
Eric Freese e9ce05c4c1 Ensure that kill succeeds even in older buggy versions of zsh
See https://unix.stackexchange.com/a/477647/156673
2019-06-15 21:17:58 -06:00
Eric Freese fdf4502c5c We need to autoload is-at-least for it to be available
This error was hidden inside the zpty
2019-06-15 21:17:58 -06:00
Eric Freese 7e048c3f53 Fix error that was hidden in zpty
Without the quotes, this was blowing up with:
  _zsh_autosuggest_capture_postcompletion:unset:5: not enough arguments
2019-06-15 21:17:58 -06:00
Eric Freese 2b05f5ed2d Add a comment explaining post-completion hook 2019-06-15 21:17:58 -06:00
Eric FreeseandGitHub 5339d2703d Merge pull request #432 from zsh-users/features/wrap-zle-line-init
Wrap zle-line-init to support fetching suggestions on line init
2019-06-14 21:04:02 -06:00
Eric Freese 0d3bbaf8e6 Remove hard-coded ignore of zle-* widgets and add to default config
Use case suggested by @romkatv uses zle-line-init to restore buffer
after running a widget to cd up one level (GitHub #431).

As far as I can tell, the ignoring of zle-line-* was added in commit
9788c2e to support some deprecation warnings that were removed some time
ago.

The pattern was then widened in commit 0c940e7 to zle-* to fix problems
encountered when wrapping zle-isearch-update.

This commit removes the hard coded ignore of all zle-* widgets and adds
zle-* to the default list of widgets to be ignored. Users who want the
plugin to wrap zle-line-init or zle-line-finish can override the
default.
2019-06-14 16:38:28 -06:00
Eric Freese 9ceeacc797 Try to make async ^C spec less flaky
Was intermittently failing, sleep for a little longer to increase
chances of false negatives.
2019-06-14 13:19:07 -06:00
Eric FreeseandGitHub de266574d3 Merge pull request #434 from zsh-users/meta/improve-highlight-style-docs
Improve documentation for configuring highlight style
2019-05-29 01:40:20 -06:00
Eric FreeseandGitHub 48d04447cc Merge pull request #433 from zsh-users/fixes/ignore-empty-max-size
Allow setting max size to empty string (GitHub #422)
2019-05-29 01:39:24 -06:00
Eric Freese b714f6667c Improve documentation for configuring highlight style
Supersedes PR #430 and gives additional info.

https://stackoverflow.com/questions/47310537/how-to-change-zsh-autosuggestions-color
2019-05-27 14:56:19 -06:00
Eric Freese 474c577f3c Allow setting max size to empty string (GitHub #422)
Some people have gotten used to setting ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
to an empty string rather than leaving it unset. This lets them continue
to do that without getting any warnings (e.g. "bad math expression:
operand expected at end of string").
2019-05-27 14:18:21 -06:00
Eric FreeseandGitHub e9d8231ba7 Merge pull request #401 from zsh-users/features/completion-suggestions
Features/completion suggestions
2019-04-15 12:55:35 -06:00
Eric Freese ce6ee94f30 Add spec to demonstrate bracketed-paste-magic bug workaround
Add `bracketed-paste` to list of widgets that clear the suggestion as a
workaround for GitHub #351
2019-04-15 12:47:21 -06:00
Eric Freese e7c7efe2e2 Set options immediately after sourcing the plugin before next precmd
So that you can access defaults to e.g. add elements to an existing
array.
2019-04-15 12:46:21 -06:00
Eric FreeseandGitHub 733abd4af0 Merge pull request #419 from zsh-users/develop
v0.5.2
2019-04-11 10:18:26 -06:00
Eric Freese 152d2c6b31 v0.5.2 2019-04-11 10:15:46 -06:00
Eric Freese 528e338e57 Update changelog for v0.5.2 release 2019-04-11 10:15:13 -06:00
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.
2019-04-11 09:53:55 -06:00
Eric FreeseandGitHub 937d6fc241 Merge pull request #418 from zsh-users/features/manual-rebind
Allow disabling of automatic widget re-binding
2019-04-10 13:53:37 -06:00
Eric Freese b9fee8a324 Allow disabling of automatic widget re-binding
Addresses github #411
2019-04-10 11:43:21 -06:00
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 FreeseandGitHub 586b51366b Merge pull request #417 from zsh-users/features/async-process-substitution
Refactor async mode to no longer use zpty
2019-04-10 08:06:52 -06:00
Eric Freese e405afab29 Refactor async mode to no longer use zpty
See technique used in `fast-syntax-highlighting`:
- https://github.com/zdharma/fast-syntax-highlighting/commit/ca2e18bbc9e27b9264206c257d2ab68838162c70
- 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
Eric Freese 543f2b5477 Support new zsh version 2019-04-09 14:12:35 -06:00
Eric Freese a36a9aca44 Enable tcsetpgrp to support job control
See https://github.com/zsh-users/zsh-docker/pull/15
2019-04-09 13:14:34 -06:00
Eric FreeseandGitHub cbf0e24b18 Merge pull request #415 from zsh-users/develop
v0.5.1
2019-04-03 10:58:45 -06:00
Eric Freese f94e667f59 v0.5.1 2019-04-03 10:52:43 -06:00
Eric Freese 3ee91c731c Update changelog for v0.5.1 release 2019-04-03 10:51:48 -06:00
Eric FreeseandGitHub 0b13f663da Merge pull request #413 from zsh-users/features/faster-prompts
Features/faster prompts
2019-04-02 07:39:55 -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
Eric FreeseandGitHub 66b842579a Merge pull request #403 from okdana/dana/typeset-g
Set global parameters with typeset -g
2018-12-21 23:19:23 -07:00
Eric FreeseandGitHub ebc2c07ac8 Merge pull request #402 from zsh-users/fixes/autocd-tab-completion
Respect user's set options when running original widget
2018-12-17 17:59:06 -07: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 70f36c007d Finish renaming "default" strategy to "history" 2018-11-24 15:07:08 -07:00
Eric FreeseandGitHub a7f0106b31 Merge pull request #393 from zsh-users/releases/v0.5.0
Releases/v0.5.0
2018-11-24 10:00:59 -07:00
Eric Freese 286656635c v0.5.0 2018-11-24 09:56:52 -07:00
Eric Freese 0d994d4732 Update changelog for v0.5.0 release 2018-11-24 09:56:52 -07:00
Eric Freese f0f1332e6b Add after_sourcing hook for tests
Is executed immediately after sourcing the plugin
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 df6f6f9ff4 Add install directions for Antigen 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 822a1f30e0 Async is less reliable in zsh versions < 5.0.8
`stty` occasionally hangs (always in CircleCI) inside the async pty.

Disable the tests for now until we can figure out and fix/workaround
this issue.
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 Freese 4838222dde Merge branch 'master' into develop 2018-11-18 22:32:17 -07:00
Eric FreeseandGitHub 35c286de9a Merge pull request #390 from zsh-users/features/no-overwrite-config
Features/no overwrite config
2018-11-18 22:19:31 -07:00
Eric Freese be6b22b864 Add info to the readme about docker testing image 2018-11-18 21:35:52 -07:00
Eric Freese 69d7fa14d3 Build docker image for running tests
Published at `ericfreese/zsh-autosuggestions-test`.

Contains:
- Ruby 2.5.3
- Supported zsh versions 4.3.11 through 5.6.2
- Test ruby dependencies

Also updates Circle CI config to use built docker image.
2018-11-18 21:11:35 -07:00
Eric Freese 4b28d92e01 Add after_sourcing hook for tests
Is executed immediately after sourcing the plugin
2018-11-10 14:55:13 -07:00
Eric Freese b512a1b040 Merge branch 'master' into develop 2018-11-10 13:43:47 -07:00
Eric Freese affe7c687e Run circle-ci upgrade script
From: https://raw.githubusercontent.com/CircleCI-Public/circleci-config-generator/9979b712033a072c3135aafb3c06e252c4e791f1/cci-config-generator.sh
2018-11-10 13:11:25 -07:00
Eric FreeseandGitHub fa5d9c0ff5 Merge pull request #360 from zsh-users/fixes/glob-subst-bad-pattern
Reset opts in some functions affected by GLOB_SUBST
2018-07-17 22:26:55 -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 FreeseandGitHub 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 0ee5b0a5c9 Completion strategy no longer requires zutil module 2018-07-02 22:38:20 -06:00
Eric Freese bd1fd97738 Cleanup unused async pty name 2018-07-02 22:38:20 -06:00
Eric FreeseandGitHub ebaf409002 Merge pull request #355 from amehmeto/patch-1
Update INSTALL.md
2018-07-02 20:59:14 -06:00
Eric FreeseandGitHub 106bf02d49 Merge pull request #350 from zsh-users/features/improved-completion-suggestions
Improve completion suggestions
2018-07-02 12:28:39 -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
Eric FreeseandGitHub 07b37fd9ce Merge pull request #349 from zsh-users/features/antigen-install-directions
Add install directions for Antigen
2018-07-01 01:54:01 -06:00
Eric FreeseandGitHub 7c83775bc7 Merge pull request #348 from zsh-users/fixes/no-zpty
Fixes/no zpty
2018-06-30 18:07:06 -06:00
Eric Freese e97d132b3b Add install directions for Antigen 2018-06-30 17:15:31 -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 FreeseandGitHub 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
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 4a268da1df Fix readme- async no longer uses zpty 2018-06-11 02:39:00 -06:00
Eric Freese d7171232c3 Merge branch 'develop' into features/completion-suggestions 2018-06-11 02:34:24 -06:00
Eric FreeseandGitHub faf0f9a698 Merge pull request #338 from zsh-users/fixes/async-refactor
Refactor async mode to no longer use zpty
2018-06-11 02:25:12 -06:00
Eric Freese 9cb0101512 Refactor async mode to no longer use zpty
See technique used in `fast-syntax-highlighting`:
- https://github.com/zdharma/fast-syntax-highlighting/commit/ca2e18bbc9e27b9264206c257d2ab68838162c70
- 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 7d19f8f9b2 Rename default spec to history spec 2018-05-26 15:35:29 -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
Eric Freese 4cca26ec84 Modify completion code to better fit our needs
Only need the first completion result
2018-05-26 15:35:29 -06:00
Eric Freese f63afd5969 Fix async pty name option spec 2018-05-26 15:35:29 -06:00
Eric Freese c5551daabc Default strategy now tries history first and falls back to completion 2018-05-26 15:35:29 -06:00
Eric Freese 82b08e2dc8 First pass at getting suggestions from completion engine (#111)
Uses https://github.com/Valodim/zsh-capture-completion with some slight
modifications.
2018-05-26 15:35:29 -06:00