diff options
Diffstat (limited to '')
-rw-r--r-- | input.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/input.c b/input.c index 6b33b93..b4f5b5e 100644 --- a/input.c +++ b/input.c @@ -174,37 +174,45 @@ void inputUpdate(void) { const char *ptr = editString(&edits[id], &buf, &cap, &pos); if (!ptr) err(EX_OSERR, "editString"); - const char *prefix = ""; + const char *head = ""; + char prefix[2] = ""; const char *prompt = self.nick; - const char *suffix = ""; + const char *tail = ""; const char *skip = buf; struct Style stylePrompt = { .fg = self.color, .bg = Default }; struct Style styleInput = StyleDefault; + if (self.showPrefix) { + uint *bits = completeBits(id, self.nick); + if (bits) prefix[0] = bitPrefix(*bits); + } size_t split = commandWillSplit(id, buf); const char *privmsg = commandIsPrivmsg(id, buf); const char *notice = commandIsNotice(id, buf); const char *action = commandIsAction(id, buf); if (privmsg) { - prefix = "<"; suffix = "> "; + head = "<"; tail = "> "; skip = privmsg; } else if (notice) { - prefix = "-"; suffix = "- "; + head = "-"; tail = "- "; styleInput.fg = LightGray; skip = notice; } else if (action) { - prefix = "* "; suffix = " "; + head = "* "; tail = " "; stylePrompt.attr |= Italic; styleInput.attr |= Italic; skip = action; } else if (id == Debug && buf[0] != '/') { + prefix[0] = '\0'; prompt = "<< "; stylePrompt.fg = Gray; } else { + prefix[0] = '\0'; prompt = ""; } if (skip > &buf[pos]) { - prefix = prompt = suffix = ""; + prefix[0] = '\0'; + head = prompt = tail = ""; skip = buf; } @@ -215,9 +223,10 @@ void inputUpdate(void) { wmove(uiInput, 0, windowTime.width); } wattr_set(uiInput, uiAttr(stylePrompt), uiPair(stylePrompt), NULL); + waddstr(uiInput, head); waddstr(uiInput, prefix); waddstr(uiInput, prompt); - waddstr(uiInput, suffix); + waddstr(uiInput, tail); getyx(uiInput, y, x); int posx; |