[geany/geany-plugins] 81d8c2: vimode: check modifiers in command mode

Jiří Techet git-noreply at xxxxx
Sun May 5 16:59:38 UTC 2019


Branch:      refs/heads/master
Author:      Jiří Techet <techet at gmail.com>
Committer:   Jiří Techet <techet at gmail.com>
Date:        Sun, 05 May 2019 16:59:38 UTC
Commit:      81d8c20853fbbf0d210e17d4e2a8e655ea27dd50
             https://github.com/geany/geany-plugins/commit/81d8c20853fbbf0d210e17d4e2a8e655ea27dd50

Log Message:
-----------
vimode: check modifiers in command mode


Modified Paths:
--------------
    vimode/src/excmd-prompt.c

Modified: vimode/src/excmd-prompt.c
99 lines changed, 52 insertions(+), 47 deletions(-)
===================================================================
@@ -60,66 +60,71 @@ static void set_prompt_text(const gchar *val)
 
 static gboolean on_prompt_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer dummy)
 {
-	switch (event->keyval)
-	{
-		case GDK_KEY_Escape:
-			close_prompt();
-			return TRUE;
-
-		case GDK_KEY_Tab:
-			/* avoid leaving the entry */
-			return TRUE;
+	guint mask = GDK_MODIFIER_MASK & ~(GDK_SHIFT_MASK | GDK_LOCK_MASK);
 
-		case GDK_KEY_Return:
-		case GDK_KEY_KP_Enter:
-		case GDK_KEY_ISO_Enter:
+	if ((event->state & mask) == 0)
+	{
+		switch (event->keyval)
 		{
-			guint index;
-			const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
+			case GDK_KEY_Escape:
+				close_prompt();
+				return TRUE;
 
-			if (g_ptr_array_find_with_equal_func(history, text + 1, g_str_equal, &index))
-				g_ptr_array_remove_index(history, index);
-			if (strlen(text) > 1)
-				g_ptr_array_add(history, g_strdup(text + 1));
-			if (history->len > 20) // default vim history size
-				g_ptr_array_remove_index(history, 0);
+			case GDK_KEY_Tab:
+				/* avoid leaving the entry */
+				return TRUE;
 
-			excmd_perform(ctx, text);
-			close_prompt();
+			case GDK_KEY_Return:
+			case GDK_KEY_KP_Enter:
+			case GDK_KEY_ISO_Enter:
+			{
+				guint index;
+				const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
 
-			return TRUE;
-		}
+				if (g_ptr_array_find_with_equal_func(history, text + 1, g_str_equal, &index))
+					g_ptr_array_remove_index(history, index);
+				if (strlen(text) > 1)
+					g_ptr_array_add(history, g_strdup(text + 1));
+				if (history->len > 20) // default vim history size
+					g_ptr_array_remove_index(history, 0);
 
-		case GDK_KEY_Up:
-		case GDK_KEY_KP_Up:
-		case GDK_KEY_uparrow:
-		{
-			if (history_pos == -1 && history->len > 0)
-				history_pos = history->len - 1;
-			else if (history_pos > 0)
-				history_pos--;
+				excmd_perform(ctx, text);
+				close_prompt();
 
-			if (history_pos != -1)
-				set_prompt_text(history->pdata[history_pos]);
+				return TRUE;
+			}
 
-			return TRUE;
-		}
+			case GDK_KEY_Up:
+			case GDK_KEY_KP_Up:
+			case GDK_KEY_uparrow:
+			{
+				if (history_pos == -1 && history->len > 0)
+					history_pos = history->len - 1;
+				else if (history_pos > 0)
+					history_pos--;
+
+				if (history_pos != -1)
+					set_prompt_text(history->pdata[history_pos]);
 
-		case GDK_KEY_Down:
-		case GDK_KEY_KP_Down:
-		case GDK_KEY_downarrow:
-		{
-			if (history_pos == -1)
 				return TRUE;
+			}
+
+			case GDK_KEY_Down:
+			case GDK_KEY_KP_Down:
+			case GDK_KEY_downarrow:
+			{
+				if (history_pos == -1)
+					return TRUE;
 
-			if (history_pos + 1 < history->len)
-				history_pos++;
-			else
-				history_pos = -1;
+				if (history_pos + 1 < history->len)
+					history_pos++;
+				else
+					history_pos = -1;
 
-			set_prompt_text(history_pos == -1 ? "" : history->pdata[history_pos]);
+				set_prompt_text(history_pos == -1 ? "" : history->pdata[history_pos]);
 
-			return TRUE;
+				return TRUE;
+			}
 		}
 	}
 



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list