From 9cff026b5a7ed15e5e34f51e796908e77a3bc3b4 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Thu, 6 Feb 2020 19:05:51 -0500 Subject: Show input in italics for actions and set Debug prompt --- ui.c | 58 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/ui.c b/ui.c index 9f0bb88..96f722a 100644 --- a/ui.c +++ b/ui.c @@ -474,36 +474,44 @@ static void inputAdd(struct Style *style, const char *str) { } static void inputUpdate(void) { - wmove(input, 0, 0); - wattr_set( - input, - colorAttr(mapColor(self.color)), - colorPair(mapColor(self.color), -1), - NULL - ); + size_t id = windows.active->id; + const char *nick = self.nick; const char *head = editHead(); const char *skip = NULL; - if (self.nick) { - size_t id = windows.active->id; - if (NULL != (skip = commandIsPrivmsg(id, head))) { - waddch(input, '<'); - waddstr(input, self.nick); - waddstr(input, "> "); - } else if (NULL != (skip = commandIsNotice(id, head))) { - waddch(input, '-'); - waddstr(input, self.nick); - waddstr(input, "- "); - } else if (NULL != (skip = commandIsAction(id, head))) { - waddstr(input, "* "); - waddstr(input, self.nick); - waddch(input, ' '); - } + const char *pre = ""; + const char *suf = " "; + struct Style style = { .fg = self.color, .bg = Default }; + if (NULL != (skip = commandIsPrivmsg(id, head))) { + pre = "<"; + suf = "> "; + } else if (NULL != (skip = commandIsNotice(id, head))) { + pre = "-"; + suf = "- "; + } else if (NULL != (skip = commandIsAction(id, head))) { + style.attr |= A_ITALIC; + pre = "* "; + } else if (id == Debug) { + skip = head; + style.fg = Gray; + pre = "<<"; + nick = NULL; } - if (skip) head = skip; int y, x; - struct Style style = Reset; - inputAdd(&style, head); + wmove(input, 0, 0); + if (skip) { + wattr_set( + input, + style.attr | colorAttr(mapColor(style.fg)), + colorPair(mapColor(style.fg), mapColor(style.bg)), + NULL + ); + waddstr(input, pre); + if (nick) waddstr(input, nick); + waddstr(input, suf); + } + style.fg = Default; + inputAdd(&style, (skip ? skip : head)); getyx(input, y, x); inputAdd(&style, editTail()); wclrtoeol(input); -- cgit 1.4.0 =1&follow=1'>root/state.c (unfollow)
Commit message (Collapse)Author
2019-11-14Save and load full struct timevalJune McEnroe
2019-11-14Use struct timeval for sub-second precisionJune McEnroe
2019-11-14Remove server-time filter TODOJune McEnroe
I think it's fine to keep it separate since it's a core function of the bouncer.
2019-11-14Tweak filter regexesJune McEnroe
2019-11-14Filter multi-prefixJune McEnroe
2019-11-14Replace filters with regex replacesJune McEnroe
2019-11-13Refactor filterUserhostInNamesJune McEnroe
2019-11-13Factor out wordcpy for filtersJune McEnroe
2019-11-11Revert "Test getopt_config"June McEnroe
This reverts commit c8a771828e1d5fc8c476bbd650fafcfb7ba390a8. It just feels gross... idk.
2019-11-11Test getopt_configJune McEnroe
2019-11-11Add userhost-in-names to manualJune McEnroe
2019-11-11Skip initial NAMES parametersJune McEnroe
Channel names can contain '!' so splitting the whole message on it won't work. I hate this code though.
2019-11-11Filter userhost-in-namesJune McEnroe
I really want to be writing tests for these functions...
2019-11-10Compare words without copying in filtersJune McEnroe
2019-11-10Separate tags from all targetJune McEnroe
2019-11-10Filter invite-notifyJune McEnroe
2019-11-10Add capsicum note to READMEJune McEnroe
2019-11-10Filter extended-joinJune McEnroe
2019-11-10Expand client configuration documentation and list capabilitiesJune McEnroe
2019-11-10Request all supported caps from serverJune McEnroe
2019-11-10Filter ACCOUNT, AWAY, CHGHOST for incapable clientsJune McEnroe
2019-11-10Rename listen to localJune McEnroe
2019-11-09Remove extended-join and invite-notifyJune McEnroe
The remaining caps only generate new commands which can easily be filtered out when sending to clients so will be in the first pass of support. extended-join is probably safe to pass through unaltered, just causing extraneous parameters on JOIN commands, but maybe not. invite-notify reuses the INVITE command where the invited user is not self.
2019-11-09Maintain stateCaps and offer them to clientsJune McEnroe
2019-11-09Parse capabilitiesJune McEnroe
The list that I've defined are the ones that I expect to be able to enable probably without any clients breaking... And of course server-time which pounce implements itself.
2019-11-09Avoid the reserved _A names with BIT macroJune McEnroe
2019-11-09Define macro for bit flag enumsJune McEnroe
2019-11-08Check that password is hashedJune McEnroe
2019-11-08Avoid calling getopt_long again after it returns -1June McEnroe
On GNU, calling getopt_long again will reset optind back to the first non-option argument, which would cause an infinite loop of reading the same configurtion file forever.
2019-11-08Only change AWAY status for registered clientsJune McEnroe
Turns out I did eventually fix this, because I may want to implement "passive clients" for logging or notification stuff, which wouldn't affect AWAY status either.
2019-11-07Just write the example normallyJune McEnroe
2019-11-07Include path in readlinkat errorJune McEnroe
2019-11-07Call clientConsume before clientRecvJune McEnroe
This might reduce the frequency of a client getting its own message back because it was behind in the ring when it sent it.
2019-11-06Use -l:filename in Linux.mkJune McEnroe
2019-11-06Fix compat.h for #defined strlcpyJune McEnroe
2019-11-06Allow unsetting LIBRESSL_PREFIXJune McEnroe
2019-11-06Document calico service configurationJune McEnroe
2019-11-06Document SASL EXTERNAL configuration in more detailJune McEnroe
2019-11-06Document pounce service configurationJune McEnroe
2019-11-06Mention Darwin and GNU/Linux in READMEJune McEnroe
2019-11-06Assume LibreSSL from brew on DarwinJune McEnroe
2019-11-06Remove -DNO_EXPLICIT_BZERO from Darwin.mkJune McEnroe
2019-11-06Don't install rc scripts or dirs on LinuxJune McEnroe