1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Implemented help [command]

This commit is contained in:
James Booth 2012-08-14 23:22:12 +01:00
parent 7972a9a8b4
commit 2f8a53fa35

View File

@ -80,51 +80,61 @@ static struct cmd_t main_commands[] =
{ {
{ "/help", { "/help",
_cmd_help, _cmd_help,
{ "/help", "This help.", { "/help [command]", "This help, or help on a specific command",
{ "/help [command]", { "/help [command]",
"---------------"
"", "",
"/help will list all commands with short help on what they do." "/help will list all commands with short help on what they do.",
"/help [command] will give more detailed help on a specific command." } } }, "/help [command] will give more detailed help on a specific command.",
NULL } } },
{ "/connect", { "/connect",
_cmd_connect, _cmd_connect,
{ "/connect user@host", "Login to jabber.", { "/connect user@host", "Login to jabber.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/prefs", { "/prefs",
_cmd_prefs, _cmd_prefs,
{ "/prefs", "Show current preferences.", { "/prefs", "Show current preferences.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/msg", { "/msg",
_cmd_msg, _cmd_msg,
{ "/msg user@host mesg", "Send mesg to user.", { "/msg user@host mesg", "Send mesg to user.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/tiny", { "/tiny",
_cmd_tiny, _cmd_tiny,
{ "/tiny url", "Send url as tinyurl in current chat.", { "/tiny url", "Send url as tinyurl in current chat.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/ros", { "/ros",
_cmd_ros, _cmd_ros,
{ "/ros", "List all contacts.", { "/ros", "List all contacts.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/who", { "/who",
_cmd_who, _cmd_who,
{ "/who", "Find out who is online.", { "/who", "Find out who is online.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/close", { "/close",
_cmd_close, _cmd_close,
{ "/close", "Close current chat window.", { "/close", "Close current chat window.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/quit", { "/quit",
_cmd_quit, _cmd_quit,
{ "/quit", "Quit Profanity.", { "/quit", "Quit Profanity.",
{ "Ahh" } } } { "Ahh",
NULL } } }
}; };
static struct cmd_t setting_commands[] = static struct cmd_t setting_commands[] =
@ -132,26 +142,32 @@ static struct cmd_t setting_commands[] =
{ "/beep", { "/beep",
_cmd_set_beep, _cmd_set_beep,
{ "/beep on|off", "Enable/disable sound notifications.", { "/beep on|off", "Enable/disable sound notifications.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/notify", { "/notify",
_cmd_set_notify, _cmd_set_notify,
{ "/notify on|off", "Enable/disable desktop notifications.", { "/notify on|off", "Enable/disable desktop notifications.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/flash", { "/flash",
_cmd_set_flash, _cmd_set_flash,
{ "/flash on|off", "Enable/disable screen flash notifications.", { "/flash on|off", "Enable/disable screen flash notifications.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/showsplash", { "/showsplash",
_cmd_set_showsplash, _cmd_set_showsplash,
{ "/showsplash on|off", "Enable/disable splash logo on startup.", { "/showsplash on|off", "Enable/disable splash logo on startup.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/chlog", { "/chlog",
_cmd_set_chlog, _cmd_set_chlog,
{ "/chlog on|off", "Enable/disable chat logging.", { "/chlog on|off", "Enable/disable chat logging.",
{ "Ahh" } } } { "Ahh",
NULL } } }
}; };
static struct cmd_t status_commands[] = static struct cmd_t status_commands[] =
@ -159,27 +175,32 @@ static struct cmd_t status_commands[] =
{ "/away", { "/away",
_cmd_away, _cmd_away,
{ "/away [msg]", "Set status to away.", { "/away [msg]", "Set status to away.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/chat", { "/chat",
_cmd_chat, _cmd_chat,
{ "/chat [msg]", "Set status to chat (available for chat).", { "/chat [msg]", "Set status to chat (available for chat).",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/dnd", { "/dnd",
_cmd_dnd, _cmd_dnd,
{ "/dnd [msg]", "Set status to dnd (do not disturb.", { "/dnd [msg]", "Set status to dnd (do not disturb.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/online", { "/online",
_cmd_online, _cmd_online,
{ "/online [msg]", "Set status to online.", { "/online [msg]", "Set status to online.",
{ "Ahh" } } }, { "Ahh",
NULL } } },
{ "/xa", { "/xa",
_cmd_xa, _cmd_xa,
{ "/xa [msg]", "Set status to xa (extended away).", { "/xa [msg]", "Set status to xa (extended away).",
{ "Ahh" } } } { "Ahh",
NULL } } }
}; };
static PAutocomplete commands_ac; static PAutocomplete commands_ac;
@ -362,7 +383,50 @@ _cmd_quit(const char * const inp, struct cmd_help_t help)
static gboolean static gboolean
_cmd_help(const char * const inp, struct cmd_help_t help) _cmd_help(const char * const inp, struct cmd_help_t help)
{ {
if (strcmp(inp, "/help") == 0) {
cons_help(); cons_help();
} else {
char *cmd;
cmd = strndup(inp+6, strlen(inp)-6);
char cmd_with_slash[1 + strlen(cmd) + 1];
sprintf(cmd_with_slash, "/%s", cmd);
const gchar **help_text = NULL;
unsigned int i;
for (i = 0; i < ARRAY_SIZE(main_commands); i++) {
struct cmd_t *pcmd = main_commands+i;
if (strcmp(pcmd->cmd, cmd_with_slash) == 0) {
help_text = pcmd->help.long_help;
}
}
for (i = 0; i < ARRAY_SIZE(setting_commands); i++) {
struct cmd_t *pcmd = setting_commands+i;
if (strcmp(pcmd->cmd, cmd_with_slash) == 0) {
help_text = pcmd->help.long_help;
}
}
for (i = 0; i < ARRAY_SIZE(status_commands); i++) {
struct cmd_t *pcmd = status_commands+i;
if (strcmp(pcmd->cmd, cmd_with_slash) == 0) {
help_text = pcmd->help.long_help;
}
}
cons_show("");
if (help_text != NULL) {
for (i = 0; help_text[i] != NULL; i++) {
cons_show(help_text[i]);
}
} else {
cons_show("No such command.");
}
cons_show("");
}
return TRUE; return TRUE;
} }