Also don't default to CR if OS is neither Windows nor Unix (including OS X).
There's no other GTK backend right now so it doesn't matter much but
still if something else appears, it will most probably not have CR line
endings.
As discussed in #410, the previous SF redirect is better replaced by
a redirect on www.geany.org which we can control.
This way we can also quickly change the target URL if it changes at
Paypal.
Since document_compare_by_tab_order_reverse does the exact reverse of
document_compare_by_tab_order the code need not to be duplicated. Instead
document_compare_by_tab_order can be called and the return value be reversed.
Fonts are rendered much smaller on OS X so use bigger sizes
by default. Also, by default they use the Light style which is
extremely thin - use Medium instead. Finally, use better monospace
font than the default Courier (Menlo is derived from Dejavu Sans
Mono and is used by XCode and other editors).
In order to execute the runner script using the terminal application,
the script has to be executable, otherwise it's not executed.
In addition, when the terminal application starts, it sets $HOME
as the working directory. For this reason the working directory
has to be set in the runner script (to avoid additional ifdefs,
this part is shared with other unix systems where the additional
"cd" shouldn't matter).
On OS X the Command key is used for common keybindings instead
of Ctrl. Introduce a new macro, GEANY_PRIMARY_MOD_MASK that
represents the Command key on OS X and Ctrl on other platforms.
For some events, such as mouse key press, GDK_MOD2_MASK is returned
for the Command key by GTK instead of GDK_META_MASK (which is returned
when Command is pressed together with some other key). To hide this
behavior from users, introduce keybindings_get_modifiers() which can be
used instead of gtk_accelerator_get_default_mod_mask() and which
inserts GDK_META_MASK when GDK_MOD2_MASK is found in the mask
on OS X.
It may happen that even though we get GIcon, the actual icon
dosen't exist (typically on Windows and OS X). Check if we
can find the actual icon.
In addition, use "icon name" instead of "stock id" - the latter
doesn't work on OS X / Windows for some reason.
The GIOCondition is always set to G_IO_IN even when input end
is reached (and no other flags are set) so the read_fif_io()
function never returns FALSE which causes an infinite loop.
It is necessary to check also the return value of
g_io_channel_read_line() and return FALSE on EOF or error.
This feature looks like a poorly implemented subset of "Complete word",
but lacks some important features like prefix filtering. It is also
misnamed as it shows not only macros, but also variables and enums.
It also only shows `editor_prefs.autocompletion_max_entries`, but does
so from *each* file, not as a whole.
So drop it altogether, as this feature doesn't really look useful and
the current implementation seem to suffer of too many shortcomings for
it to realistically be actually used.
Always select the default scheme by default in the Color Scheme dialog
not to end up selecting none in case of broken or nonexistent
configuration. This matches which scheme is actually used, and fixes
use of an uninitialized iter when no scheme would be selected.
Make go one of the builtin filetypes, add the parser and update the related
source and config files. While there, remove Rust from [Groups] in
filetype_extensions.conf because it's already a builtin filetype as well.
The parser itself is stolen from the fishman/ctags repo.
The issue was introduced in b646424ddb715382a937d233a75bc684c22e18ec as
it removed the default handler that used to destroy the infobar.
Now, the infobar is properly closed, but only if the action succeeded.
Closes#375.
Strict dependency on fnmatch was removed in 52076d19e8fe7ab41ebc92928e.
We still have an optional dependency on it from CTags, but I don't
think we use this code, and anyways the checks we had for the optional
path to be taken were incorrect, so it was never actually used.
So, drop the dependency on libibrety for Windows builds, and fix the
remaining checks for an optional fnmatch so if it is found it can
actually be used.
document_new_file_if_non_open() and ui_focus_current_document() only make sense
when files where actually opened, but the preceeding
configuration_load_session_files() only loads the file names into the global
session_files variable, from which the files are actually opened by a later
call to configuration_open_files(). These two calls should be done after that
one and the callers generally do this already.
With the previous TMWorkspace API it was possible to make the workspace
inconsistent by e.g. removing source files and forgetting to update
workspace. This could lead to non-obvious and not immediately visible
crashes.
The new set of the public (but also Geany private) API calls always
updates the workspace accordingly and neither of the calls can lead
to an inconsistent state of the workspace.
In addition, perform some minor cleanups and simplifications - unify
parsing from buffer and from file, support "parsing" of 0-sized buffers
and improve documentation.
Manage the list the same way as workspace tags_array by the fast tag removal
and merge. Thanks to this, typename tags don't have to be extracted from
tags_array periodically, which speeds up editing.