source: perl/lib/BarnOwl/Complete/Client.pm @ 2fa9a1a0

release-1.4release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since 2fa9a1a0 was 1610e5b, checked in by Nelson Elhage <nelhage@mit.edu>, 12 years ago
Implement completion for the 'show' command.
  • Property mode set to 100644
File size: 2.1 KB
Line 
1use strict;
2use warnings;
3
4# Completers for client state
5
6package BarnOwl::Complete::Client;
7
8use BarnOwl::Completion::Util qw(complete_flags);
9
10my @all_colors = qw(default
11                    black
12                    blue
13                    cyan
14                    green
15                    magenta
16                    red
17                    white
18                    yellow);
19
20my %show = (
21    information => undef,
22    colors      => undef,
23    commands    => undef,
24    command     => \&complete_command,
25    filters     => undef,
26    filter      => \&complete_filter_name,
27    license     => undef,
28    quickstart  => undef,
29    startup     => undef,
30    status      => undef,
31    styles      => undef,
32    subscriptions       => undef,
33    subs        => undef,
34    terminal    => undef,
35    variables   => undef,
36    variable    => \&complete_variable,
37    version     => undef,
38    view        => undef,
39    zpunts      => undef,
40   );
41
42sub complete_command { return sort @BarnOwl::all_commands; }
43sub complete_color { return @all_colors; }
44sub complete_filter_name { return @{BarnOwl::all_filters()}; }
45sub complete_variable {}        # stub
46
47sub complete_filter_args {
48    my $ctx = shift;
49    my $arg = shift;
50    return if $arg;
51    return complete_filter_name();
52}
53
54sub complete_help {
55    my $ctx = shift;
56    return complete_flags($ctx,
57        [qw()],
58        {
59        },
60        \&complete_command
61       );
62}
63
64sub complete_show {
65    my $ctx = shift;
66    if($ctx->word == 1) {
67        return keys %show;
68    } elsif ($ctx->word == 2) {
69        my $cmd = $show{$ctx->words->[1]};
70        if($cmd) {
71            return $cmd->($ctx);
72        }
73    }
74}
75
76sub complete_filter {
77    my $ctx = shift;
78    return complete_flags($ctx,
79        [qw()],
80        {
81           "-c" => \&complete_color,
82           "-b" => \&complete_color,
83        },
84         \&complete_filter_args
85        );
86}
87
88BarnOwl::Completion::register_completer(help    => \&complete_help);
89BarnOwl::Completion::register_completer(filter  => \&complete_filter);
90BarnOwl::Completion::register_completer(show    => \&complete_show);
91
921;
Note: See TracBrowser for help on using the repository browser.