Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | package Psh::Strategy::Auto_cd; |
2 | ||
3 | =item * C<auto_cd> | |
4 | ||
5 | If the input line matches the name of a directory then | |
6 | it will be handled as an implicit cd. | |
7 | ||
8 | =cut | |
9 | ||
10 | require Psh::Strategy; | |
11 | require Psh::Builtins::Cd; | |
12 | ||
13 | @Psh::Strategy::Auto_cd::ISA=('Psh::Strategy'); | |
14 | ||
15 | ||
16 | sub new { Psh::Strategy::new(@_) } | |
17 | ||
18 | ||
19 | sub consumes { | |
20 | return Psh::Strategy::CONSUME_TOKENS; | |
21 | } | |
22 | ||
23 | sub applies { | |
24 | my $dir= ${$_[2]}[0]; | |
25 | return "auto-cd $dir" if -d $dir; | |
26 | return ''; | |
27 | } | |
28 | ||
29 | sub execute { | |
30 | my $dir= ${$_[2]}[0]; | |
31 | Psh::Builtins::Cd::bi_cd($dir); | |
32 | return (1,undef); | |
33 | } | |
34 | ||
35 | sub runs_before { | |
36 | return qw(perlscript executable); | |
37 | } | |
38 | ||
39 | # Turn on directory completion for first words in line | |
40 | $Psh::Completion::complete_first_word_dirs=1; | |
41 | ||
42 | 1; |