equal
deleted
inserted
replaced
1 |
|
2 # Customized version from Frank Terbeck' scripts |
|
3 # http://bewatermyfriend.org/p/2011/013/ |
|
4 # "." will display the current working directory |
|
5 # ".." will get you 1 directory up, |
|
6 # "..." will get you 2 directories up, etc. |
|
7 function ft_accept_line_cd_up() { |
|
8 setopt local_options extended_glob |
|
9 local -a cmdline |
|
10 cmdline=( ${(z)BUFFER} ) |
|
11 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == "." ]] ; then |
|
12 BUFFER="pwd" |
|
13 zle ".$WIDGET" |
|
14 return |
|
15 fi |
|
16 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then |
|
17 BUFFER='cd ' |
|
18 for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do |
|
19 BUFFER="${BUFFER}../" |
|
20 done |
|
21 BUFFER=${BUFFER%/} |
|
22 fi |
|
23 zle ".$WIDGET" |
|
24 } |
|
25 zle -N accept-line ft_accept_line_cd_up |
|
26 |
|
27 # 2nd part, completion support... |
|
28 function ft_complete_with_dots() { |
|
29 setopt local_options extended_glob |
|
30 local -a cmdline |
|
31 cmdline=( ${(z)BUFFER} ) |
|
32 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then |
|
33 BUFFER='cd ' |
|
34 for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do |
|
35 BUFFER="${BUFFER}../" |
|
36 done |
|
37 CURSOR=${#BUFFER} |
|
38 fi |
|
39 zle ".$WIDGET" |
|
40 } |
|
41 # Disabling for now as I don't know how to fallback to automatic correction... |
|
42 #zle -N expand-or-complete ft_complete_with_dots |
|