Change prompt depending on command
parent
a7b0ed9907
commit
b2d35edcb2
3
chat.h
3
chat.h
|
@ -112,6 +112,9 @@ void ircFormat(const char *format, ...)
|
|||
|
||||
void handle(struct Message msg);
|
||||
void command(size_t id, char *input);
|
||||
const char *commandIsPrivmsg(size_t id, const char *input);
|
||||
const char *commandIsNotice(size_t id, const char *input);
|
||||
const char *commandIsAction(size_t id, const char *input);
|
||||
|
||||
enum Heat { Cold, Warm, Hot };
|
||||
void uiInit(void);
|
||||
|
|
21
command.c
21
command.c
|
@ -19,6 +19,27 @@
|
|||
|
||||
#include "chat.h"
|
||||
|
||||
const char *commandIsPrivmsg(size_t id, const char *input) {
|
||||
if (id == Network || id == Debug) return NULL;
|
||||
if (input[0] != '/') return input;
|
||||
const char *space = strchr(&input[1], ' ');
|
||||
const char *slash = strchr(&input[1], '/');
|
||||
if (slash && (!space || slash < space)) return input;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *commandIsNotice(size_t id, const char *input) {
|
||||
if (id == Network || id == Debug) return NULL;
|
||||
if (strncmp(input, "/notice ", 8)) return NULL;
|
||||
return &input[8];
|
||||
}
|
||||
|
||||
const char *commandIsAction(size_t id, const char *input) {
|
||||
if (id == Network || id == Debug) return NULL;
|
||||
if (strncmp(input, "/me ", 4)) return NULL;
|
||||
return &input[4];
|
||||
}
|
||||
|
||||
void command(size_t id, char *input) {
|
||||
if (id == Debug) {
|
||||
ircFormat("%s\r\n", input);
|
||||
|
|
17
ui.c
17
ui.c
|
@ -479,16 +479,29 @@ static void inputUpdate(void) {
|
|||
colorPair(mapColor(self.color), -1),
|
||||
NULL
|
||||
);
|
||||
const char *head = editHead();
|
||||
const char *skip = NULL;
|
||||
if (self.nick) {
|
||||
// TODO: Check if input is command or action.
|
||||
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, ' ');
|
||||
}
|
||||
}
|
||||
if (skip) head = skip;
|
||||
|
||||
int y, x;
|
||||
struct Style style = Reset;
|
||||
inputAdd(&style, editHead());
|
||||
inputAdd(&style, head);
|
||||
getyx(input, y, x);
|
||||
inputAdd(&style, editTail());
|
||||
wclrtoeol(input);
|
||||
|
|
Loading…
Reference in New Issue