SF.net SVN: geany-plugins:[2121] trunk/geany-plugins/debugger/src
cesspit at users.sourceforge.net
cesspit at xxxxx
Fri Aug 5 21:28:14 UTC 2011
Revision: 2121
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2121&view=rev
Author: cesspit
Date: 2011-08-05 21:28:14 +0000 (Fri, 05 Aug 2011)
Log Message:
-----------
debugger plugin:
- adjusting breakpoints lines when one modifies a document
- fixed a bug with in-panel watch editing
- code formatting
Modified Paths:
--------------
trunk/geany-plugins/debugger/src/bptree.h
trunk/geany-plugins/debugger/src/breakpoints.h
trunk/geany-plugins/debugger/src/callbacks.c
trunk/geany-plugins/debugger/src/debug.c
trunk/geany-plugins/debugger/src/utils.c
trunk/geany-plugins/debugger/src/utils.h
Modified: trunk/geany-plugins/debugger/src/bptree.h
===================================================================
--- trunk/geany-plugins/debugger/src/bptree.h 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/bptree.h 2011-08-05 21:28:14 UTC (rev 2121)
@@ -19,13 +19,13 @@
* MA 02110-1301, USA.
*/
-gboolean bptree_init(move_to_line_cb callback);
+gboolean bptree_init(move_to_line_cb callback);
GtkWidget* bptree_get_widget();
-void bptree_add_breakpoint(breakpoint* bp);
-void bptree_update_breakpoint(breakpoint* bp);
-void bptree_remove_breakpoint(breakpoint* bp);
-void bptree_set_condition(GtkTreeIter iter, gchar* condition);
-void bptree_set_hitscount(GtkTreeIter iter, int hitscount);
-void bptree_set_enabled(GtkTreeIter iter, gboolean enabled);
+void bptree_add_breakpoint(breakpoint* bp);
+void bptree_update_breakpoint(breakpoint* bp);
+void bptree_remove_breakpoint(breakpoint* bp);
+void bptree_set_condition(GtkTreeIter iter, gchar* condition);
+void bptree_set_hitscount(GtkTreeIter iter, int hitscount);
+void bptree_set_enabled(GtkTreeIter iter, gboolean enabled);
gchar* bptree_get_condition(GtkTreeIter iter);
-void bptree_set_readonly(gboolean readonly);
+void bptree_set_readonly(gboolean readonly);
Modified: trunk/geany-plugins/debugger/src/breakpoints.h
===================================================================
--- trunk/geany-plugins/debugger/src/breakpoints.h 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/breakpoints.h 2011-08-05 21:28:14 UTC (rev 2121)
@@ -31,5 +31,5 @@
void breaks_set_condition(char* file, int line, char* condition);
void breaks_iterate(breaks_iterate_function bif);
gboolean breaks_is_set(char* file, int line);
-GtkWidget* breaks_get_widget();
-GTree* breaks_get_for_document(char* file);
+GtkWidget* breaks_get_widget();
+GTree* breaks_get_for_document(char* file);
Modified: trunk/geany-plugins/debugger/src/callbacks.c
===================================================================
--- trunk/geany-plugins/debugger/src/callbacks.c 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/callbacks.c 2011-08-05 21:28:14 UTC (rev 2121)
@@ -35,6 +35,7 @@
#include "stree.h"
#include "markers.h"
#include "utils.h"
+#include "bptree.h"
extern GeanyFunctions *geany_functions;
@@ -167,6 +168,50 @@
dialogs_show_msgbox(GTK_MESSAGE_INFO, _("To edit source files stop debugging session"));
break;
}
+ case SCN_MODIFIED:
+ {
+ if(((SC_MOD_INSERTTEXT & nt->modificationType) || (SC_MOD_DELETETEXT && nt->modificationType)) && nt->linesAdded)
+ {
+ int line = sci_get_line_from_position(editor->sci, nt->position) + 1;
+
+ GTree *breakpoints = breaks_get_for_document(editor->document->file_name);
+ if (breakpoints && g_tree_nnodes(breakpoints))
+ {
+
+ GList *breaks_list = NULL;
+ g_tree_foreach(breakpoints, tree_foreach_add_to_list, &breaks_list);
+
+ GList *iter = breaks_list;
+ while (iter)
+ {
+ breakpoint *bp = (breakpoint*)iter->data;
+
+ if (nt->linesAdded > 0 && bp->line >= line)
+ {
+ bp->line += nt->linesAdded;
+ bptree_update_breakpoint(bp);
+ }
+ else if (nt->linesAdded < 0 && bp->line >= line)
+ {
+ if (bp->line < line - nt->linesAdded)
+ {
+ bptree_remove_breakpoint(bp);
+ breaks_remove(bp->file, bp->line);
+ }
+ else
+ {
+ bp->line += nt->linesAdded;
+ bptree_update_breakpoint(bp);
+ }
+ }
+ iter = iter->next;
+ }
+
+ g_list_free(breaks_list);
+ }
+ }
+ break;
+ }
}
return FALSE;
Modified: trunk/geany-plugins/debugger/src/debug.c
===================================================================
--- trunk/geany-plugins/debugger/src/debug.c 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/debug.c 2011-08-05 21:28:14 UTC (rev 2121)
@@ -177,7 +177,7 @@
wmodel,
&iter,
W_INTERNAL, &internal,
- 1);
+ -1);
/* check if it is empty row */
gboolean is_empty_row = !gtk_tree_path_compare (tree_path, wtree_empty_path());
Modified: trunk/geany-plugins/debugger/src/utils.c
===================================================================
--- trunk/geany-plugins/debugger/src/utils.c 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/utils.c 2011-08-05 21:28:14 UTC (rev 2121)
@@ -103,7 +103,7 @@
}
/*
- * GTree iteratin functions that sets marker for each breakpoint in the tree
+ * GTree iteration functions that sets marker for each breakpoint in the tree
*/
gboolean tree_foreach_set_marker(gpointer key, gpointer value, gpointer data)
{
@@ -113,6 +113,16 @@
}
/*
+ * GTree iteration functions that adds data to the list supplied in "data" parameter
+ */
+gboolean tree_foreach_add_to_list(gpointer key, gpointer value, gpointer data)
+{
+ GList **list = (GList**)data;
+ *list = g_list_append(*list, value);
+ return FALSE;
+}
+
+/*
* get word at "position" in Scintilla document
*/
GString* get_word_at_position(ScintillaObject *sci, int position)
Modified: trunk/geany-plugins/debugger/src/utils.h
===================================================================
--- trunk/geany-plugins/debugger/src/utils.h 2011-08-05 12:25:20 UTC (rev 2120)
+++ trunk/geany-plugins/debugger/src/utils.h 2011-08-05 21:28:14 UTC (rev 2121)
@@ -25,3 +25,4 @@
GtkTreeViewColumn* create_column(gchar *name, GtkCellRenderer *renderer, gboolean expandable, gint minwidth, gchar *arg, int value);
gboolean tree_foreach_set_marker(gpointer key, gpointer value, gpointer data);
GString* get_word_at_position(ScintillaObject *sci, int position);
+gboolean tree_foreach_add_to_list(gpointer key, gpointer value, gpointer data);
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