From b0a89530f2da162999f3d96b5e6e91788dcdd9f3 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 20 Mar 2026 15:29:03 +0100 Subject: [PATCH 1/2] fix(ui): Fix custom outgoing stamp and fix stamp command help Replace the hardcoded "me" stamp for outgoing messages that are sometimes used with the value from PREF_OUTGOING_STAMP. It was never implemented in all code paths. Like with receipts for example. Additionally fix the confusing description and variable names. Ref: 2c003dd2 (Add /stamp feature) Ref: 3a4cd7da (Broke the variables) Fixes: https://github.com/profanity-im/profanity/issues/2125 Signed-off-by: Michael Vetter --- src/command/cmd_defs.c | 2 +- src/command/cmd_funcs.c | 12 ++++++------ src/ui/chatwin.c | 3 ++- src/xmpp/message.c | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index 392e6bb3..28b473fd 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2405,7 +2405,7 @@ static const struct cmd_t command_defs[] = { "/stamp unset outgoing|incoming") CMD_DESC("Set chat window stamp. " "The format of line in the chat window is: \" \" " - "where is \"me:\" for incoming messages or \"username@server/resource\" for outgoing messages. " + "where is \"me:\" for outgoing messages or \"username@server/resource\" for incoming messages. " "This command allows to change value.") CMD_ARGS({ "outgoing", "Set outgoing stamp" }, { "incoming", "Set incoming stamp"}, diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 75f4bced..1ee14d51 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -8960,15 +8960,15 @@ gboolean cmd_stamp(ProfWin* window, const char* const command, gchar** args) { if (g_strv_length(args) == 0) { - auto_gchar gchar* def_incoming = prefs_get_string(PREF_OUTGOING_STAMP); - if (def_incoming) { - cons_show("The outgoing stamp is: %s", def_incoming); + auto_gchar gchar* def_outgoing = prefs_get_string(PREF_OUTGOING_STAMP); + if (def_outgoing) { + cons_show("The outgoing stamp is: %s", def_outgoing); } else { cons_show("The default outgoing stamp is used."); } - auto_gchar gchar* def_outgoing = prefs_get_string(PREF_INCOMING_STAMP); - if (def_outgoing) { - cons_show("The incoming stamp is: %s", def_outgoing); + auto_gchar gchar* def_incoming = prefs_get_string(PREF_INCOMING_STAMP); + if (def_incoming) { + cons_show("The incoming stamp is: %s", def_incoming); } else { cons_show("The default incoming stamp is used."); } diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index f9094173..2105556f 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -392,7 +392,8 @@ chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, const char const char* display_message = plugin_message ?: message; if (request_receipt && id) { - win_print_outgoing_with_receipt((ProfWin*)chatwin, enc_char, "me", display_message, id, replace_id); + auto_gchar gchar* outgoing_str = prefs_get_string(PREF_OUTGOING_STAMP); + win_print_outgoing_with_receipt((ProfWin*)chatwin, enc_char, outgoing_str, display_message, id, replace_id); } else { win_print_outgoing((ProfWin*)chatwin, enc_char, id, replace_id, display_message); } diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 85d8b9ce..a154f7d3 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -76,7 +76,7 @@ gchar* get_display_name(const ProfMessage* const message, int* flags) { if (equals_our_barejid(message->from_jid->barejid)) { - return g_strdup("me"); + return prefs_get_string(PREF_OUTGOING_STAMP); } else { if (flags) *flags = NO_ME; From 9035af95cb4098c00bee54d62158e47daf25f697 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 20 Mar 2026 16:22:45 +0100 Subject: [PATCH 2/2] feat: Add command autocompletion for /stamp Ref: 2c003dd2 Signed-off-by: Michael Vetter --- src/command/cmd_ac.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c index a3348129..9799134d 100644 --- a/src/command/cmd_ac.c +++ b/src/command/cmd_ac.c @@ -108,6 +108,7 @@ static char* _lastactivity_autocomplete(ProfWin* window, const char* const input static char* _intype_autocomplete(ProfWin* window, const char* const input, gboolean previous); static char* _mood_autocomplete(ProfWin* window, const char* const input, gboolean previous); static char* _strophe_autocomplete(ProfWin* window, const char* const input, gboolean previous); +static char* _stamp_autocomplete(ProfWin* window, const char* const input, gboolean previous); static char* _adhoc_cmd_autocomplete(ProfWin* window, const char* const input, gboolean previous); static char* _vcard_autocomplete(ProfWin* window, const char* const input, gboolean previous); @@ -260,6 +261,8 @@ static Autocomplete mood_type_ac; static Autocomplete strophe_ac; static Autocomplete strophe_sm_ac; static Autocomplete strophe_verbosity_ac; +static Autocomplete stamp_ac; +static Autocomplete stamp_unset_ac; static Autocomplete adhoc_cmd_ac; static Autocomplete lastactivity_ac; static Autocomplete vcard_ac; @@ -414,6 +417,8 @@ static Autocomplete* all_acs[] = { &strophe_ac, &strophe_sm_ac, &strophe_verbosity_ac, + &stamp_ac, + &stamp_unset_ac, &adhoc_cmd_ac, &lastactivity_ac, &vcard_ac, @@ -1157,6 +1162,13 @@ cmd_ac_init(void) autocomplete_add(strophe_verbosity_ac, "2"); autocomplete_add(strophe_verbosity_ac, "3"); + autocomplete_add(stamp_ac, "outgoing"); + autocomplete_add(stamp_ac, "incoming"); + autocomplete_add(stamp_ac, "unset"); + + autocomplete_add(stamp_unset_ac, "outgoing"); + autocomplete_add(stamp_unset_ac, "incoming"); + autocomplete_add(mood_ac, "set"); autocomplete_add(mood_ac, "clear"); autocomplete_add(mood_ac, "on"); @@ -1379,6 +1391,7 @@ cmd_ac_init(void) g_hash_table_insert(ac_funcs, "/status", _status_autocomplete); g_hash_table_insert(ac_funcs, "/statusbar", _statusbar_autocomplete); g_hash_table_insert(ac_funcs, "/strophe", _strophe_autocomplete); + g_hash_table_insert(ac_funcs, "/stamp", _stamp_autocomplete); g_hash_table_insert(ac_funcs, "/sub", _sub_autocomplete); g_hash_table_insert(ac_funcs, "/subject", _subject_autocomplete); g_hash_table_insert(ac_funcs, "/theme", _theme_autocomplete); @@ -4231,6 +4244,20 @@ _strophe_autocomplete(ProfWin* window, const char* const input, gboolean previou return autocomplete_param_with_ac(input, "/strophe", strophe_ac, FALSE, previous); } +static char* +_stamp_autocomplete(ProfWin* window, const char* const input, gboolean previous) +{ + char* result = NULL; + + result = autocomplete_param_with_ac(input, "/stamp unset", stamp_unset_ac, TRUE, previous); + if (result) { + return result; + } + + result = autocomplete_param_with_ac(input, "/stamp", stamp_ac, TRUE, previous); + return result; +} + static char* _adhoc_cmd_autocomplete(ProfWin* window, const char* const input, gboolean previous) {