aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/vis-complete.121
-rwxr-xr-xvis-complete31
2 files changed, 34 insertions, 18 deletions
diff --git a/man/vis-complete.1 b/man/vis-complete.1
index 9ad695c..d8542bb 100644
--- a/man/vis-complete.1
+++ b/man/vis-complete.1
@@ -1,4 +1,4 @@
-.Dd January 15, 2017
+.Dd March 21, 2023
.Dt VIS-COMPLETE 1
.Os Vis VERSION
.
@@ -8,14 +8,12 @@
.
.Sh SYNOPSIS
.Nm vis-complete
-.Op Fl -file
-.Op Fl -word
+.Op Fl -file | -word
.Op Ar --
-.Op Ar pattern
+.Ar pattern
.Pp
.Nm vis-complete
-.Fl h |
-.Fl -help
+.Fl h | -help
.
.Sh DESCRIPTION
.Nm vis-complete
@@ -36,17 +34,16 @@ This passes
.Ar pattern
to
.Nm find
-to obtain a list of matching file names.
+to obtain a list of matching file names
+(this is the default).
.It Fl -word
This reads standard input to obtain a list of lines matching
.Ar pattern .
.It Fl -
-If this token is encountered before the first non-option argument,
-all following arguments will be treated as pattern,
-even if they would otherwise be valid command-line options.
+An argument following this token will be treated as pattern,
+even if it would otherwise be a valid command-line option.
.Pp
-If encountered after the first non-option argument,
-or after a previous instance of
+If encountered after a previous instance of
.Li --
it is treated as a pattern.
.It Ar pattern
diff --git a/vis-complete b/vis-complete
index c61a6d5..f30359b 100755
--- a/vis-complete
+++ b/vis-complete
@@ -1,33 +1,52 @@
#!/bin/sh
set -e
+usage() {
+ printf '%s\n' "usage: $(basename "$0") [--file|--word] pattern" \
+ " $(basename "$0") -h|--help"
+}
+
basic_regex_quote() { printf "%s" "$1" | sed 's|[\\.*^$[]|\\&|g'; }
glob_quote () { printf "%s" "$1" | sed 's|[\\?*[]]|\\&|g'; }
-PATTERN=""
COMPLETE_WORD=0
FIND_FILE_LIMIT=1000
while [ $# -gt 0 ]; do
case "$1" in
- -h|--help)
- echo "usage: $(basename "$0") [-h] [--file|--word] [pattern]"
- exit 0;
- ;;
--file)
+ COMPLETE_WORD=0
shift
;;
--word)
COMPLETE_WORD=1
shift
;;
+ --)
+ shift
+ break
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -*)
+ usage
+ exit 1
+ ;;
*)
- PATTERN="$1"
break
;;
esac
done
+if [ $# -ne 1 ]; then
+ usage
+ exit 1
+fi
+
+PATTERN="$1"
+
if [ $COMPLETE_WORD = 1 ]; then
tr -cs '[:alnum:]_' '\n' |
grep "^$(basic_regex_quote "$PATTERN")." |