Changed the help for the -j option.
[selector.git] / bash-selector.sh
index dc1ae57..87df02c 100755 (executable)
@@ -1,31 +1,34 @@
 #!/bin/bash
 
-#########################################################################
-# This program is free software: you can redistribute it and/or modify  #
-# it under the terms of the version 3 of the GNU General Public License #
-# as published by the Free Software Foundation.                         #
-#                                                                       #
-# This program is distributed in the hope that it will be useful, but   #
-# WITHOUT ANY WARRANTY; without even the implied warranty of            #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      #
-# General Public License for more details.                              #
-#                                                                       #
-# You should have received a copy of the GNU General Public License     #
-# along with this program. If not, see <http://www.gnu.org/licenses/>.  #
-#                                                                       #
-# Written by and Copyright (C) Francois Fleuret                         #
-# Contact <francois@fleuret.org> for comments & bug reports             #
-#########################################################################
-
-# This script installs two key-bindings:
+#  selector is a simple command line utility for selection of strings
+#  with a dynamic pattern-matching.
 #
-# Alt-r for selector-based command history
+#  Copyright (c) 2011, 2012 Francois Fleuret
+#  Written by Francois Fleuret <francois@fleuret.org>
 #
-# Alt-c for selector-based directoy history
+#  This file is part of selector.
 #
-# Note that you have to call it with "source bash-selector.sh"
-# otherwise the key-bindings will not be effective in your current
-# bash
+#  selector is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License version 3 as
+#  published by the Free Software Foundation.
+#
+#  selector is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with selector.  If not, see <http://www.gnu.org/licenses/>.
+
+#  This script installs two key-bindings:
+#
+#  Alt-r for selector-based command history
+#
+#  Alt-c for selector-based directoy history
+#
+#  Note that you have to call it with "source bash-selector.sh"
+#  otherwise the key-bindings will not be effective in your current
+#  bash
 
 if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
     echo "This script must be called with 'source $(basename $0)'" >&2
@@ -37,7 +40,7 @@ fi
 ######################################################################
 
 function selector-history () {
-    selector --bash -u -c 7,4,0,3 -q <(history)
+    selector --bash -j -y -u -c 7,4,0,3 -q <(history)
 }
 
 ######################################################################
@@ -70,13 +73,17 @@ function selector-cd () {
 }
 
 function selector-cd-search () {
-    PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX)
-    selector -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY}
-    NEW_PATH="$(cat ${PATH_TEMP} | sed -e 's!~!'${HOME}'!')"
-    if [[ -s "${NEW_PATH}" ]]; then
-        selector-cd "$(cat ${PATH_TEMP} | sed -e 's!^~!'${HOME}'!')"
+    if [[ -f ${SELECTOR_CD_HISTORY} ]]; then
+        PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX)
+        selector -j -y -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY}
+        NEW_PATH="$(cat ${PATH_TEMP} | sed -e 's!~!'${HOME}'!')"
+        if [[ -s "${NEW_PATH}" ]]; then
+            selector-cd "$(cat ${PATH_TEMP} | sed -e 's!^~!'${HOME}'!')"
+        fi
+        \rm ${PATH_TEMP}
+    else
+        echo "No cd history file ${SELECTOR_CD_HISTORY}." >&2
     fi
-    \rm ${PATH_TEMP}
 }
 
 alias cd=selector-cd