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 handle(struct Message msg);
|
||||||
void command(size_t id, char *input);
|
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 };
|
enum Heat { Cold, Warm, Hot };
|
||||||
void uiInit(void);
|
void uiInit(void);
|
||||||
|
|
21
command.c
21
command.c
|
@ -19,6 +19,27 @@
|
||||||
|
|
||||||
#include "chat.h"
|
#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) {
|
void command(size_t id, char *input) {
|
||||||
if (id == Debug) {
|
if (id == Debug) {
|
||||||
ircFormat("%s\r\n", input);
|
ircFormat("%s\r\n", input);
|
||||||
|
|
17
ui.c
17
ui.c
|
@ -479,16 +479,29 @@ static void inputUpdate(void) {
|
||||||
colorPair(mapColor(self.color), -1),
|
colorPair(mapColor(self.color), -1),
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
const char *head = editHead();
|
||||||
|
const char *skip = NULL;
|
||||||
if (self.nick) {
|
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, '<');
|
waddch(input, '<');
|
||||||
waddstr(input, self.nick);
|
waddstr(input, self.nick);
|
||||||
waddstr(input, "> ");
|
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;
|
int y, x;
|
||||||
struct Style style = Reset;
|
struct Style style = Reset;
|
||||||
inputAdd(&style, editHead());
|
inputAdd(&style, head);
|
||||||
getyx(input, y, x);
|
getyx(input, y, x);
|
||||||
inputAdd(&style, editTail());
|
inputAdd(&style, editTail());
|
||||||
wclrtoeol(input);
|
wclrtoeol(input);
|
||||||
|
|
Loading…
Reference in New Issue