diff options
author | June McEnroe <june@causal.agency> | 2020-02-07 21:53:50 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-02-07 21:54:18 -0500 |
commit | b200194206a943bf89dde619288eb7fbe3fee1a2 (patch) | |
tree | b983ddd0f44ada329bb41061237462b4c7df375a | |
parent | Populate completion with commands (diff) | |
download | catgirl-b200194206a943bf89dde619288eb7fbe3fee1a2.tar.gz catgirl-b200194206a943bf89dde619288eb7fbe3fee1a2.zip |
Use complete to abbreviate commands
Diffstat (limited to '')
-rw-r--r-- | catgirl.1 | 6 | ||||
-rw-r--r-- | command.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/catgirl.1 b/catgirl.1 index e746150..76f527e 100644 --- a/catgirl.1 +++ b/catgirl.1 @@ -118,6 +118,12 @@ Log in with the server password .El . .Sh COMMANDS +Any unique prefix can be used to abbreviate a command. +For example, +.Ic /join +can be typed +.Ic /j . +. .Ss Chat Commands .Bl -tag -width Ds .It Ic /join Ar channel diff --git a/command.c b/command.c index 41aacc9..8bd8b28 100644 --- a/command.c +++ b/command.c @@ -125,7 +125,12 @@ void command(size_t id, char *input) { } else if (input[0] == '/' && isdigit(input[1])) { commandWindow(id, &input[1]); } else { - char *cmd = strsep(&input, " "); + const char *cmd = strsep(&input, " "); + const char *unique = complete(None, cmd); + if (unique && !complete(None, cmd)) { + cmd = unique; + completeReject(); + } const struct Handler *handler = bsearch( cmd, Commands, ARRAY_LEN(Commands), sizeof(*handler), compar ); |