diff options
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/command.c b/command.c index 4fb58da..502ff17 100644 --- a/command.c +++ b/command.c @@ -139,7 +139,7 @@ static void commandMsg(uint id, char *params) { char *nick = strsep(¶ms, " "); uint msg = idFor(nick); if (idColors[msg] == Default) { - idColors[msg] = cacheGet(id, nick)->color; + idColors[msg] = completeColor(id, nick); } if (params) { splitMessage("PRIVMSG", msg, params); @@ -227,12 +227,12 @@ static void commandOps(uint id, char *params) { ); bool first = true; struct Cursor curs = {0}; - for (const char *nick; (nick = cacheNextKey(&curs, id));) { - char prefix = bitPrefix(curs.entry->prefixBits); + for (const char *nick; (nick = completeEach(&curs, id));) { + char prefix = bitPrefix(*completeBits(id, nick)); if (!prefix || prefix == '+') continue; ptr = seprintf( ptr, end, "%s\3%02d%c%s\3", - (first ? "" : ", "), curs.entry->color, prefix, nick + (first ? "" : ", "), completeColor(id, nick), prefix, nick ); first = false; } @@ -403,7 +403,7 @@ static void commandQuery(uint id, char *params) { if (!params) return; uint query = idFor(params); if (idColors[query] == Default) { - idColors[query] = cacheGet(id, params)->color; + idColors[query] = completeColor(id, params); } windowShow(windowFor(query)); } @@ -420,10 +420,10 @@ static void commandWindow(uint id, char *params) { return; } struct Cursor curs = {0}; - for (const char *match; (match = cacheSearch(&curs, None, params));) { - id = idFind(match); + for (const char *str; (str = completeSubstr(&curs, None, params));) { + id = idFind(str); if (!id) continue; - cacheAccept(&curs); + completeAccept(&curs); windowShow(windowFor(id)); break; } @@ -560,7 +560,6 @@ static void commandHelp(uint id, char *params) { enum Flag { BIT(Multiline), BIT(Restrict), - BIT(Kiosk), }; static const struct Handler { @@ -572,37 +571,37 @@ static const struct Handler { { "/away", commandAway, 0, 0 }, { "/ban", commandBan, 0, 0 }, { "/close", commandClose, 0, 0 }, - { "/copy", commandCopy, Restrict | Kiosk, 0 }, + { "/copy", commandCopy, Restrict, 0 }, { "/cs", commandCS, 0, 0 }, - { "/debug", commandDebug, Kiosk, 0 }, + { "/debug", commandDebug, 0, 0 }, { "/deop", commandDeop, 0, 0 }, { "/devoice", commandDevoice, 0, 0 }, { "/except", commandExcept, 0, 0 }, - { "/exec", commandExec, Multiline | Restrict | Kiosk, 0 }, + { "/exec", commandExec, Multiline | Restrict, 0 }, { "/help", commandHelp, 0, 0 }, // Restrict special case. { "/highlight", commandHighlight, 0, 0 }, { "/ignore", commandIgnore, 0, 0 }, { "/invex", commandInvex, 0, 0 }, { "/invite", commandInvite, 0, 0 }, - { "/join", commandJoin, Kiosk, 0 }, + { "/join", commandJoin, 0, 0 }, { "/kick", commandKick, 0, 0 }, - { "/list", commandList, Kiosk, 0 }, + { "/list", commandList, 0, 0 }, { "/me", commandMe, Multiline, 0 }, { "/mode", commandMode, 0, 0 }, { "/move", commandMove, 0, 0 }, - { "/msg", commandMsg, Multiline | Kiosk, 0 }, + { "/msg", commandMsg, Multiline, 0 }, { "/names", commandNames, 0, 0 }, { "/nick", commandNick, 0, 0 }, { "/notice", commandNotice, Multiline, 0 }, { "/ns", commandNS, 0, 0 }, - { "/o", commandOpen, Restrict | Kiosk, 0 }, + { "/o", commandOpen, Restrict, 0 }, { "/op", commandOp, 0, 0 }, - { "/open", commandOpen, Restrict | Kiosk, 0 }, + { "/open", commandOpen, Restrict, 0 }, { "/ops", commandOps, 0, 0 }, - { "/part", commandPart, Kiosk, 0 }, - { "/query", commandQuery, Kiosk, 0 }, + { "/part", commandPart, 0, 0 }, + { "/query", commandQuery, 0, 0 }, { "/quit", commandQuit, 0, 0 }, - { "/quote", commandQuote, Multiline | Kiosk, 0 }, + { "/quote", commandQuote, Multiline, 0 }, { "/say", commandPrivmsg, Multiline, 0 }, { "/setname", commandSetname, 0, CapSetname }, { "/topic", commandTopic, 0, 0 }, @@ -672,7 +671,6 @@ size_t commandWillSplit(uint id, const char *input) { static bool commandAvailable(const struct Handler *handler) { if (handler->flags & Restrict && self.restricted) return false; - if (handler->flags & Kiosk && self.kiosk) return false; if (handler->caps && (handler->caps & self.caps) != handler->caps) { return false; } @@ -695,8 +693,8 @@ void command(uint id, char *input) { struct Cursor curs = {0}; const char *cmd = strsep(&input, " "); - const char *unique = cacheComplete(&curs, None, cmd); - if (unique && !cacheComplete(&curs, None, cmd)) { + const char *unique = completePrefix(&curs, None, cmd); + if (unique && !completePrefix(&curs, None, cmd)) { cmd = unique; } @@ -724,9 +722,9 @@ void command(uint id, char *input) { handler->fn(id, input); } -void commandCache(void) { +void commandCompletion(void) { for (size_t i = 0; i < ARRAY_LEN(Commands); ++i) { if (!commandAvailable(&Commands[i])) continue; - cacheInsert(false, None, Commands[i].cmd); + completePush(None, Commands[i].cmd, Default); } } |