aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Allen <screwtape@froup.com>2016-10-08 16:02:50 +1100
committerTim Allen <screwtape@froup.com>2016-10-08 16:02:50 +1100
commit55666d0f67bb94d5654a9389031fa9269cf512a5 (patch)
treeea34b39704d56470c293ff6f63e8184a478e7ad6
parent626991abc89a86ff1ea851b4ccae6801b323223c (diff)
downloadvis-55666d0f67bb94d5654a9389031fa9269cf512a5.tar.gz
vis-55666d0f67bb94d5654a9389031fa9269cf512a5.tar.xz
Handle completing absolute paths, not just relative ones.
-rwxr-xr-xvis-complete22
1 files changed, 20 insertions, 2 deletions
diff --git a/vis-complete b/vis-complete
index 278bf40..52dd464 100755
--- a/vis-complete
+++ b/vis-complete
@@ -28,5 +28,23 @@ done
if [ $COMPLETE_WORD = 1 ]; then
tr -cs '[:alnum:]_' '\n' | grep "^$PATTERN." | sort -u
else
- find . ! -path '*/\.*' -a -path "./$PATTERN*" 2>/dev/null | head -n $FIND_FILE_LIMIT | cut -b 3- | sort
-fi | vis-menu -b | sed "s/^$(printf "%s" "$PATTERN" | sed 's:/:\\/:g' )//" | tr -d '\n'
+ case $PATTERN in
+ /*)
+ # An absolute path. This is fine.
+ ;;
+ *)
+ # A relaive path. Let's make it absolute.
+ PATTERN=$PWD/$PATTERN
+ ;;
+ esac
+
+ START=$(dirname "$PATTERN")
+ find "$START" \
+ ! -path '*/\.*' \
+ -a -path "$PATTERN*" 2>/dev/null |
+ head -n $FIND_FILE_LIMIT |
+ sort
+fi |
+ vis-menu -b |
+ cut -b $(( ${#PATTERN} + 1 ))- |
+ tr -d '\n'