7862 Commits

Author SHA1 Message Date
Jiří Techet
232d4dacde Add right-click launcher icon entry creating a new window
Normal clicking the launcher icon just brings the application to
the foreground so there must be a way users can create a new
instance of Geany.

Add an entry "New Window" to the context menu which is shown
when right-clicking the Geany icon in the launcher (most applications
have the "New Window" entry there).

In addition, fix "Open in new window" when using app bundle.

Since both of these functionalities create a new Geany instance,
factor-out the instance creation code into a new utility function
and use it in both cases.
2015-03-04 12:40:45 +01:00
Jiří Techet
562885765d React to various useful gtk-mac-integration signals
NSApplicationBlockTermination signal is emitted when clicking
the Quit menu to check whether the application permits
quitting - react accordingly.

---

NSApplicationOpenFile signal is emitted when

* file is dragged on the application icon
* application is selected from "Open with" menu after right-clicking
the file
* when double-clicking a file for which the application is default
editor/viewer
* when file is opened from command-line

When the application isn't running, it is first started and then this
signal is emitted.

Use the signal to open files. In addition, when the opened file
has the ".geany" suffix, open it (but only if the project isn't already
open). The project has to be opened in idle function because blocking
the signal handler for a long time by the project-close confirmation
dialog causes problems.
2015-03-04 12:40:36 +01:00
Jiří Techet
ada4595264 Use global menubar on OS X
We have to disable quartz accelerator handling because otherwise
accelerators are performed also from other windows than the main
Geany editor (e.g. Ctrl+V with find dialog open performs the keybinding
Ctrl+V and inserts the text to the editor).

OS X applications have an extra menu entry to the left of the File menu -
an "application menu". This menu usually contains About, Preferences,
Quit. Many users, however, may be used to Geany from other platforms
and expect Preferences to be under the Edit menu so leave them there.
Quit and About are rarely used and the application menu is the place where
they are supposed to be - move these entries from other Geany menus there
and hide them in the affected menus (the quit entry is inserted automatically,
we just need to hide it from File).

Also tell OS X the Help menu is dedicated to help (we get search in
menu entries by name for free thanks to this).

The global menu should refresh automatically based on user actions.
Unfortunately this is not the case when gtk_menu_reorder_child()
is used because it does not emit any signals so the gtk-mac-integration
library doesn't see this call. Refresh the menu manually after calling
this function.
2015-03-04 12:40:36 +01:00
Jiří Techet
18d517bd95 Use gtk-mac-integration so app bundle can be created on OS X
This patch adds the gtk-mac-integration library and uses it to
adjust various paths in Geany to point it inside the app bundle
if Geany runs from inside the bundle.

It adds the utils_resource_dir() utility function to return
correct directories for various kinds of resources for all supported
operating systems. Using this function the patch adjusts all Geany
resource, plugin, icon, doc, and locale paths.
2015-03-04 12:40:27 +01:00
Jiří Techet
7b5df86bd1 Create geany_run_script.sh in the temporary directory instead of the working directory
Under some conditions, geany_run_script.sh is not deleted and we
have no means to detect this in Geany (e.g. when the terminal emulator
is started correctly but it fails to execute the script for some reason).
In this case it is better to keep the garbage in /tmp than the working
directory. Apart from that, it eliminates potential transfer of the run script
over a NFS and eliminates the visibility of the script in working directory
on Windows.

Apart from that this patch fixes some locale/utf8 conversion problems
and other subtle problems with the previous implementation.
2015-03-04 11:48:53 +01:00
Colomban Wendling
87af9597fc Make sci_get_cursor_virtual_space() GEANY_PRIVATE 2015-03-03 20:10:41 +01:00
Dimitar Zhekov
a5b99dc96d Add virtual column and selected chars to the statusbar
Closes https://sourceforge.net/p/geany/patches/10/
2015-03-03 20:07:11 +01:00
Colomban Wendling
9694338e71 Merge pull request #428 from kugel-/mingw-datadir
Fix installation of data files on Windows with the Autotools build
system.
2015-03-03 17:05:44 +01:00
Colomban Wendling
1a6adc0d63 Fix build with GLib < 2.30 (oops) 2015-03-03 15:12:52 +01:00
Colomban Wendling
1c1d76721d Fix several tooltips to properly use plain text instead of markup
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/
2015-02-28 19:15:00 +01:00
Thomas Martitz
cc6602c2b6 autotools: Install to $prefix/data on win32
setup_paths() sets app->datadir to $prefix/win32. With mingw-via-autotools,
it installed data to $prefix/share/geany (like on Linux). With this change
data is installed to $prefix/data ($datarootdir is not changed).

This fixes geany startup after make install with autotools.

Linux:
pkgdatadir = ${datarootdir}/geany
GEANY_DATA_DIR = /path/to/prefix/share/geany

Win32:
pkgdatadir = ${prefix}/data
GEANY_DATA_DIR = /path/to/prefix/data
2015-02-25 09:23:12 +01:00
Colomban Wendling
a8a2d14711 Merge pull request #415 from b4n/json
Add JSON filetype (with tag parser)
2015-02-24 18:08:46 +01:00
Colomban Wendling
8aa4f11cad Optimize notebook page -> document lookup and remove dead code
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.
2015-02-21 18:56:51 +01:00
Colomban Wendling
1a8de8fb09 Optimize document -> notebook page lookup 2015-02-21 18:53:59 +01:00
Colomban Wendling
99552dbe12 Fix emission of the ::document-activate signal
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.
2015-02-21 18:49:09 +01:00
Colomban Wendling
91630a85a2 autotools: Check for docutils tools with a .py suffix too
Docutils tools are apparently installed with an extension suffix by
default, so check for this too.

