contrib/zsh_completion
changeset 3600 932dadd2e614
parent 3598 27121416f9a8
child 3601 cedf056bb723
equal deleted inserted replaced
3599:e00920b4f1cb 3600:932dadd2e614
    74     then
    74     then
    75       cmd=$_hg_alias_list[$cmd]
    75       cmd=$_hg_alias_list[$cmd]
    76     fi
    76     fi
    77   fi
    77   fi
    78 
    78 
       
    79   curcontext="${curcontext%:*:*}:hg-${cmd}:"
       
    80 
       
    81   zstyle -s ":completion:$curcontext:" cache-policy update_policy
       
    82 
       
    83   if [[ -z "$update_policy" ]]
       
    84   then
       
    85     zstyle ":completion:$curcontext:" cache-policy _hg_cache_policy
       
    86   fi
       
    87 
    79   if (( $+functions[_hg_cmd_${cmd}] ))
    88   if (( $+functions[_hg_cmd_${cmd}] ))
    80   then
    89   then
    81     curcontext="${curcontext%:*:*}:hg-${cmd}:"
       
    82     _hg_cmd_${cmd}
    90     _hg_cmd_${cmd}
    83   else
    91   else
    84     # complete unknown commands normally
    92     # complete unknown commands normally
    85     _arguments -s -w : $_hg_global_opts \
    93     _arguments -s -w : $_hg_global_opts \
    86       '*:files:_files -W $(_hg_cmd root)'
    94       '*:files:_files -W $(_hg_cmd root)'
    87   fi
    95   fi
       
    96 }
       
    97 
       
    98 _hg_cache_policy() {
       
    99   typeset -a old
       
   100 
       
   101   # cache for a minute
       
   102   old=( "$1"(mm+10) )
       
   103   (( $#old )) && return 0
       
   104 
       
   105   return 1
    88 }
   106 }
    89 
   107 
    90 _hg_get_commands() {
   108 _hg_get_commands() {
    91   typeset -ga _hg_cmd_list
   109   typeset -ga _hg_cmd_list
    92   typeset -gA _hg_alias_list
   110   typeset -gA _hg_alias_list
   170     then
   188     then
   171       local host=${PREFIX%%/*}
   189       local host=${PREFIX%%/*}
   172       typeset -a remdirs
   190       typeset -a remdirs
   173       compset -p $(( $#host + 1 ))
   191       compset -p $(( $#host + 1 ))
   174       local rempath=${(M)PREFIX##*/}
   192       local rempath=${(M)PREFIX##*/}
       
   193       local cacheid="hg_${host}_${rempath//\//_}"
   175       compset -P '*/'
   194       compset -P '*/'
   176       remdirs=(${${(M)${(f)"$(_call_program files ssh -a -x $host ls -1FL "${(q)rempath}" 2> /dev/null)"}##*/}%/})
   195       if _cache_invalid "$cacheid" || ! _retrieve_cache "$cacheid"
       
   196       then
       
   197         remdirs=(${${(M)${(f)"$(_call_program files ssh -a -x $host ls -1FL "${(q)rempath}" 2> /dev/null)"}##*/}%/})
       
   198         _store_cache "$cacheid" remdirs
       
   199       fi
   177       _describe -t directories 'remote directory' remdirs -S/
   200       _describe -t directories 'remote directory' remdirs -S/
   178     else
   201     else
   179       _message 'remote directory'
   202       _message 'remote directory'
   180     fi
   203     fi
   181   else
   204   else