diff options
| author | Tim Allen <screwtape@froup.com> | 2016-10-08 16:02:50 +1100 |
|---|---|---|
| committer | Tim Allen <screwtape@froup.com> | 2016-10-08 16:02:50 +1100 |
| commit | 55666d0f67bb94d5654a9389031fa9269cf512a5 (patch) | |
| tree | ea34b39704d56470c293ff6f63e8184a478e7ad6 /vis-complete | |
| parent | 626991abc89a86ff1ea851b4ccae6801b323223c (diff) | |
| download | vis-55666d0f67bb94d5654a9389031fa9269cf512a5.tar.gz vis-55666d0f67bb94d5654a9389031fa9269cf512a5.tar.xz | |
Handle completing absolute paths, not just relative ones.
Diffstat (limited to 'vis-complete')
| -rwxr-xr-x | vis-complete | 22 |
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' |
