diff options
Diffstat (limited to 'config/sh/cdhist.sh')
-rw-r--r-- | config/sh/cdhist.sh | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/config/sh/cdhist.sh b/config/sh/cdhist.sh deleted file mode 100644 index d67d2e9..0000000 --- a/config/sh/cdhist.sh +++ /dev/null @@ -1,174 +0,0 @@ -### cdhist.sh -### -### Copyright (c) 2001 Yusuke Shinyama <yusuke at cs . nyu . edu> -### -### Permission to use, copy, modify, distribute this software and -### its documentation for any purpose is hereby granted, provided -### that existing copyright notices are retained in all copies and -### that this notice is included verbatim in any distributions. -### This software is provided ``AS IS'' without any express or implied -### warranty. -### - -### WARNING: THIS SCRIPT IS FOR GNU BASH ONLY! - -### What is this? -### -### Cdhist adds 'web-browser like history' to your bash shell. -### Every time you change the current directory it records the directory -### you can go back by simply typing a short command such as '-' or '+', -### just like clicking web-browsers's 'back' button. -### It's more convenient than using directory stacks when -### you walk around two or three directories. -### - -### Usage -### -### Just call this file from your .bashrc script. -### The following commands are added. -### -### cd [pathname] -### Go to the given directory, or your home directory if -### pathname is omitted. This overrides the original command. -### You can use it by typing '\cd'. -### -### + [n] -### 'Forward' button. Go to the n'th posterior directory in the history. -### Go to the next directory if the number is omitted. -### -### - [n] -### 'Back' button. Go to the n'th prior directory in the history. -### Go to the previous directory if the number is omitted. -### -### = [n] -### Show histories with directory numbers. -### -### A directory number shows the index to the current directory -### in the history. The current directory always has directory number 0. -### For prior directories, a negative number is given. -### For posterior directories, a positive number is given. -### -### cdhist_reset -### Clear the cd history. -### - -### Example -### -### /home/yusuke:$ . cdhist.sh -### /home/yusuke:$ cd /tmp -### /tmp:$ cd /usr/bin -### /usr/bin:$ cd /etc -### /etc:$ - -### /usr/bin:$ - -### /tmp:$ + -### /usr/bin:$ = -### -2 ~ -### -1 /tmp -### 0:/usr/bin -### 1 /etc -### /usr/bin:$ - 2 -### /home/yusuke:$ -### - - -CDHIST_CDQMAX=10 -declare -a CDHIST_CDQ - -function cdhist_reset { - CDHIST_CDQ=("$PWD") -} - -function cdhist_disp { - echo "$*" | sed "s $HOME ~ g" -} - -function cdhist_add { - CDHIST_CDQ=("$1" "${CDHIST_CDQ[@]}") -} - -function cdhist_del { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - local i=${1-0} - if [ ${#CDHIST_CDQ[@]} -le 1 ]; then return; fi - for ((; i<${#CDHIST_CDQ[@]}-1; i++)); do - CDHIST_CDQ[$i]="${CDHIST_CDQ[$((i+1))]}" - done - unset CDHIST_CDQ[$i] -} - -function cdhist_rot { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - local i q - declare -a q - for ((i=0; i<$1; i++)); do - q[$i]="${CDHIST_CDQ[$(((i+$1+$2)%$1))]}" - done - for ((i=0; i<$1; i++)); do - CDHIST_CDQ[$i]="${q[$i]}" - done -} - -function cdhist_cd { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - local i f=0 - builtin cd "$@" || return 1 - for ((i=0; i<${#CDHIST_CDQ[@]}; i++)); do - if [ "${CDHIST_CDQ[$i]}" = "$PWD" ]; then f=1; break; fi - done - if [ $f -eq 1 ]; then - cdhist_rot $((i+1)) -1 - elif [ ${#CDHIST_CDQ[@]} -lt $CDHIST_CDQMAX ]; then - cdhist_add "$PWD" - else - cdhist_rot ${#CDHIST_CDQ[@]} -1 - CDHIST_CDQ[0]="$PWD" - fi -} - -function cdhist_history { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - local i d - if [ $# -eq 0 ]; then - for ((i=${#CDHIST_CDQ[@]}-1; 0<=i; i--)); do - cdhist_disp " $i ${CDHIST_CDQ[$i]}" - done - elif [ "$1" -lt ${#CDHIST_CDQ[@]} ]; then - d=${CDHIST_CDQ[$1]} - if builtin cd "$d"; then - cdhist_rot $(($1+1)) -1 - else - cdhist_del $1 - fi - cdhist_disp "${CDHIST_CDQ[@]}" - fi -} - -function cdhist_forward { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - cdhist_rot ${#CDHIST_CDQ[@]} -${1-1} - if ! builtin cd "${CDHIST_CDQ[0]}"; then - cdhist_del 0 - fi - cdhist_disp "${CDHIST_CDQ[@]}" -} - -function cdhist_back { - [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays - cdhist_rot ${#CDHIST_CDQ[@]} ${1-1} - if ! builtin cd "${CDHIST_CDQ[0]}"; then - cdhist_del 0 - fi - cdhist_disp "${CDHIST_CDQ[@]}" -} - - -if [ ${#CDHIST_CDQ[@]} = 0 ]; then cdhist_reset; fi - - -### Aliases -### - -function cd { cdhist_cd "$@"; } -function + { cdhist_forward "$@"; } -function - { cdhist_back "$@"; } -function = { cdhist_history "$@"; } |