Commit graph

72 commits

Author SHA1 Message Date
Frad LEE
cd66c5695a refactor(ai): replace empty buffer with min input
- Replace ZSH_AUTOSUGGEST_ALLOW_EMPTY_BUFFER with AI_MIN_INPUT
- Add ZSH_AUTOSUGGEST_AI_DEBUG environment variable
- Add debug logging function to diagnose failures
- Update history lines default from 20 to 5
- Update pwd history preference default to no

Min input provides clearer semantics: set to 0 for empty-buffer
suggestions or higher to require minimum input. Debug logging helps
diagnose missing suggestions by showing API request flow.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-05 14:39:12 +08:00
Frad LEE
f43786cafd refactor(ai): use base url for endpoint config
Change endpoint configuration to use base URL pattern,
automatically appending /chat/completions path.

- Update default endpoint to base URL format
- Add automatic path construction in strategy
- Update README examples to use base URLs
- Update endpoint description to "base URL"

Follows OpenAI SDK standard pattern where users configure
base URL and library appends specific paths.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 11:25:31 +08:00
Frad LEE
d89bf4ec0d feat(ai): add empty buffer context suggestions
Enable AI suggestions on empty prompts with enhanced
environmental context.

- Update AI_MIN_INPUT default from 3 to 0
- Add ALLOW_EMPTY_BUFFER opt-in config variable
- Remove empty-buffer guards in modify, suggest, enable
- Add zle-line-init hook for prompt-time suggestions
- Enhance history gathering with PWD-aware priority
- Add env context for dir listing, git branch, status
- Implement dual prompts: predict vs complete modes
- Add prompt artifact stripping for $ and > prefixes
- Update README with empty buffer configuration
- Add tests for empty buffer and artifact stripping

Empty buffer suggestions require zsh 5.3+ and work best with
AI strategy, leveraging directory context, git state, and
command history to predict likely next actions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 10:58:19 +08:00
Frad LEE
8a9c1a2a30 feat: add ai suggestion strategy
Add new AI strategy that queries OpenAI-compatible LLM APIs
to generate intelligent command completions based on partial
input, working directory, and recent shell history.

- Add AI strategy implementation with JSON escaping
- Add context gathering with PWD prioritization
- Add response normalization for clean suggestions
- Add configuration defaults for AI settings
- Add comprehensive test suite with mocked responses
- Update README with setup guide and examples

Enables LLM-powered completions via ZSH_AUTOSUGGEST_AI_API_KEY
with silent failure and fallback to next strategy. Supports
OpenAI, Ollama, and custom endpoints. Requires curl and jq.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 10:24:52 +08:00
Eric Freese
e52ee8ca55
Merge pull request #811 from zsh-users/develop
Some checks failed
/ determine-versions (push) Successful in 3s
/ test (push) Failing after 15s
v0.7.1
2024-11-15 12:47:51 -07:00
Eric Freese
9aceef9646 Remove circle ci reference left over from switch to github actions 2024-11-15 12:28:27 -07:00
Rob Weir
2b97cf3b30
Update README.md
Clarify where to get `zpty` from.

Info from https://apple.stackexchange.com/a/416099 and https://zsh.sourceforge.io/releases.html .
2023-08-17 23:42:12 +01:00
Eric Freese
2cc34c015e Switch from Circle CI to GitHub Actions
The testing docker image has been split up. Instead of having one image
with all supported versions of zsh installed, we now have a separate
image for each supported zsh version.

We use GitHub Action matrices to run jobs in parallel for all of the
supported versions.

We no longer need to publish images to Docker Hub. The images are just
built by CI (or developers) as needed from the Dockerfile in the repo.
2023-05-26 19:44:39 -06:00
Eric Freese
9ad039443f
Merge pull request #504 from zsh-users/ef/async-by-default
Enable async mode by default in newer versions of zsh
2020-01-29 20:54:46 -07:00
Eric Freese
a83c7cf9d6 Add links to documentation on zsh glob patterns to the readme
See GitHub issue #503
2020-01-26 21:26:38 -07:00
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.
2020-01-26 21:18:49 -07:00
Eric Freese
ae315ded4d
Merge pull request #494 from zsh-users/develop
v0.6.4
2020-01-06 21:12:21 -07:00
Eric Freese
ff298e57c0 completion suggestion strategy seems pretty stable 2020-01-06 21:11:31 -07:00
Eric Freese
7afb7364f1 Allow skipping completion suggestions when buffer matches a pattern
Set ZSH_AUTOSUGGEST_COMPLETION_IGNORE to a glob pattern to have the
completion suggestion strategy never make suggestions when the buffer
matches the pattern.

