4766 Commits

Author SHA1 Message Date
Matthew Brush
87ee835ef2 Export scintilla_get_type() from libgeany
This is useful for plugins to be able to subclass the ScintillaObject
and use its full GObject features. The Overview plugin is one known
plugin that needs this.

Also update scintilla_changes.patch by running update-scintilla.sh
script with patch application commented-out and generating a reverse
diff using `git -R`, and manually remove `a/` and `b/` prefixes from
the resulting diff so it can be used with update-scintilla.sh script.
2015-04-11 13:35:11 -07:00
Matthew Brush
8bbe58cdf7 Fix a compiler warning about const 2015-04-10 18:52:46 -07:00
Colomban Wendling
f3078ebbc6 Merge branch 'kugel-/linkage-cleanup_rebase-for-merge'
This merges PR#429 with only small history cleanup (no code changes),
and ABI bump.

Closes #355, #358 and #429.
2015-04-10 16:54:30 +02:00
Colomban Wendling
5caf2b3e77 Bump ABI version for new linkage mechanism 2015-04-10 16:52:30 +02:00
Colomban Wendling
ede1faca54 Move GeanyFunctions declaration back in plugindata.h
This avoids breaking plugins that don't use geanyplugin.h as they
should but include some random headers.
2015-04-10 16:16:19 +02:00
Thomas Martitz
11b5c0216f stash_group_add_boolean is an API function, misplaced within GEANY_PRIVATE 2015-04-10 16:16:19 +02:00
Colomban Wendling
b2ba6c84d5 autotools: Cleanup makefile a little 2015-04-10 16:16:19 +02:00
Colomban Wendling
4e02f58847 autotools: Remove useless declaration
There is no need for tricking Automake to use the C++ linker to link
the main executable anymore, this is done for libgeany now.
2015-04-10 16:16:19 +02:00
Colomban Wendling
e61948adbd Fix or remove incorrect comments 2015-04-10 16:16:19 +02:00
Thomas Martitz
dbe910ca5e GEANY_API_SYMBOL for project_write_config() 2015-04-10 16:16:18 +02:00
Colomban Wendling
56b9189a6c Fix generation of signallist.i with BSD sed
4.2BSD sed doesn't understand the `+` quantifier, so use `{1,}`.
2015-04-10 16:16:18 +02:00
Colomban Wendling
c85b846eeb Simplify automated signal connection
Instead of processing a template C source in the build system, generate
a list to be included by the preprocessor.

This simplifies the build system code as it now only generates the list
and doesn't take care of processing the template.  It incidentally
fixes build on systems with 4.2BSD sed (at least OSX and FreeBSD) as it
removes some offending sed code.
2015-04-10 16:16:18 +02:00
Thomas Martitz
11d4bcf7c2 Only use LIBGEANY_CFLAGS on libgeany.
It includes stuff like -fvisibility which isn't appropriate for the main binary.
2015-04-10 16:16:18 +02:00
Thomas Martitz
616cbe3da9 src: Makefile.am cleanup 2015-04-10 16:08:08 +02:00
Colomban Wendling
9eee68b71d Fix exporting Scintilla symbols 2015-04-10 16:08:08 +02:00
Colomban Wendling
9644fb0ae2 Define GEANY_{EXPORT,API}_SYMBOL from the build system
This makes it easier to define it consistently to what the compiler
and platform supports, and avoids having to include a special header
everywhere, which is some kind of a problem for separate libraries
like TagManager and especially Scintilla.

As we only use these macros from the source and not the headers, it
is fine for it to be defined to a configure-time check from the build
system.

Warning: Although Waf and Windows makefiles are updated they are not
         tested an will probably required tuning.
2015-04-10 16:08:08 +02:00
Colomban Wendling
1bed458ab9 Merge pull request #270 from b4n/zephir-filetype
Zephir filetype
2015-04-09 01:06:57 +02:00
Colomban Wendling
11e16eed6f Remove an unused argument 2015-04-02 19:12:13 +02:00
Colomban Wendling
ca02c593e7 Merge pull request #445 from bengtan/erlang-fishman-ctags
Implement Erlang ctags
2015-03-27 14:44:55 +01:00
Colomban Wendling
1cea0b6a79 Merge pull request #411 from techee/shadows
Use consistent shadows across Geany
2015-03-26 22:53:29 +01:00
Jiří Techet
1a36eeaf4d Use consistent shadows across Geany
In principle, any scrolled window should have GTK_SHADOW_IN so the scrollbars
are not above the surface and there is a frame around the scrolled area.

