This adds a tree view mode to the document list in the sidebar and enables it by default.
Based on previous work by Pavel Roschin <roshin@scriptumplus.ru>, see #259
The test program checks if open documents are grouped correctly by
their parent directory. The older modes (plain document list and two-level
tree) also get a distinct test. For this to work some symbols
must become visible from libgeany.
The test uses g_strv_length() which is relatively new.
Autoconf and meson checks are added as needed.
We can rely on shell to expand wildcards for us and the current detection
of whether globbing should be enabled based on \" presence is questionable,
undocumented and probably unused.
Autotools-based builds will be supported for some time. This patch makes
some modifications to the Autotools build system necessary to to co-exist
with meson.
- LOCALEDIR and DATADIR won't be defined, replace with GEANY_* where necessary
- VERSION won't be defined, use PACKAGE_VERSION and PACKAGE_STRING instead
- Doxyfile cannot be generated by configure, which wouldn't run in a meson
build. Generate both Doxyfile and Doxyfile-gi manually using sed
- actual shell script to generate signallist.i (inline shell not a thing in meson)
- path of signallist.i will change, exclude callbacks.c from doxygen
to make it happy
- geany icon for 24x24 size such that one exists for all sizes
- install license file for Lexilla
- change how tests are run a bit so that runner.sh will also work for meson
- check for dirent.h, required by ctags
- AC_PROG_CC_C99 is deprecated, replace with just AC_PROG_CC and an explicit
test for C99 using cache values.
- AM_PROG_LIBTOOL is deprecated, replace with LT_INIT
- AC_USE_SYSTEM_EXTENSIONS must be used before AC_LINK_IFELSE, apparently
autoreconf is much more convenient over calling the autotools programs individually.
Standard gettext should be used over glib's glue these days.
AM_GLIB_GNU_GETTEXT and glib-gettextize are deprecated. This helps
the meson build (#2761) as well as working with intltool is harder over there.
gettext, on the other hand, is supported out of the box in meson.
Beware, autopoint is a new dependency when building from git,should not affect tarballs.
Inspired by:
https://wiki.gnome.org/Initiatives/GnomeGoals/GettextMigration0b4d03017f
* Update Scintilla to version 5.1.1
A few notes:
- C++17 is required
Not exactly new since we already imported the latest julia lexer.
- upstream split out lexers into a lexilla library
We do "comply" by building a separate static library. So in effect, all
lexers are built-in like before. In the future it may be possible to add
lexer plugins at runtime.
- Lexer IDs are deprecated in favor of names
For now we use LexerNameFromID() to map IDs to names but we should
transition to names soon.
That being said, the upstream transition seems also not complete.
There is no name-based version of SCI_GETLEXER, so we're stuck with IDs
there.
Closes#2824
* Update scintilla_changes.patch
The "which lexers" part is now a separate function that should be less
of a pain when updating to scintilla version that adds lexers.
* Update update-scintilla.sh
You need to extract lexilla sources too now and pass it to the script.
Also the script calls dos2unix for the files, kill that CRLF!
- Add the missing check for asprintf which brakes build on Windows/MSYS.
- Add fallback check for tempnam if mkstemp is not found.
- Group functions checks for u-ctags together.
* Replace `--enable-gtk3` with `--enable-gtk2`
* Update Travis CI builds
* Change `cross-build-mingw.sh` default to GTK3 and cleanup a little
After this commit it will be required to pass `--enable-gtk2` to
the Autoconf script in order to build with GTK+2, otherwise GTK+3
will be required.
Add a configure option to select the command used as the Python
interpreter by default in the Python filetype.
This can typically be useful if a setup has non-standard paths or do
not provide a generic `python` interpreter but only versioned ones.
The original intention was to easily build RPM packages by
users and developers. Nowadays, there are professional
Fedora, Suse and whatever RPM spec files available
for the according distributions.
So we can remove this unmaintained file to reduce confusions.
Fixes#2044.
* Update Scintilla to version 3.7.5
This now requires a C++11-capable compiler.
Closes#1308.
* Test using newer dist on Travis
Since Scintilla needs C++11
* Add debugging code for when configure fails
* Workaround a pkg-config-corsswrapper bug on Ubuntu 14.04
See https://bugs.launchpad.net/ubuntu/+source/mingw-w64/+bug/1327242
Protect library-specific stuff by CTAGS_LIB macro which also makes it
better visible what changes had to be made to convert ctags into library.
Changes which need further Geany sync and aren't library-related aren't
protected by the macro.
Move things from geany.c/h to the locations where they belong and rename
geany.c/h to api.c/h into which API-like functions will be moved in the
next commits (mostly things from tm_ctags_wrappers.c/h).
Add complete main.c from uctags and just remove main() using the CTAGS_LIB
macro.
Added e_msoft.h, changed configure.ac to make more checks for header files
so we have corresponding macros defined, drop HAVE_REGEX macro check which
isn't defined any more, drop debugging function from lua parser (complains
about missing definition of errout).
Tested only on Linux (TODO: Windows, OS X)
This is more reliable than using `which`, which doesn't work if the CXX
environment variable is set to something else than an executable (e.g
contains options), and is apparently less portable on some systems.
See:
* http://lists.geany.org/pipermail/devel/2009-September/001367.html,
which lead to 5bb28825aadb43ea8ba536c34970d53860b50759.
* https://sourceforge.net/p/geany/bugs/455/, which lead to a revert
of the above, 5b9605a9d6d799629b8ed3163596069c8c948b06.
Fixes#829.
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.
If possible, register signals with the proper argument types (boxed or gobject).
This is required for successful introspection of the signals and important
for GI-based plugins.
As for the marshallers, if available use a predefined one from glib. Otherwise
use the generic marshaller available since 2.30 (in theory all signals could
use that one but it has a bit of overhead).
This builds on the gboxed conversions of earlier commits.
This also bumps the minimum glib requirement.
- g_cclosure_marshal_generic requires 2.30 (if NULL is passed as marshaller
to g_signal_new())
- G_TYPE_KEYFILE requires 2.32