SF.net SVN: geany-plugins:[2124] trunk/geany-plugins/debugger/src

cesspit at users.sourceforge.net cesspit at xxxxx
Sat Aug 6 13:30:45 UTC 2011


Revision: 2124
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2124&view=rev
Author:   cesspit
Date:     2011-08-06 13:30:45 +0000 (Sat, 06 Aug 2011)

Log Message:
-----------
debugger plugin:
 - fixing gdb output parsing bug
 - adjusting margin click breakpoint switching behaviour

Modified Paths:
--------------
    trunk/geany-plugins/debugger/src/breakpoints.c
    trunk/geany-plugins/debugger/src/breakpoints.h
    trunk/geany-plugins/debugger/src/callbacks.c
    trunk/geany-plugins/debugger/src/dbm_gdb.c

Modified: trunk/geany-plugins/debugger/src/breakpoints.c
===================================================================
--- trunk/geany-plugins/debugger/src/breakpoints.c	2011-08-06 10:15:27 UTC (rev 2123)
+++ trunk/geany-plugins/debugger/src/breakpoints.c	2011-08-06 13:30:45 UTC (rev 2124)
@@ -504,18 +504,22 @@
  * 		file - breakpoints filename
  * 		line - breakpoints line
  */
-gboolean breaks_is_set(char* file, int line)
+break_state	breaks_get_state(char* file, int line)
 {
+	break_state bs = BS_NOT_SET;
+	
 	/* first look for the tree for the given file */
 	GTree *tree;
-	if (!(tree = g_hash_table_lookup(files, file)))
-		return FALSE;
-	else
+	if (tree = g_hash_table_lookup(files, file))
 	{
-		/* lookup for the break in GTree*/
-		gpointer p = g_tree_lookup(tree, GINT_TO_POINTER(line));
-		return p && ((breakpoint*)p)->enabled;
+		breakpoint *bp = g_tree_lookup(tree, GINT_TO_POINTER(line));
+		if (bp)
+		{
+			bs = bp->enabled ?  BS_ENABLED : BS_DISABLED;
+		}
 	}
+
+	return bs;
 }
 
 /*

Modified: trunk/geany-plugins/debugger/src/breakpoints.h
===================================================================
--- trunk/geany-plugins/debugger/src/breakpoints.h	2011-08-06 10:15:27 UTC (rev 2123)
+++ trunk/geany-plugins/debugger/src/breakpoints.h	2011-08-06 13:30:45 UTC (rev 2124)
@@ -19,6 +19,12 @@
  *      MA 02110-1301, USA.
  */
 
+typedef enum _break_state {
+	BS_NOT_SET,
+	BS_ENABLED,
+	BS_DISABLED
+} break_state;
+
 typedef void	(*move_to_line_cb)(char* file, int line);
 
 gboolean		breaks_init(move_to_line_cb callback);
@@ -30,7 +36,7 @@
 void			breaks_set_hits_count(char* file, int line, int count);
 void			breaks_set_condition(char* file, int line, char* condition);
 void			breaks_move_to_line(char* file, int line_from, int line_to);
-gboolean		breaks_is_set(char* file, int line);
+break_state	breaks_get_state(char* file, int line);
 GtkWidget*	breaks_get_widget();
 GList*			breaks_get_for_document(char* file);
 GList*			breaks_get_all();

Modified: trunk/geany-plugins/debugger/src/callbacks.c
===================================================================
--- trunk/geany-plugins/debugger/src/callbacks.c	2011-08-06 10:15:27 UTC (rev 2123)
+++ trunk/geany-plugins/debugger/src/callbacks.c	2011-08-06 13:30:45 UTC (rev 2124)
@@ -134,11 +134,14 @@
 			
 			char* file = editor->document->file_name;
 			int line = sci_get_line_from_position(editor->sci, nt->position) + 1;
-			
-			if (!breaks_is_set(file, line))
+
+			break_state	bs = breaks_get_state(file, line);
+			if (BS_NOT_SET == bs)
 				breaks_add(file, line, NULL, TRUE, 0);
-			else
+			else if (BS_ENABLED == bs)
 				breaks_remove(file, line);
+			else if (BS_DISABLED == bs)
+				breaks_switch(file, line);
 			
 			scintilla_send_message(editor->sci, SCI_SETFOCUS, TRUE, 0);
 			
@@ -261,10 +264,14 @@
 			if (doc)
 			{
 				int line = sci_get_current_line(doc->editor->sci) + 1;
-				if (!breaks_is_set(DOC_FILENAME(doc), line))
+				break_state	bs = breaks_get_state(DOC_FILENAME(doc), line);
+				if (BS_NOT_SET == bs)
 					breaks_add(DOC_FILENAME(doc), line, NULL, TRUE, 0);
-				else
+				else if (BS_ENABLED == bs)
 					breaks_remove(DOC_FILENAME(doc), line);
+				else if (BS_DISABLED == bs)
+					breaks_switch(DOC_FILENAME(doc), line);
+				
 				scintilla_send_message(doc->editor->sci, SCI_SETFOCUS, TRUE, 0);
 			}
 			break;

Modified: trunk/geany-plugins/debugger/src/dbm_gdb.c
===================================================================
--- trunk/geany-plugins/debugger/src/dbm_gdb.c	2011-08-06 10:15:27 UTC (rev 2123)
+++ trunk/geany-plugins/debugger/src/dbm_gdb.c	2011-08-06 13:30:45 UTC (rev 2124)
@@ -799,12 +799,11 @@
 		int num = atoi(bstart);
 		
 		bstart += strlen(bstart) + 1;
-		bstart = strstr(bstart, "fullname=\"") + strlen("fullname=\"");
-		*strchr(bstart, '\"') = '\0';
+		bstart = strstr(bstart, "original-location=\"") + strlen("original-location=\"");
+		*strchr(bstart, ':') = '\0';
 		gchar *fname = bstart;
 		
 		bstart += strlen(bstart) + 1;
-		bstart = strstr(bstart, "line=\"") + strlen("line=\"");
 		*strchr(bstart, '\"') = '\0';
 		int bline = atoi(bstart);
 		


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



More information about the Plugins-Commits mailing list