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

add /stamp command

command allow override standard stamps of incoming and outgoing messages
This commit is contained in:
Artjom Vejsel 2022-03-29 20:34:34 +03:00
parent abfab2aff7
commit 2c003dd2e1
7 changed files with 97 additions and 2 deletions

View File

@ -2411,6 +2411,30 @@ static struct cmd_t command_defs[] = {
"/color own off")
},
{ "/stamp",
parse_args, 0, 2, NULL,
CMD_NOSUBFUNCS
CMD_MAINFUNC(cmd_stamp)
CMD_TAGS(
CMD_TAG_UI)
CMD_SYN(
"/stamp outgoing <string>",
"/stamp incoming <string>",
"/stamp unset outgoing|incoming")
CMD_DESC(
"Set chat window stamp values. "
"Current format of single log-line in the chat window next: \"<timestamp> <encryption sign> <stamp> <message>\" "
"where <stamp> is \"me:\" for incoming messages or \"username@server/resource\" for outcoming messages. "
"This command allows to change <stamp> value.")
CMD_ARGS(
{ "outgoing", "Set outgoing messages stamp" },
{ "incoming", "Set incoming stamp"},
{ "unset outgoing|incoming", "unset stamp"})
CMD_EXAMPLES(
"/stamp outgoing -->",
"/stamp incoming <--")
},
{ "/avatar",
parse_args, 2, 2, NULL,
CMD_NOSUBFUNCS

View File

@ -9019,6 +9019,57 @@ cmd_paste(ProfWin* window, const char* const command, gchar** args)
return TRUE;
}
gboolean
cmd_stamp(ProfWin* window, const char* const command, gchar** args)
{
if (g_strv_length(args) == 0) {
char* def = prefs_get_string(PREF_OUTGOING_STR);
if (def) {
cons_show("The outgoing stamp is: %s", def);
free(def);
} else {
cons_show("No outgoing stamp.");
}
def = prefs_get_string(PREF_INCOMING_STR);
if (def) {
cons_show("The incoming stamp is: %s", def);
free(def);
} else {
cons_show("No incoming stamp.");
}
return TRUE;
}
if (g_strv_length(args) == 1) {
cons_show("Wrong usage: need a parameter.");
return TRUE;
}
if (g_strv_length(args) == 2) {
if (g_strcmp0(args[0], "outgoing") == 0) {
prefs_set_string(PREF_OUTGOING_STR, args[1]);
cons_show("Outgoing stamp set to: %s", args[1]);
} else if (g_strcmp0(args[0], "incoming") == 0) {
prefs_set_string(PREF_INCOMING_STR, args[1]);
cons_show("Incoming stamp set to: %s", args[1]);
} else if (g_strcmp0(args[0], "unset") == 0) {
if (g_strcmp0(args[1], "incoming") == 0) {
prefs_set_string(PREF_INCOMING_STR, NULL);
cons_show("Incoming stamp unset");
} else if (g_strcmp0(args[1], "outgoing") == 0) {
prefs_set_string(PREF_OUTGOING_STR, NULL);
cons_show("Outgoing stamp unset");
} else {
cons_bad_cmd_usage(command);
}
} else {
cons_bad_cmd_usage(command);
}
}
return TRUE;
}
gboolean
cmd_color(ProfWin* window, const char* const command, gchar** args)
{

View File

@ -250,5 +250,6 @@ gboolean cmd_correct_editor(ProfWin* window, const char* const command, gchar**
gboolean cmd_silence(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_register(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_mood(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_stamp(ProfWin* window, const char* const command, gchar** args);
#endif

View File

@ -1817,6 +1817,8 @@ _get_group(preference_t pref)
case PREF_TITLEBAR_MUC_TITLE_NAME:
case PREF_SLASH_GUARD:
case PREF_COMPOSE_EDITOR:
case PREF_OUTGOING_STR:
case PREF_INCOMING_STR:
return PREF_GROUP_UI;
case PREF_STATES:
case PREF_OUTTYPE:
@ -2144,6 +2146,10 @@ _get_key(preference_t pref)
return "compose.editor";
case PREF_SILENCE_NON_ROSTER:
return "silence.incoming.nonroster";
case PREF_OUTGOING_STR:
return "stamp.outgoing";
case PREF_INCOMING_STR:
return "stamp.incoming";
default:
return NULL;
}
@ -2281,6 +2287,10 @@ _get_default_string(preference_t pref)
gchar* editor = getenv("EDITOR");
return editor ? editor : "vim";
}
case PREF_OUTGOING_STR:
return "me:";
case PREF_INCOMING_STR:
return NULL;
case PREF_URL_SAVE_CMD:
return NULL; // Default to built-in method.
default:

View File

@ -176,6 +176,8 @@ typedef enum {
PREF_URL_SAVE_CMD,
PREF_COMPOSE_EDITOR,
PREF_SILENCE_NON_ROSTER,
PREF_OUTGOING_STR,
PREF_INCOMING_STR,
} preference_t;
typedef struct prof_alias_t

View File

@ -1248,7 +1248,8 @@ win_print_outgoing(ProfWin* window, const char* show_char, const char* const id,
if (replace_id) {
_win_correct(window, message, id, replace_id, myjid);
} else {
_win_printf(window, show_char, 0, timestamp, 0, THEME_TEXT_ME, "me", myjid, id, "%s", message);
char* outgoing_str = prefs_get_string(PREF_OUTGOING_STR);
_win_printf(window, show_char, 0, timestamp, 0, THEME_TEXT_ME, outgoing_str, myjid, id, "%s", message);
}
inp_nonblocking(TRUE);
@ -1599,7 +1600,7 @@ _win_print_internal(ProfWin* window, const char* show_char, int pad_indent, GDat
offset = 4;
me_message = TRUE;
} else {
wprintw(window->layout->win, "%s: ", from);
wprintw(window->layout->win, "%s ", from);
wattroff(window->layout->win, colour);
}
}

View File

@ -199,6 +199,12 @@ roster_get_msg_display_name(const char* const barejid, const char* const resourc
{
assert(roster != NULL);
char* incoming_str = prefs_get_string(PREF_INCOMING_STR);
if (incoming_str) {
return incoming_str;
}
GString* result = g_string_new("");
PContact contact = roster_get_contact(barejid);