zshrc.d/30-functions-ftupdir.zrc
changeset 8 3f68f355bf1a
parent 7 c032d39eafcf
child 9 d7843f267d79
equal deleted inserted replaced
7:c032d39eafcf 8:3f68f355bf1a
     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