summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/ui.c b/ui.c
index a78d5c8..ebae222 100644
--- a/ui.c
+++ b/ui.c
@@ -689,7 +689,7 @@ static void windowList(const struct Window *window) {
}
}
-static void inputAdd(struct Style *style, const char *str) {
+static void inputAdd(struct Style reset, struct Style *style, const char *str) {
while (*str) {
const char *code = str;
size_t len = styleParse(style, &str);
@@ -705,6 +705,7 @@ static void inputAdd(struct Style *style, const char *str) {
}
if (str - code > 1) waddnstr(input, &code[1], str - &code[1]);
if (str[0] == '\n') {
+ *style = reset;
str++;
len--;
}
@@ -716,10 +717,13 @@ static void inputAdd(struct Style *style, const char *str) {
}
}
-static char *inputStop(struct Style *style, const char *str, char *stop) {
+static char *inputStop(
+ struct Style reset, struct Style *style,
+ const char *str, char *stop
+) {
char ch = *stop;
*stop = '\0';
- inputAdd(style, str);
+ inputAdd(reset, style, str);
*stop = ch;
return stop;
}
@@ -777,18 +781,18 @@ static void inputUpdate(void) {
const char *ptr = skip;
struct Style style = styleInput;
if (split && split < pos) {
- ptr = inputStop(&style, ptr, &buf[split]);
+ ptr = inputStop(styleInput, &style, ptr, &buf[split]);
style = styleInput;
style.bg = Red;
}
- ptr = inputStop(&style, ptr, &buf[pos]);
+ ptr = inputStop(styleInput, &style, ptr, &buf[pos]);
getyx(input, y, x);
if (split && split >= pos) {
- ptr = inputStop(&style, ptr, &buf[split]);
+ ptr = inputStop(styleInput, &style, ptr, &buf[split]);
style = styleInput;
style.bg = Red;
}
- inputAdd(&style, ptr);
+ inputAdd(styleInput, &style, ptr);
wclrtoeol(input);
wmove(input, y, x);
}