From 525ec11e4619409a95f8506dd2bf9a2724f69d37 Mon Sep 17 00:00:00 2001 From: MarcoPolo-PasTonMolo Date: Sat, 24 Dec 2022 21:03:24 +0200 Subject: [PATCH] Make `/url save` autocomplete filenames after a url Previously after the url if you pressed tab, even if you typed out a filepath, profanity would erase that and cycle through url autocomplete results. This patch solves that and autocompletes filepaths after the url. Fixes https://github.com/profanity-im/profanity/issues/1783 --- src/command/cmd_ac.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c index 9a839258..4fc2e63d 100644 --- a/src/command/cmd_ac.c +++ b/src/command/cmd_ac.c @@ -4352,7 +4352,21 @@ _url_autocomplete(ProfWin* window, const char* const input, gboolean previous) return result; } - result = autocomplete_param_with_func(input, "/url save", wins_get_url, previous, window); + gboolean arg_result; + gchar** args = parse_args(input, 1, 8, &arg_result); + gboolean space_at_end = g_str_has_suffix(input, " "); + int num_args = g_strv_length(args); + + if (arg_result) { + if ((num_args == 1 && space_at_end) || (num_args == 2 && !space_at_end)) { + result = autocomplete_param_with_func(input, "/url save", wins_get_url, previous, window); + } else if ((num_args == 2 && space_at_end) || (num_args == 3 && !space_at_end)) { + gchar* cmd = g_strdup_printf("/url save %s", args[1]); + result = cmd_ac_complete_filepath(input, cmd, previous); + g_free(cmd); + } + } + g_strfreev(args); } return result;