=head1 NAME pshcomplete - TAB completion in Perl Shell =for README Please read the perlpod manpage! Pay particular attention to the markup sequences (B<>, C<>, I<>, etc.). =head1 SYNOPSIS TAB completion strategies in Perl Shell =head1 DESCRIPTION B supports built-in completion support as well as a largely B compatible user-programmable completion. Whenever a user presses the TAB key, B first checks wether we're trying to complete a command for which there's a user-programmed completion. Please see below for further information about this process. If there are no user-programmed completions, following default completion strategies are checked in the specified order: =over 4 =item Perl Hash Keys If the current expression looks like an attempt to enter the key of a Perl Hash ( C<$var{$keypart> or C<$var->{$keypart> ), B will examine the Perl symbol table to try to complete the entered key. =item Perl Methods Afterwards B will try to complete method calls which look like C<$obj->methodpart>. =item Perl Variables An attempt is then made to complete any perl variable names starting with one the most usual context signifiers ( C<@$%&> or C<$#> ). =item Executables If the user is currently working on the first word of the line or a similar syntactic position (like the first word after a pipe sign), B attempts to find an executable in the current path matching the expression. =item Filenames If no completions could be generated so far, B will attempt to complete the word as a filename. =item Built-ins Afterwards, B will check wether the command to execute is a builtin command. If yes, the builtin command is asked for a list of completions. The list of completions supplied by the builtin may or may not replace the list of so far gathered possible completions, depending on the builtin. =back =head1 PROGRAMMABLE COMPLETIONS =head2 DESCRIPTION This C module provides the programmable completion function almost compatible with the one of bash-2.04 and/or later. The following document is based on the texinfo file of bash-2.04-beta5. =head2 Programmable Completion When word completion is attempted for an argument to a command for which a completion specification (a COMPSPEC) has been defined using the B builtin (See L.), the programmable completion facilities are invoked. First, the command name is identified. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Psh completion described above (Where is it described?) is performed. First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. When the B<-f> or B<-d> option is used for filename or directory name completion, the shell variable B is used to filter the matches. See L for a description of B. Any completions specified by a filename expansion pattern to the B<-G> option are generated next. The words generated by the pattern need not match the word being completed. The B shell variable is not used to filter the matches, but the B shell variable is used. Next, the string specified as the argument to the B<-W> option is considered. The string is first split using the characters in the B special variable as delimiters. Shell quoting is honored. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and pathname expansion, as described above (Where is it described?). The results are split using the rules described above (Where is it described?). No filtering against the word being completed is performed. After these matches have been generated, any shell function or command specified with the B<-F> and B<-C> options is invoked. When the function or command is invoked, the first argument is the word being completed, the second argument is the current command line, the third argument is the index of the current cursor position relative to the beginning of the current command line, and the fourth argument is the name of the command whose arguments are being completed. If the current cursor position is at the end of the current command, the value of the third argument is equal to the length of the second argument string. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. Any function specified with B<-F> is invoked first. The function may use any of the shell facilities, including the B builtin described below (See L.), to generate the matches. It returns a array including the possible completions. For example; sub _foo_func { my ($cur, $line, $start, $cmd) = @_; ... return @possible_completions; } complete -F _foo_func bar Next, any command specified with the B<-C> option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. After all of the possible completions are generated, any filter specified with the B<-X> option is applied to the list. The filter is a pattern as used for pathname expansion; a C<&> in the pattern is replaced with the text of the word being completed. A literal C<&> may be escaped with a backslash; the backslash is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading C negates the pattern; in this case any completion not matching the pattern will be removed. Finally, any prefix and suffix specified with the B<-P> and B<-S> options are added to each member of the completion list, and the result is returned to the Readline completion code as the list of possible completions. If a compspec is found, whatever it generates is returned to the completion code as the full set of possible completions. The default Bash completions are not attempted, and the Readline default of filename completion is disabled. =head2 Programmable Completion Builtins A builtin commands B and a builtin Perl function B are available to manipulate the programmable completion facilities. =over 4 =item B compgen [OPTION] [WORD] Generate possible completion matches for I according to the I