On 27 March 2011 12:31, Yura Siamashka <yura...@gmail.com> wrote: > On Wed, 23 Mar 2011 23:49:41 +1100 > Lex Trotman <ele...@gmail.com> wrote: > >> Thats a bit harder, probably Yura, the plugin writer will need to take >> a look at the problem I'd say. > > I looked at the problem: > > 1) geanyprj act only on "document-open", "document-save", "document-activate" > callbacks > 2) geanyprj add a lot of TMWorkObject objects using tm_workspace_add_object() > to Geany
And tm_workspace_add_object sets the parent to be the whole workspace! > 3) Geany call update_tags_from_buffer() very often. > > I think this function somehow reparse a lot of objects because of > "update_parent" param. I am not sure what this param actualy mean but if I > change function this way performance is back to normal (I don't say we need > to change it, it is just research): > > --- a/src/document.c > +++ b/src/document.c > @@ -2263,7 +2263,7 @@ static gboolean update_tags_from_buffer(GeanyDocument > *doc) > /* we copy the whole text into memory instead using a direct > char pointer from > * Scintilla because tm_source_file_buffer_update() does > modify the string slightly */ > sci_get_text(doc->editor->sci, len, text); > - result = tm_source_file_buffer_update(doc->tm_file, (guchar*) > text, len, TRUE); Because of item 2) above I think this will reparse all open files. The question is can problems be introduced by not reparsing things, eg if we are editing a .h file, can that affect the symbols of the .c files that include it ... probably possible AFAICT. Is there some easy way of triggering re-parsing of dependencies when the sidebar is about to swap to a different file? That way real-time update only needs to do the one file being edited, but no artifacts are introduced due to inconsistencies between when tags were parsed. Cheers Lex > + result = tm_source_file_buffer_update(doc->tm_file, (guchar*) > text, len, FALSE); > g_free(text); > #endif > return result; > > -- > Yura Siamashka <yura...@gmail.com> > _______________________________________________ > Geany-devel mailing list > Geany-devel@uvena.de > https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel > _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel