Am 11.11.2013 10:31, schrieb Matthew Brush:
- Drop Scintilla and use GtkSourceView. I'll just enumerate the
reasons that come to mind, in no particular order:
- Scintilla is a big fat not-really-GTK+ C++ library
- We have to keep a fork up-to-date in our source tree
- It provides one of worst APIs known to man, and causes us to have
all kinds of wrappers to make the API normal and to have our code still littered with unsafe SSM() calls that make the code really weird.
- Limited functionality to support plugins participating in the
buffer/view; for example there's only a really small number of indicators, markers, pixmaps, etc. It's not really built with arbitrary extension (ex. by plugins) in mind.
- It makes simple things like MVC hard to do with the way its user API
is so view-centric.
- While it supports background loading, it doesn't support
background/async lexing, and so completely blocks the UI for huge documents.
- Writing lexers is beyond complicated. Having to write C++ code to
add/customize syntax highlighting is insane from a user POV.
- Has no builtin support for colour schemes making us have to have a
whole, kind of confusing, configuration file system to provide it ourselves.
- Reduce Geany's binary size since the editor component would be
linked dynamically, and not statically like Scintilla is. I don't know if this actually matters but I think Scintilla with all the lexers and stuff I think it can end up as several MB in the binary.
- As with above, and the one about updating the fork; using a
dynamically linked version allows the system admin to upgrade their libraries and they'll automatically be used by Geany.
- Drop dependency on a C++ compiler. This isn't a big deal really. And
of course replace with a new dependency on gtksourceview library.
- GtkSourceView provides convenient features like SourceCompletion and
SourceMarks and such that would make doing stuff from plugins quite straightforward.
- GtkSourceView completely integrates into our GUI toolkit, using
native (not custom drawn like Scintilla) widgets inside and interacts properly with stuff like scrolling, focus, DnD, key-bindings, etc.
With ScintillaGTK it also interacts properly, doesn't it? It impements GtkWidget and can act as such.
- If we ever do use GObject stuff more and/or make the plugin API
automatically bindable with GObject-Introspection, GtkSourceView already provides the .gir stuff needed.
- I think GtkSourceView is installed by default usually with at least
GNOME and XFCE (via Gedit and Mousepad using it and being the "default" text editors).
All of these points read like whine. Some of them also apply to GtkSourceView (GSV) and you haven't shown how GSV improves things. I can read that you don't like Scintilla but how is GSV better and what do we gain? Perhaps you could summarize the nice things about GSV? Note that I have done nothing with it and therefore no idea how it works or what APIs it provides. But I also do not know why you would chose it over Scintilla or even convert an existing Scintilla-based project to it.
Best regards.