about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/cmd_ac.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c
index 17629d87..386e8939 100644
--- a/src/command/cmd_ac.c
+++ b/src/command/cmd_ac.c
@@ -3742,8 +3742,33 @@ _correction_autocomplete(ProfWin *window, const char *const input, gboolean prev
 static char*
 _correct_autocomplete(ProfWin *window, const char *const input, gboolean previous)
 {
-    char *result = NULL;
-
-    //TODO: get last message
-    return result;
+	char *last_message = NULL;
+	switch(window->type) {
+	case WIN_CHAT:
+	{
+		ProfChatWin *chatwin = (ProfChatWin*)window;
+		assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
+		last_message = chatwin->last_message;
+		break;
+	}
+	case WIN_MUC:
+	{
+		ProfMucWin *mucwin = (ProfMucWin*)window;
+		assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
+		last_message = mucwin->last_message;
+	}
+	default:
+		break;
+	}
+
+	if (last_message == NULL) {
+		return NULL;
+	}
+
+	GString *result_str = g_string_new("/correct ");
+	g_string_append(result_str, last_message);
+	char *result = result_str->str;
+	g_string_free(result_str, FALSE);
+
+	return result;
 }