The only exception are the elements of the main window where adding
GTK_SHADOW_IN causes there are too many shadows (or lines in 2D themes)
around the windows and the result isn't nice. So use GTK_SHADOW_NONE
for all main editor scrolled windows. (One additional exception is the
Help->Credits page which is gray and the extra frame doesn't look good.)

Replace frame around VTE with GtkViewport to avoid the extra line around.

Raise the second editor from the splitwindow plugin so it's at the same
level as the main editor.
2015-03-22 15:32:54 +01:00
Colomban Wendling
f35614757b Mark an argument const 2015-03-17 14:09:31 +01:00
Beng Tan
b0c5d221a5 Implement Erlang ctags.
Using erlang.c from fishman/ctags.
2015-03-15 13:41:23 +08:00
Colomban Wendling
2bfd394803 Don't export on_motion_event() callback unnecessarily 2015-03-10 23:17:08 +01:00
Colomban Wendling
bc013ae9fe Rename LIBGEANY_LIBS to LIBGEANY_LDFLAGS and only use it on libgeany.la
The flags in this variables are used to tune the linker behavior on the
final libgeany (currently set the version information), so should only
used on really linked libraries, not Libtool helper libraries.
2015-03-10 23:16:49 +01:00
Colomban Wendling
361bf702e0 Explicitly cast string literals to non-constant pointers 2015-03-10 23:10:06 +01:00
Matthew Brush
bcc7a35c06 Don't export GtkBuilder callbacks anymore
They are connected inside the library now rather than using GModule to
find the symbols. Mark local callback handlers as static since they
aren't global or exported anymore, they should be static. Since they're
static now, all of the forward-declarations of the functions local to
callbacks.c are pointless, so just remove them.
2015-03-10 23:10:06 +01:00
Matthew Brush
1d64d5211f Replace dynamic exports with codegen for GtkBuilder callbacks
This prevents having to export those callbacks and put them in the
global namespace. Also, use inline shell script in Makefile.am instead
of a Python script which should be more portable (by default) and gets
rid of the helper script.
2015-03-10 23:10:06 +01:00
Matthew Brush
eb36500ac4 Improve Autotools build system for libgeany
Checks if the compiler supports -fvisibility and the linker supports
-dynamic-list arguments and use them instead of hardcoding. The new
geany-lib.m4 also accomodates future use of Libtool versioning.
2015-03-10 23:10:06 +01:00
Matthew Brush
d33758da92 Move Geany's core into a library (libgeany)
This will allow plugins to link against the core when accessing API
functions, now that the macro/struct/funcptr stuff is gone.

Also convert the helper libraries into Libtool helper libraries as
linking a shared library against static libraries is (apparently) not
portable.
2015-03-10 23:09:46 +01:00
Matthew Brush
860df27696 Remove struct/macro/funcptr linkage control for plugin API
Add rest of headers needed for declarations of all public API
functions. Add HAVE_PLUGINS define to geanyplugins.h since some headers
need this and it should always be valid for this header.
geanyfunctions.h left for source-level backwards compatibility for
plugins which might `#include` this header directly. I don't know why
they do it, but some Geany-Plugins do this.
2015-03-10 22:06:47 +01:00
Matthew Brush
1e630e6f12 Remove redundant GEANY_EXPORT_SYMBOL usage in callbacks.h
It only needs to be specified in one place for each function.
2015-03-10 22:06:47 +01:00
Matthew Brush
056e7cb4c8 Change to GEANY_EXPORT_SYMBOL for callback functions
This allows them to be dynamically exported when -fvisibility=hidden
is applied.

TODO: remove the CFLAGS hack in configure.ac
2015-03-10 22:06:47 +01:00
Matthew Brush
2f08670763 Mark all plugin API functions to have "default" (public) visibility
Adds a new header `pluginexport.h` to put the macros in, could be
moved into an existing header (support.h?) by I didn't want to drag
a bunch of existing stuff into the source files for this one macro.

TagManager has relative include, this could be fixed by changing the
include directories for it if it's a problem. Mark the Scintilla
functions exported by re-declaring them in sciwrappers.c with the
attribute to avoid changing upstream Scintilla code.
2015-03-10 22:06:47 +01:00
Matthew Brush
a40ab0a4d9 Explicitly list symbols to dynamically export
Uses a Python script to generate a listing used by the linker to
determine which symbols to dynamically export. This provides finer
grained control of which symbols are dynamically exported, limiting
only to the ones needed for GtkBuilder signal connections.

The build system integration could probably be done a little cleaner.
2015-03-10 22:06:18 +01:00
Colomban Wendling
c3d7acfe81 Merge pull request #433 from b4n/statusbar-eol-short-name
Use the short name for EOL mode in the statusbar
2015-03-06 02:45:39 +01:00
Colomban Wendling
e1c35d2dc1 Merge branch 'techee/leaks'
Merges PR #417.
2015-03-04 22:57:02 +01:00
Colomban Wendling
709cbd512b Explicitly initialize some variables for which we use the default value
This does not change anything in practice because static variables are
initialized implicitly as we need them anyway, but this makes things
clearer and more explicit.
2015-03-04 16:39:36 +01:00
Colomban Wendling
e0116ccd9c Merge pull request #418 from b4n/spell-windows-windows
Spell "Windows" as "Windows", not "Win".
2015-03-04 15:58:47 +01:00
Colomban Wendling
888d3dc9dc Use the short name for EOL mode in the statusbar
See discussion in https://github.com/geany/geany/pull/418
2015-03-04 15:57:26 +01:00
Colomban Wendling
96e2635abe Merge pull request #431 from techee/absolute_prjname
Always use absolute path when opening projects from command-line
2015-03-04 15:04:34 +01:00
Jiří Techet
51ce1018cc Always use absolute path when opening projects from command-line
At the moment when geany project is loaded from commandline using
e.g. "geany myproject.geany", the relative path is used by geany
so e.g. Project->Recent Projects shows the relative path instead of
the absolute one (also if the project is already in the list with an absolute
path, additional entry with relative path is created).

Use main_get_argv_filename(), which is already used for ordinary files,
also for opening .geany files.
2015-03-04 14:34:55 +01:00
Colomban Wendling
05e19be0a3 Merge pull request #419 from techee/osx-integration
OS X integration
2015-03-04 14:08:11 +01:00
Colomban Wendling
b032f2e214 Merge pull request #426 from techee/run_script_tmp
Create geany_run_script.sh in the temporary directory instead of the
working directory.
2015-03-04 13:58:02 +01:00
Jiří Techet
9df204ab78 Fix compiler warning 2015-03-04 12:47:20 +01:00
Jiří Techet
a9912c3c35 Don't use single menu for "New with template" shared by toolbar and menubar
The current implementation uses single menu for the toolbar and
menubar and reparents it when file menu is shown/hidden.
Connectiong "show"/"hide" signals doesn't work for menu items
on OS X (and I suppose Ubuntu either) so the template submenu is
never shown in the File menu.

The easiest fix seems to be having two identical menus the same
way we have them for recent files.
2015-03-04 12:40:45 +01:00
Jiří Techet
3031ac7e41 Check disk status when Geany enters foreground
Since we have a simple way to check Geany has entered foreground
on OS X, use it to check the current document's disk status.
2015-03-04 12:40:45 +01:00
Jiří Techet
2e1dc7aeba Don't use expose-event/draw signals of the menu
The expose-event/draw signals were used to reenable the menu
after it has been disabled when VTE overrides the given keybinding.
This doesn't work on OS X where GtkMenuBar isn't displayed
(there may be a similar problem with the global menubar on
Ubuntu).

The reason why these signals were used was probably slight
flickering of the menubar when using ordinary g_idle_add() to
reenable the menu (the dimmed menu gets drawn after which
it gets reenabled and redrawn non-dimmed). It is however possible
to use idle function with higher than redraw priority in which case
the menu is enabled before the redraw so the dimmed menu
isn't drawn at all.

Fixes https://sourceforge.net/p/geany/bugs/1081/
2015-03-04 12:40:45 +01:00
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