SF.net SVN: geany:[3949] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Fri Jul 10 15:17:34 UTC 2009


Revision: 3949
          http://geany.svn.sourceforge.net/geany/?rev=3949&view=rev
Author:   ntrel
Date:     2009-07-10 15:17:27 +0000 (Fri, 10 Jul 2009)

Log Message:
-----------
Add 'Mark All' keybinding.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/keybindings.c
    trunk/src/keybindings.h
    trunk/src/search.c
    trunk/src/search.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-07-10 14:03:16 UTC (rev 3948)
+++ trunk/ChangeLog	2009-07-10 15:17:27 UTC (rev 3949)
@@ -3,6 +3,8 @@
  * src/editor.c:
    Delay highlighting matching braces by 100ms, which speeds up
    scrolling with the arrow keys.
+ * src/keybindings.c, src/keybindings.h, src/search.c, src/search.h:
+   Add 'Mark All' keybinding.
 
 
 2009-07-09  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2009-07-10 14:03:16 UTC (rev 3948)
+++ trunk/src/keybindings.c	2009-07-10 15:17:27 UTC (rev 3949)
@@ -49,6 +49,7 @@
 #include "treeviews.h"
 #include "geanywraplabel.h"
 #include "main.h"
+#include "search.h"
 
 
 GPtrArray *keybinding_groups;	/* array of GeanyKeyGroup pointers */
@@ -360,6 +361,8 @@
 		0, 0, "popup_findusage", _("Find Usage"), NULL);
 	keybindings_set_item(group, GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE, cb_func_search_action,
 		0, 0, "popup_finddocumentusage", _("Find Document Usage"), NULL);
+	keybindings_set_item(group, GEANY_KEYS_SEARCH_MARKALL, cb_func_search_action,
+		GDK_m, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "find_markall", _("Mark All"), NULL);
 
 	group = ADD_KB_GROUP(GOTO, _("Go to"));
 
@@ -1251,8 +1254,13 @@
 
 static void cb_func_search_action(guint key_id)
 {
-	GeanyDocument *doc;
+	GeanyDocument *doc = document_get_current();
+	ScintillaObject *sci;
 
+	if (!doc)
+		return;
+	sci = doc->editor->sci;
+
 	switch (key_id)
 	{
 		case GEANY_KEYS_SEARCH_FIND:
@@ -1274,15 +1282,27 @@
 		case GEANY_KEYS_SEARCH_PREVIOUSMESSAGE:
 			on_previous_message1_activate(NULL, NULL); break;
 		case GEANY_KEYS_SEARCH_FINDUSAGE:
-			doc = document_get_current();
 			read_current_word(doc);
 			on_find_usage1_activate(NULL, NULL);
 			break;
 		case GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE:
-			doc = document_get_current();
 			read_current_word(doc);
 			on_find_document_usage1_activate(NULL, NULL);
 			break;
+		case GEANY_KEYS_SEARCH_MARKALL:
+			if (sci_has_selection(sci))
+			{
+				gchar *text = g_alloca(sci_get_selected_text_length(sci) + 1);
+
+				sci_get_selected_text(sci, text);
+				search_mark_all(doc, text, SCFIND_MATCHCASE);
+			}
+			else
+			{
+				read_current_word(doc);
+				search_mark_all(doc, editor_info.current_word, SCFIND_MATCHCASE | SCFIND_WHOLEWORD);
+			}
+			break;
 	}
 }
 

Modified: trunk/src/keybindings.h
===================================================================
--- trunk/src/keybindings.h	2009-07-10 14:03:16 UTC (rev 3948)
+++ trunk/src/keybindings.h	2009-07-10 15:17:27 UTC (rev 3949)
@@ -206,6 +206,7 @@
 	GEANY_KEYS_SEARCH_PREVIOUSMESSAGE,
 	GEANY_KEYS_SEARCH_FINDUSAGE,
 	GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE,
+	GEANY_KEYS_SEARCH_MARKALL,
 	GEANY_KEYS_SEARCH_COUNT
 };
 

Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c	2009-07-10 14:03:16 UTC (rev 3948)
+++ trunk/src/search.c	2009-07-10 15:17:27 UTC (rev 3949)
@@ -959,13 +959,16 @@
 }
 
 
-static gint search_mark(GeanyDocument *doc, const gchar *search_text, gint flags)
+/* @return Number of matches marked. */
+gint search_mark_all(GeanyDocument *doc, const gchar *search_text, gint flags)
 {
 	gint pos, count = 0;
 	gsize len;
 	struct Sci_TextToFind ttf;
 
 	g_return_val_if_fail(doc != NULL, 0);
+	if (!NZV(search_text))
+		return 0;
 
 	/* clear previous search indicators */
 	editor_indicator_clear(doc->editor, GEANY_INDICATOR_SEARCH);
@@ -1074,7 +1077,7 @@
 
 			case GEANY_RESPONSE_MARK:
 			{
-				gint count = search_mark(doc, search_data.text, search_data.flags);
+				gint count = search_mark_all(doc, search_data.text, search_data.flags);
 
 				if (count == 0)
 					ui_set_statusbar(FALSE, _("No matches found for \"%s\"."), search_data.text);

Modified: trunk/src/search.h
===================================================================
--- trunk/src/search.h	2009-07-10 14:03:16 UTC (rev 3948)
+++ trunk/src/search.h	2009-07-10 15:17:27 UTC (rev 3949)
@@ -65,4 +65,6 @@
 
 void search_find_selection(GeanyDocument *doc, gboolean search_backwards);
 
+gint search_mark_all(GeanyDocument *doc, const gchar *search_text, gint flags);
+
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list