Most of our tree view tooltips were set from plain text values but parsed as markup by GTK, which sometimes lead to markup errors, when the tooltip value contained markup control characters. This also adds ui_tree_view_set_tooltip_text_column() to the plugin API so plugins can easily set plain text tooltips from tree views columns. Fixes https://sourceforge.net/p/geany/bugs/1091/
This actually fixes a theoretical bug introduced when notebook pages stopped being ScintillaWidgets, but this bug had no effect because it was in a dead code path -- because no, `page_num` never is -1 nor `page` NULL.
The ::document-activate signal was not emitted when opening the first tab of the notebook, e.g. when the tab count changed from 0 to 1. This is because the ::document-activate signal is emitted in response to the GtkNotebook::switch-page signal, which is emitted whenever the currently displayed page changes. When there already is a current page (when there is one or more pages), adding a new page does not trigger the signal, as this new page doesn't become the current one (we will switch to it later). However, when there are none, the newly added one becomes current, and so the signal is emitted right away. This is problematic because when we add the page to the notebook, the document associated with it is not yet ready (only partly initialized), and so we can't emit the signal on a valid document, and we discard it. Not emitting this signal leads to inconsistent behavior introducing subtle bugs in plugins relying on it. To work this around, only show the page widget (the child added to the notebook) after we finished initializing everything. This is the simplest fix, because a lot of the code around document creation and opening depend on the fact the page is already added, so while delaying the page addition sounds like the more sensible fix, it has non-trivial consequences that would require a large amount of work to overcome. Note that interestingly, in addition to our problem, GtkNotebook seems to have a bug as it emits the ::switch-page right when adding the first page even if that page is not visible. However, it properly emits it again when the child becomes visible, so we just still discard the first emission like we used to.
Docutils tools are apparently installed with an extension suffix by default, so check for this too. Closes #424.
While all normal keybindings use the Command key instead of control key on OS X, all the command-line applications and terminal emulators use the Ctrl key like on Linux. This includes Ctrl+C (SIGINT) and Ctrl+D (EOF) for which there is some special handling in the VTE support in Geany and which should use GDK_CONTROL_MASK instead of GEANY_PRIMARY_MOD_MASK.
Regression for the triple start string issue has been introduced in SVN revision 669 (fishman git a314e11158307db84c0dadb758846b2302fe69cd) on 2008-06-11. In ctags 5.7 it did work, in 5.8 not anymore. See also http://sourceforge.net/p/ctags/bugs/229/ for the original bug, which led to the old fix. The other issue with normal strings in skipEverything() is even older.
Anything at the module/file level: * _... is protected * rest is public Anything at the class level: * __...__ is public (magic method) * __... is private * _... is protected * rest is public Anything at the function/method level: * everything is private Closes fishman/ctags#216.
…plicit in labels 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.
The standard says: If the first operand is -n, or if any of the operands contain a backslash ( '\' ) character, the results are implementation-defined. On OS X it simply prints the "-n" string and everything which follows, including the newline. Use printf instead.
Import JSON tag parser from CTags: https://github.com/fishman/ctags/blob/master/json.c
When a string is not used as an object property the parser doesn't need to know its value. Not collecting it into memory lowers memory consumption and avoids high memory consumption with huge string values.
As discussed in SF bug #125, it might be dangerous to store backup copies in a publicly accessable directory like /tmp with default permissions, especially on multi-user systems. So set the file permissions on non-Windows systems to 0600 by default. Also improve the documentation of the save Actions plugin to reflect this change.