Thanks Dimitar,
I've updated the patch to always call document_set_text_changed() for BOM/ENCODING. For UNDO_SCINTILLA, document_set_text_changed() is called only at the first document change.
I've tested and it worked fine for me. The latency while typing is gone. As expected, we still have a small latency at the first key hit but that doesn't create any trouble at all.
The new patch is below.
Best Regards,
Evandro
diff -Naurp geany-0.20/src/document.c geany-0.20_fast/src/document.c --- geany-0.20/src/document.c 2012-11-23 20:22:22.564735000 -0800 +++ geany-0.20_fast/src/document.c 2012-11-25 07:16:47.602542000 -0800 @@ -2676,7 +2676,10 @@ void document_undo_add(GeanyDocument *do
g_trash_stack_push(&doc->priv->undo_actions, action);
- document_set_text_changed(doc, TRUE); + if ((type != UNDO_SCINTILLA) || (doc->changed != TRUE)) { + document_set_text_changed(doc, TRUE); + } + ui_update_popup_reundo_items(doc); }
@@ -2840,7 +2843,10 @@ static void document_redo_add(GeanyDocum
g_trash_stack_push(&doc->priv->redo_actions, action);
- document_set_text_changed(doc, TRUE); + if ((type != UNDO_SCINTILLA) || (doc->changed != TRUE)) { + document_set_text_changed(doc, TRUE); + } + ui_update_popup_reundo_items(doc); }
2012/11/25 Dimitar Zhekov dimitar.zhekov@gmail.com
On Sat, 24 Nov 2012 14:09:12 +0000 Nick Treleaven nick.treleaven@btinternet.com wrote:
I played with this a little. It won't work easily because document_set_text_changed is sometimes called to force a UI update, possibly even when the current doc hasn't changed. [...]
On Sat, 24 Nov 2012 15:11:48 -0600 Evandro Borracini evandro.borracini@gmail.com wrote:
Thanks everyone for the comments and suggestions. Based on them, I reverted back to the original code and just added an "if (doc->changed != TRUE)" before calling document_set_text_changed (doc, TRUE) in document_undo/redo_add().
document_redo_add(doc, UNDO_SCINTILLA, NULL); <-- text changed document_redo_add(doc, UNDO_BOM, GINT_TO_POINTER(doc->has_bom)); document_redo_add(doc, UNDO_ENCODING, g_strdup(doc->encoding));
The 2nd and 3rd call probably rely on redo_add to call document_set_text_changed(), to update the status bar. You can check that (my Geany version is a bit outdated), and update the patch to call set_text for BOM/ENCODING (they are rare). Same for undo.
Aside from that, the patch looks reasonable. For plugins, we allow document_set_text_changed(), but not undo/redo_add(), which is OK.
-- E-gards: Jimmy _______________________________________________ Devel mailing list Devel@lists.geany.org https://lists.geany.org/cgi-bin/mailman/listinfo/devel