NAME Complete - Completion modules family VERSION This document describes version 0.02 of Complete (from Perl distribution Complete), released on 2014-07-02. DESCRIPTION The namespace "Complete::" is used for the family of modules that deal with completion (including, but not limited to, shell tab completion, tab completion feature in other CLI-based application, web autocomplete, etc). Many of the "Complete::*" modules (like, e.g. Complete::Perl, Complete::Module, Complete::Unix, Complete::Util) contains "complete_*()" functions. These functions are generic, "low-level" completion routines: they accept the word to be completed, zero or more other arguments, and return an arrayref containing possible completion from a specific source. They are not tied to any environment (shell, or web). They can even be used for general purposes outside the context of completion. Examples are: "complete_file()" (complete from list of files in a specific directory), "complete_env()" (complete from list of environment variables), and so on. "Complete::Bash::*" modules are specific to bash shell. See Complete::Bash on how to do bash tab completion with Perl. "Complete::Zsh::*" modules are specific to zsh shell. See Complete::Zsh on how to do zsh tab completion with Perl. "Complete::Fish::*" modules are specific to fish shell. See Complete::Fish on how to do fish tab completion with Perl. Compared to other modules, this (family of) module(s) tries to have a clear separation between general completion routine and shell-/environment specific ones, for more reusability. DEVELOPER'S NOTES Metadata. "complete_*()" currently returns array of string. In some environment like fish shell this does not provide enough metadata. In fish, aside from string, each completion alternative has some extra metadata. For example, when completing filenames, fish might show each possible completion filename with type (file/directory) and file size at the right of each file name. When completing options, it can also display a summary text for each option. So instead of an array of strings, in the future "complete_*()" can also return an array of hashrefs: ["word1", "word2", "word3"] versus: [ {word=>"word1", ...}, {word=>"word2", ...}, {word=>"word3", ...}, ] "Matching method". Currently most "complete_*()" routines match word using simple string prefix matching. fish also supports matching not by prefix only, but using wildcard. For example, if word if "b??t" then "bait" can be suggested as a possible completion. fish also supports fuzzy matching (e.g. "house" can bring up "horse" or "hose"). There is also spelling-/auto-correction feature in some shells. This mode of matching can be added later in the various "complete_*()" routines, turned on via a flag argument. Or there could be helper routines for this. In general this won't pose a problem to the API. "Autosuggest". fish supports autosuggestion (autocomplete). When user types, without she pressing Tab, the shell will suggest completion (not only for a single token, but possibly for the entire command). If the user wants to accept the suggestion, she can press the Right arrow key. This can be supported later by a function in Complete::Fish e.g. "shell_complete()" which accepts the command line string. SEE ALSO Bash::Completion, Getopt::Complete, Term::Completion Perinci::Sub::Complete and "Perinci::Sub::Complete::*" modules deal with providing completion capability for functions that have Rinci metadata. HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Steven Haryanto. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.