Closes #424.
2015-02-20 22:30:58 +01:00
Colomban Wendling
ea79be32f2 autotools: Remove useless code
AC_PATH_PROG supports overrides of its variable, so there is no need
for manual handling.
2015-02-20 22:28:26 +01:00
Frank Lanitz
b87254e1b3 Fix lost <> inside thanks 2015-02-18 00:40:19 +01:00
Frank Lanitz
a6885865bb Change contact data for brahmann 2015-02-18 00:35:44 +01:00
Frank Lanitz
a65cecd59e Merge pull request #422 from strepon/master
update Czech translation
2015-02-15 16:32:03 +01:00
Stanislav Horacek
b0786efc66 update Czech translation 2015-02-15 14:33:10 +01:00
Colomban Wendling
15f75ca2ac Fix a few indentation style issues 2015-02-13 14:11:30 +01:00
Jiří Techet
0c1edb113c Bump API to reflect the addition of keybindings_get_modifiers() and GEANY_PRIMARY_MOD_MASK 2015-02-13 12:47:04 +01:00
Colomban Wendling
ba0d364f64 Merge pull request #420 from techee/vte_keybindings
Revert some OS X keybinding changes for VTE
2015-02-13 01:01:17 +01:00
Jiří Techet
e613d93187 Revert some OS X keybinding changes for VTE
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.
2015-02-13 00:37:21 +01:00
Colomban Wendling
308041da8d Merge branch 'ctags/python'
Import Python changes from https://github.com/fishman/ctags/
2015-02-11 18:33:19 +01:00
Markus Heidelberg
be2b280377 python: do not ignore the character after a skipped string
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.
2015-02-11 18:28:59 +01:00
Colomban Wendling
99a509de7e python: Fix out of bounds access on unmatched Cython array declaration 2015-02-11 18:22:55 +01:00
Colomban Wendling
0a97439701 python: Improve and generalize access reporting
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 https://github.com/fishman/ctags/issues/216.
2015-02-11 18:21:14 +01:00
Frank Lanitz
7b17db666e Small update of German translation 2015-02-10 18:56:42 +01:00
Frank Lanitz
ae68b10b04 Merge branch 'master' of github.com:geany/geany 2015-02-10 18:55:00 +01:00
Colomban Wendling
b2e5d08dad Spell "Windows" as "Windows", not "Win"
This makes the labels more clear using the canonical name, and avoids
any confusion with the English word "win".
2015-02-10 17:15:38 +01:00
Colomban Wendling
e9c9e9a2fa Merge pull request #396 from techee/osx
OS X improvements
2015-02-10 17:12:30 +01:00
Jiří Techet
1ab9eac704 Use the .dylib extension when loading VTE on OS X 2015-02-10 15:58:01 +01:00
Jiří Techet
6a132ef3fa CR line endings are used on old Mac OS systems only - make it more explicit 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.
2015-02-10 15:57:50 +01:00
Enrico Tröger
1640471752 Merge pull request #413 from eht16/backup_copy_file_perm
SaveActions: Set file permissions of backup copies to 0600 (SF #125)
2015-02-08 10:42:32 +00:00
Jiří Techet
ca21a8759a Don't use "echo -n" in shell scripts
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.
2015-02-08 11:31:42 +01:00
Jiří Techet
f2cab560c6 Eliminate some minor leaks
Found using the Instruments XCode tool on OS X.
2015-02-08 11:12:27 +01:00
Frank Lanitz
642fedef98 Small update of German translation 2015-02-01 22:07:53 +01:00
Colomban Wendling
e454b8962c Merge branch 'json-tag-parser' into json
Import JSON tag parser from CTags:
https://github.com/fishman/ctags/blob/master/json.c
2015-01-31 22:17:26 +01:00
Colomban Wendling
270e32327f json: Enable tag parser and adapt test case for Geany 2015-01-31 22:15:18 +01:00
Colomban Wendling
0bd9585704 json: Optimize memory usage by not collecting string values
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.
2015-01-31 22:14:50 +01:00
Colomban Wendling
2ff1386d96 Add new parser for JSON 2015-01-31 22:14:50 +01:00
Colomban Wendling
b0cf3b4e2d Add JSON custom filetype
Closes #384.
2015-01-31 20:27:07 +01:00
Enrico Tröger
d5cca37922 Change donate link to our own redirection
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.
2015-01-31 18:44:10 +01:00
Enrico Tröger
7229aa9cff SaveActions: Set file permissions of backup copies to 0600
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.
2015-01-31 16:11:48 +01:00
Colomban Wendling
d33a23c40c Add missing documentation for message window orientation setting 2015-01-28 15:55:33 +01:00
Thomas Martitz
7fba0317d0 document: Remove duplicated code.
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.
2015-01-28 15:33:52 +01:00
Colomban Wendling
f403e7e8c2 Merge pull request #188 from artros/feature/keep-edit-history-on-reload
Maintain edit history on document reload

Conflicts:
 * src/callbacks.c: document_reload_prompt().

Amendments:
 * src/document.c: document_redo(), document_undo(): for loop style.
2015-01-28 15:16:40 +01:00
Colomban Wendling
44eecc25c3 Merge pull request #187 from artros/bug/clear-redo-on-edit
Clear redo stack on edit
2015-01-28 14:30:43 +01:00