#autocomplete #shell #shellac #cli #shell-ac #command-arguments

app shellac-json

Shell-Agnostic Completion server: command argument autocompletion JSON conversion

1 unstable release

0.2.0 Oct 5, 2019

#30 in #autocomplete

MIT license

19KB
249 lines

See https://github.com/oilshell/oil/wiki/Shellac-Protocol-Proposal-V2 and https://www.redox-os.org/news/rsoc-ion-ux-2/ for information about this repo

Goals

The end result aims toward being a binary that

  • Replies to requests with minimal latency. Ideally, less than 10ms for static completion so it's not even visible for users
  • Is able to support as-you-type completion. That means caching should be used a lot to avoid duplicating work
  • Handle multiple (up to ~20) concurrent clients while keeping latency low for each one of them
  • Support definitions of parameters
  • Support invoking various external commands for dynamic completion

Spec

See the original and adapted proposals for formal specs.

Informal demo shellac definition files can be found in the completion folder.

Integration with shells

Communication is handled via cap'n proto using the definition found in shellac.capnp. Shell can choose to start a binary per request (simple but slow), or the recommended setup of using a socket for shared, extended communications. This is a preliminary version, and as such the API is not yet finalised. Focus is currently more on stabilizing the definition file format rather than the shell-facing protocol, so change is to be expected.

Contributing

Reach out at https://oilshell.zulipchat.com/#narrow/stream/146045-shell-autocompletion for discussion and feel free to open issues and MR. Any help is really appreciated.

WARNING: THIS IS A POC

Dependencies

~5MB
~101K SLoC