This patch basically just replaces
sInputFile.name -> sInputFile.input.name
sInputFile.lineNumber -> sInputFile.input.lineNumber
plus some minor related stuff.
This was done using Geany's "replace tabs with spaces" followed by
"replace spaces with tabs" plus a lot of manual work because the
indentation was inconsistent in many cases.
Basically just the stuff I added to uctags to improve hashing of keywords.
This patch drops some extra stuff from uctags we don't need at the moment
and which would require changes in other files.
At the moment tags with identical names are stored into a linked list in
tags_table and parents_table. This however leads to quadratic complexity
when looking up the nearest parent or tag in tree because the whole list
has to be traversed.
Use binary trees indexed by line number instead of lists so the lookup can
be performed in log(N) time and the overall complexity is N*log(N) instead
of N^2.
The GTree API is a little stupid because during the search it doesn't give
access to the value and it doesn't tell when a leaf node was reached. For
this reason the lookup has to be made in two steps - first, the best line
number is found (returned in user_data) and then a normal search for the
found line number is made to get the value stored in the tree.
This patch fixes the problem described in #577 when e.g. a big json export
file contains many identically named tags.
The version of MIO corresponds to commit 509a47dbc in universal-ctags
which contains just minimal changes mostly related to changing MIO from
a library into a single ctags source file:
- replaced the glib types with ordinary C types
- removed the "virtual" calls and replaced them with simple if/else
- made the implementation in a single file
- reformatted the library to more or less match universal-ctags style
- removed the MIO_FORCE_ANSI ifdef as it included some glib file and
we don't really need it
- added mio_flush() - of course makes sense just for the file backend
(calls fflush())
- made mio_free() return error code from fclose()
- changed mio_new_fp() to return NULL when the passed FILE is NULL
(simplifies logic at one place in ctags and makes sense IMO)
Move the tag manager implementation to src as it really is part of Geany
sources and start making the ctags directory structure similar to
the universal-ctags one.
In principle, the patch does
mv tagmanager/src src/tagmanager
mv tagmanager/ctags tagmanager/main
mv tagmanager ctags
plus corresponding Makefile.am and configure.ac updates.
Adwaita 3.20 on GTK2 uses the pixmap engine to set a background image
on all states of all GtkEntries. Earlier versions did the same but
with a transparent background, thus not hiding our background color.
Fixes#1135, fixes#1101.