Added comments.
[selector.git] / bash-selector.sh
index abf4059..32e4925 100755 (executable)
 # Contact <francois.fleuret@idiap.ch> for comments & bug reports        #
 #########################################################################
 
-set -e
+# This script installs two keybinding:
+#
+# Alt-R for selector-based command history
+#
+# Alt-C for selector-based directoy history
+#
+# It has to be called with ". bash-selector.sh"
 
-# Selector based history
+######################################################################
+# Selector-based command history
+######################################################################
 
 function selector-history () {
     selector --bash -u -c 7,4,0,3 -q <(history)
 }
 
-# Maintains a list of visited directories and provide a selector-based
-# command to go back to any of them.
+######################################################################
+# Selector-based directory history
+######################################################################
+
+# The file where we will keep track of the directories
 
 export SELECTOR_CD_HISTORY
 
 [[ "${SELECTOR_CD_HISTORY}" ]] || SELECTOR_CD_HISTORY=${HOME}/.selector-cd-history
 
+# The function to use in place of the standard "cd"
+
 function selector-cd () {
     if [[ -z "$1" ]]; then
         cd
     else
         cd "$@"
     fi
-    echo $PWD | sed -e "s!${HOME}!~!" >> ${SELECTOR_CD_HISTORY}
+    TMP=$(mktemp /tmp/selector-cd.XXXXXX)
+    tail -1000 < ${SELECTOR_CD_HISTORY} > ${TMP}
+    echo $PWD | sed -e "s!${HOME}!~!" >> ${TMP}
+    cat ${TMP} > ${SELECTOR_CD_HISTORY}
+    rm -f ${TMP}
 }
 
 function selector-cd-search () {
@@ -53,6 +70,10 @@ function selector-cd-search () {
 
 alias cd=selector-cd
 
+######################################################################
+# The key-bindings themselves
+######################################################################
+
 # M-r puts the selected history line in place of the current one
 
 bind '"\C-[r":"\C-a\C-kselector-history\C-m"'