Revision: 1386 http://svn.sourceforge.net/geany/?rev=1386&view=rev Author: ntrel Date: 2007-03-12 09:24:52 -0700 (Mon, 12 Mar 2007)
Log Message: ----------- Update the status bar after setting the document file type, if it has changed. Update the status bar after colourising open files, so the current tag is accurate.
Modified Paths: -------------- trunk/ChangeLog trunk/src/document.c trunk/src/utils.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2007-03-12 16:18:12 UTC (rev 1385) +++ trunk/ChangeLog 2007-03-12 16:24:52 UTC (rev 1386) @@ -8,6 +8,11 @@
* src/build.c: Switch to Compiler window when using Next Error command. + * src/utils.c, src/document.c: + Update the status bar after setting the document file type, if it + has changed. + Update the status bar after colourising open files, so the current + tag is accurate.
2007-03-10 Nick Treleaven nick.treleaven@btinternet.com
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2007-03-12 16:18:12 UTC (rev 1385) +++ trunk/src/document.c 2007-03-12 16:24:52 UTC (rev 1386) @@ -1586,13 +1586,15 @@ void document_set_filetype(gint idx, filetype *type) { gboolean colourise = FALSE; + gboolean ft_changed;
if (type == NULL || ! DOC_IDX_VALID(idx)) return;
geany_debug("%s : %s (%s)", doc_list[idx].file_name, type->name, doc_list[idx].encoding);
- if (doc_list[idx].file_type != type) // filetype has changed + ft_changed = (doc_list[idx].file_type != type); + if (ft_changed) // filetype has changed { doc_list[idx].file_type = type;
@@ -1615,6 +1617,11 @@ if (! update_type_keywords(doc_list[idx].sci) && colourise) sci_colourise(doc_list[idx].sci, 0, -1); } + if (ft_changed) + { + utils_get_current_function(-1, NULL); + ui_update_statusbar(idx, -1); + } }
@@ -2179,6 +2186,11 @@ delay_colourise = FALSE; g_array_free(doc_indexes, TRUE); doc_indexes = NULL; + + /* now that the current document is colourised, fold points are now accurate, + * so force an update of the current function/tag. */ + utils_get_current_function(-1, NULL); + ui_update_statusbar(-1, -1); }
Modified: trunk/src/utils.c =================================================================== --- trunk/src/utils.c 2007-03-12 16:18:12 UTC (rev 1385) +++ trunk/src/utils.c 2007-03-12 16:24:52 UTC (rev 1386) @@ -491,14 +491,29 @@ }
+/* Sets *tagname to point at the current function or tag name. + * If idx is -1, reset the cached current tag data to ensure it will be reparsed on the next + * call to this function. + * Returns: line number of the current tag, or -1 if unknown. */ gint utils_get_current_function(gint idx, const gchar **tagname) { static gint tag_line = -1; static gchar *cur_tag = NULL; gint line; gint fold_level; - TMWorkObject * tm_file = doc_list[idx].tm_file; + TMWorkObject *tm_file;
+ if (! DOC_IDX_VALID(idx)) // reset current function + { + current_function_changed(-1, -1, -1); + g_free(cur_tag); + cur_tag = g_strdup(_("unknown")); + if (tagname != NULL) + *tagname = cur_tag; + tag_line = -1; + return tag_line; + } + line = sci_get_current_line(doc_list[idx].sci, -1); fold_level = sci_get_fold_level(doc_list[idx].sci, line); // check if the cached line and file index have changed since last time: @@ -518,6 +533,7 @@ tag_line = -1; return tag_line; } + tm_file = doc_list[idx].tm_file;
// if the document has no changes, get the previous function name from TM if(! doc_list[idx].changed && tm_file != NULL && tm_file->tags_array != NULL)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.