Logo

0x5a.live

for different kinds of informations and explorations.

GitHub - reeflective/readline: Shell library with powerful and modern UI, large feature set, and `.inputrc` support

Shell library with powerful and modern UI, large feature set, and `.inputrc` support - reeflective/readline

Visit SiteGitHub - reeflective/readline: Shell library with powerful and modern UI, large feature set, and `.inputrc` support

GitHub - reeflective/readline: Shell library with powerful and modern UI, large feature set, and `.inputrc` support

Shell library with powerful and modern UI, large feature set, and `.inputrc` support - reeflective/readline

Powered by 0x5a.live ๐Ÿ’—

This library is a modern, pure Go readline shell implementation, with full .inputrc and legacy readline command/option support, and extended with various commands, options and tools commonly found in modern shells. Its architecture and completion system is heavily inspired from Z-Shell. It is used, between others, to power the console library.

Features

Core

Emacs / Standard

  • Native Emacs commands
  • Emacs-style macro engine (not working across multiple calls)
  • Keywords switching (operators, booleans, hex/binary/digit) with iterations
  • Command/mode cursor status indicator
  • Complete undo/redo history
  • Command status/arg/iterations hint display

Vim

  • Near-native Vim mode
  • Vim text objects (code blocks, words/blank/shellwords)
  • Extended surround select/change/add functionality, with highlighting
  • Vim Visual/Operator pending mode & cursor styles indications
  • Vim Insert and Replace (once/many)
  • All Vim registers, with completion support
  • Vim-style macro recording (q<a>) and invocation (@<a>)

Interface

  • Support for PS1/PS2/RPROMPT/transient/tooltip prompts (compatible with oh-my-posh)
  • Extended completion system, keymap-based and configurable, easy to populate & use
  • Multiple completion display styles, with color support.
  • Completion & History incremental search system & highlighting (fuzzy-search).
  • Automatic & context-aware suffix removal for efficient flags/path/list completion.
  • Optional asynchronous autocomplete
  • Builtin & programmable syntax highlighting

Documentation

Readline is used by the console library and its example binary. To get a grasp of the functionality provided by readline and its default configuration, install and start the binary.

The documentation is available on the repository wiki, for both users and developers.

Showcases

Status

This library is now in a release status, as it has underwent several major rewrites and is now considered mostly feature-complete, with a solid testing suite to ensure safe and smooth operation to the best extent possible. New releases will be regularly pushed when bugs are found and corrected.

Additionally:

  • Key dispatch/flushing, meta-key enable, etc might still contain some bugs/wrong behavior: 30 years of legacy support for 3000 different terminal emulators cannot be done right by me alone.
  • Please open a PR or an issue if you face any bug, and it will be promptly resolved.
  • Don't hesitate proposing a new feature or a PR if you deem it to be useful to most users.

Credits

  • @kenshaw for his .inputrc parsing package, which brings much wider compatibility to this library.
  • chzyer/readline for the Windows I/O code and everything related.
  • Some of the Vim code is inspired or translated from zsh-vi-mode.
  • lmorg/readline, for the line tokenizers.

GoLang Resources

are all listed below.

Resources

listed to get explored on!!

Made with โค๏ธ

to provide different kinds of informations and resources.