This can be helpful when some completion routines you have are
particularly expensive and you want to prevent them from running
automatically on every keystroke.

See GitHub issue #463.
2019-12-15 08:13:54 -07:00
Greg Rickaby
c6b636ea4f
(README) Link to 256 color chart
Easy to see and choose a color, and then copy it over from the chart.
2019-10-10 09:15:15 -05:00
Eric Freese
24655d9328 Merge branch 'master' into develop 2019-09-25 15:30:35 -06:00
Eric Freese
43f3bc4010 Add gitter badge (#461) 2019-07-15 11:39:10 -06:00
Eric Freese
fdc4292a7f Switch to shields badges 2019-07-15 11:18:31 -06:00
Eric Freese
b87a4972c8 Allow configuring to ignore history entries matching a pattern
Set ZSH_AUTOSUGGEST_HISTORY_IGNORE to a glob pattern to have the history
and match_prev_cmd suggestion strategies never make suggestions matching
that pattern.

For example, set to "cd *" to never suggest any `cd` commands from
history (see issues #340 and #425). Or set to "?(#c50,)" to never
suggest anything 50 characters or longer (see issue #429).
2019-07-02 21:46:17 -06:00
Eric Freese
c80605595c
Merge pull request #451 from zsh-users/develop
v0.6.2
2019-06-22 16:57:19 -06:00
Eric Freese
cdf6be4f06 Update readme description to reference new completion strategy 2019-06-22 16:54:03 -06:00
Robin De Mol
d14b17fb09 Possible fix for #416
* Added a note for iTerm2 users under readme/configuration/highlight
style.

* Changed the link to the issue list under troubleshooting so that the
default filters (only open issues) are not applied.
2019-06-20 09:32:47 +02: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
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 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
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 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
be6b22b864 Add info to the readme about docker testing image 2018-11-18 21:35:52 -07:00
Eric Freese
72ccee33b4 Pull out separate doc for installation instructions 2018-05-21 11:35:26 -06:00
Benjamin Denhartog
b2b9bf3b8c update arch linux installation instructions (now available via pacman)
closes #328
2018-05-14 10:43:45 -06:00
babaorum
afc14f79cc make Oh my zsh install works without ZSH_CUSTOM defined 2018-04-16 22:37:54 +02:00
Eric Freese
f462410b3c Add zsh version requirements to readme 2017-12-06 08:21:27 -07:00
Eric Freese
9e3f1bd359 Use https protocol instead of git in README instructions
https should work more broadly for folks
2017-09-26 07:56:29 -06:00
Alon Harel
706499838c Update README.md 2017-07-24 21:19:07 +03:00
Sumner Evans
4e72f7a91e Added installation instructions for AUR, Homebrew 2017-07-07 09:17:46 -06:00
Eric Freese
83129dd796 Make asynchronous suggestions disabled by default
While they are still experimental
2017-04-14 08:48:54 -06:00
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`.
2017-03-03 18:43:17 -05:00
Eric Freese
39762ecd97 Set up circle ci 2017-02-26 14:26:41 -07:00
Eric Freese
06fca77ffb Readme updates for v0.4.0 2017-02-16 20:12:04 -07:00
Eric Freese
b377c39d0e Only fetch a new suggestion if buffer has changed 2016-07-31 20:10:22 -06:00
Eric Freese
25f4afb058 Add ZSH_AUTOSUGGEST_IGNORE_WIDGETS array 2016-07-31 19:35:30 -06:00
Lorenzo Bolla
a9c8efa048 Update README 2016-07-18 16:06:50 +01:00
Tassilo Horn
ca70612d3c Document caveats of match_prev_cmd strategy
This strategy relies on the history being exactly in the order in which
commands have been entered.  Therefore, options like suppressing
duplicates or expiring duplicates first will lead to unexpected
suggestions.
2016-05-28 21:23:35 +02:00
Eric Freese
7c688ec20c Add note to readme about PRs going to develop branch 2016-05-28 08:23:53 -06:00
Eric Freese
d7001f2c34 Fix readme test script reference. 2016-04-15 13:40:18 -06:00
Eric Freese
1ed9155f89 Add Suggestion Strategy section to Configuration section of Readme. 2016-03-14 17:25:09 -06:00
Kordan Ou
aa597eea6d Add an autosuggest widget: autosuggest-execute. 2016-03-01 13:18:46 -07:00