307 Commits

Author SHA1 Message Date
Nick Treleaven
9d669a72f7 API: Rename document_reload_file -> document_reload_force
New name is clearer against document_reload_prompt.
Add deprecated alias.
2014-09-25 11:45:49 +01:00
Nick Treleaven
18181c2e90 Support pseudo-unique IDs for documents
Add GeanyDocument::id, document_find_by_id() to plugin API.

This also fixes clicking on a Messages item whose document has been
closed and reused. Now the click will be ignored instead of jumping to
an unexpected line in the new document.
2014-08-19 15:40:05 +01:00
Matthew Brush
4efcbab332 Include what you use
This is a mega-commit - because most of it had to be done in one go
otherwise some commits would fail to compile - that attempts to fix a
few problems with Geany's includes as well as various other related
cleanups. After this change it's easier to use includes and there's
little worry about which order things are included in or who includes
what.

Overview of changes:

* Include config.h at the start of each source file if HAVE_CONFIG_H
  is defined (and never in headers).
* Go through each source file and make the includes section generally
  like this:
  - Always config.h first as above
  - Then if the file has a header with the same name, include that
  - Then include in alphabetical order each other internal/geany header.
  - Then include standard headers
  - Then include non-standard system headers
  - Then include GLib/GTK+ related stuff
* Doing as above makes it easier to find implicit header include
  dependencies and it exposed quite a few weird problems with includes
  or forward declarations, fix those.
* Make geany.h contain not much besides some defines.
  - Add a little header file "app.h" for GeanyApp and move it there
  - Move "app" global to new "app.h" file
  - Move "ignore_callback" global to "callbacks.h"
  - Move "geany_object" global to "geanyobject.h"
* Add an include in "geany.h" for "app.h" since GeanyApp used to be
  defined there and some plugins included this header to access
  GeanyApp.
* Include "gtkcompat.h" everywhere instead of gtk/gtk.h so that
  everywhere sees the same definitions (not a problem in practice AFAIK
  so this could be changed back if better that way.
* Remove forward declarations from previous commits as some people
  apparently consider this bad style, despite that it reduces inter-
  header dependencies.

TODO:
* As always, to test on win32
* As always, to test with not Autotools
* Test plugins better, both builtin and geany-plugins, likely API/ABI bump
* Test with various defines/flags that may change what is included
* win32.[ch] not really touched since I couldn't test
2014-05-21 15:37:19 -07:00
Matthew Brush
6f87aac118 Normalize use of header guards and extern "C" guards
* Always define GEANY_FOO_H to 1 in the header guards
* Always put a G_BEGIN_DECLS/G_END_DECLS guard in every header for
consistency, even private ones where it doesn't matter.
* Always include either <glib.h>, <gtk/gtk.h> or some other header
that will provide G_BEGIN_DECLS before using it. In a lot of headers
that use glib.h and gtk/gtk.h stuff anyway, this resolves an implicit
dependency they had on them being included before that header.
* Always put a comment at the #endif part of the guard so it's
easier to see what it applies to.
* Always use an underscore between the header guard identifier's words
even though the filename doesn't have one.
2014-05-21 12:18:26 -07:00
Matthew Brush
fec15c61c4 Move typedefs out of geany.h and into their own headers
This helps to avoid the requirement that geany.h be included before
using any of the changed headers.
2014-05-21 12:18:25 -07:00
Colomban Wendling
27a073f1a6 Make plugin_signal_connect() safe on any object
Watch the lifetime of objects referenced in plugin->signal_ids and
remove our references to them if they get destroyed.  This avoids
possibly trying to disconnect signals on destroyed objects when the
plugin is unloaded.

Supporting this case is safer, and is useful for objects that may or
may not outlive the plugin (like ScintillaObjects), because in such
cases plugin_signal_connect() is handy to make sure the signals are
disconnected if the object is still alive, but used to crash if the
object was destroyed.
2014-04-13 19:59:37 +02:00
Matthew Brush
13ec6ffbea Add new API function plugin_builder_connect_signals() 2013-06-09 15:22:25 -07:00
Colomban Wendling
6c942c1436 Prevent plugins built against GTK2 Geany from loading in GTK3 Geany 2012-10-09 13:24:42 +02:00
Colomban Wendling
6409840d4a Get rid of GtkComboBoxEntry API and use GtkComboBoxText API
Use the GtkComboBoxText API and the GtkComboBoxEntry replacement API
and map those to the old equivalents if not available.

This changes the type exposed by ui_combo_box_add_to_history() from
GtkComboBoxEntry to either GtkComboBox (under GTK2) or GtkComboBoxText
(under GTK3).  This should not be too much of an issue since
GtkComboBoxEntry and GtkComboBoxtext are subclasses of GtkComboBox,
but this will still emit warnings when when the calling code passes
a GtkComboBoxEntry pointer to ui_combo_box_add_to_history().

However, this requires the calling code to use the same mapping as we
do (GtkComboBoxText = GtkComboBox on GTK2, even on 2.24), or things
will blow and it'll be hard to understand why.  This wouldn't be an
issue if the calling code includes our gtkcompat.h header everywhere
it deals with combo boxes, which will be the case if it includes the
Geany headers everywhere but probably won't otherwise.  Oh dear.

A possible kind of workaround may be for ui_combo_box_add_to_history()
to do type-checking on its argument and use the actually correct API
for that type.
2012-10-08 20:08:06 +02:00
Colomban Wendling
d80bc7ce56 Update FSF address
Closes #3557875.
2012-08-24 19:25:57 +02:00
Colomban Wendling
deb5f3542b Bump API version to reflect Scintilla's SCI_{GET,SET}USEPALETTE removal
Scintilla deprecated SCI_GETUSEPALETTE and SCI_SETUSEPALETTE messages,
and since we don't build with deprecated API support they aren't
available anymore.
2012-07-09 01:07:52 +02:00
Nick Treleaven
c72dce06a5 Merge remote-tracking branch 'origin/master' into tm/tree-refactoring
Conflicts:
	makefile.win32
	src/makefile.win32
2012-07-04 12:15:53 +01:00
Colomban Wendling
1c2c455b1d Update copyright information 2012-06-18 01:15:04 +02:00
Nick Treleaven
6f0d015ed2 Fix documentation using old directory tagmanager/include 2012-06-06 15:19:34 +01:00
Dimitar Zhekov
f2d33bc16e Add stash_group_free_settings() function to API
Frees the memory allocated for setting values in a group.
2012-04-06 14:04:01 +01:00
Matthew Brush
51dc2e9baf Support plugins written in C++
Rename use of C++ `template` keyword in plugin API function argument
and add `G_BEGIN_DECLS` and `G_END_DECLS` to public header files to
make them easier to include in C++ code. TagManager and Scintilla
headers already have these `extern "C"` blocks so they shouldn't
require any modifications.

The Autotools build system already adds in a `dummy.cxx` to hint
Automake into C++ linking to support Scintilla, which is quite
convenient for dynamically loading of C++ plugins at run-time into
the otherwise C-only program. The other build systems seem to also
use the correct linking.
2012-03-30 23:35:10 -07:00
Jiří Techet
8e2f7db298 Modify project dialog signals
Rename project-dialog-create signal to project-dialog-open because now
the dialog exists all the time and the signal name is misleading. Add
project-dialog-close signal to indicate that project dialog has been closed
and plugins can remove their tabs when needed.

In addition, bump plugin API and ABI version.
2012-02-20 00:20:03 +01:00
Lex Trotman
fa118fb12a Add build command access to plugin interface
Add ability for plugins to read and edit the fields of the build commands.
2012-02-15 14:18:34 +11:00
Nick Treleaven
eb04c514ba Add API function ui_lookup_stock_label()
Using this can avoid adding i18n strings unnecessarily.
2012-01-08 17:37:58 +00:00
Nick Treleaven
308f98a2b9 Use gssize to avoid casts for encodings_convert_to_utf8_*() 2012-01-03 13:30:38 +00:00
Enrico Tröger
917ce32ccc Prefix header guards with GEANY_ for consistency 2011-11-20 13:31:56 +01:00
Colomban Wendling
d06e9f4575 Remove $Id$ and $Date$ SVN keywords 2011-10-09 22:57:35 +02:00
Colomban Wendling
1fa30c3a65 Fix plugin function signatures after r5857 changes (no API/ABI changes) (oops)
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5859 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-18 14:54:50 +00:00
Colomban Wendling
a4eee36359 Bump plugin API version
Nothing in the API actually changed, but the project->file_patterns
fields used not to be set or used at all; so bump the API to let a
plugin depend on this field to be actually useful.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5756 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-05-02 16:46:34 +00:00
Nick Treleaven
2a45938205 Add utils_find_open_xml_tag_pos() API function (patch by Eugene
Arshinov, thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5733 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-23 11:44:31 +00:00
Enrico Tröger
9f8c5103a8 Add document_compare_by_tab_order() and document_compare_by_tab_order_reverse() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5727 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-17 13:40:04 +00:00
Enrico Tröger
0ddc794ce0 fix function signature (oops)
replace sort_func by compare_func

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5716 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-12 17:43:00 +00:00
Enrico Tröger
211a963773 Rename document_sort_by_display_name() into document_compare_by_display_name(), thanks again Nick.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5714 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-12 17:20:59 +00:00
Enrico Tröger
66c8b7faee Add ui_menu_add_document_items_sorted() and document_sort_by_display_name() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5705 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-10 17:03:41 +00:00
Enrico Tröger
d91810115a Add and use signal "document-reload" to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5703 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-10 13:53:05 +00:00
Colomban Wendling
ef9360c78b Add plugin_{idle_add,timeout_add,timeout_add_seconds}() to the plugin API
These functions does the same as the corresponding GLib functions but
makes sure that the added GSource will be removed when the plugin is
unloaded, preventing possible crashes.

These are only convenience functions for the plugin author not to have to
care about the case the plugin gets unloaded, he can still manually
manage hes GSources if he wants to.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5650 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-29 23:20:14 +00:00
Nick Treleaven
22038400cc Add filetypes_get_sorted_by_name() to API.
Fix --ft-names sorting to print in name order, not title order.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5649 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-29 18:06:26 +00:00
Enrico Tröger
b235ae2f7e Add new keybinding 'Remove Markers and Error Indicators'.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5641 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-27 16:05:00 +00:00
Enrico Tröger
ec408fa4b9 Add filetype Cobol (based on a patch by Seth Keiper).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5533 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-01-30 15:03:51 +00:00
Enrico Tröger
6ac2623208 Update copyright information.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5528 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-01-19 19:39:09 +00:00
Nick Treleaven
4c17428732 Add filetypes_get_display_name() to API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5497 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-12-22 16:59:38 +00:00
Nick Treleaven
f37202685d Warn about preprocessor testing GEANY_API_VERSION below 200 because
those tests will always fail.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5425 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-22 16:51:16 +00:00
Nick Treleaven
70258a9ec4 Add example of using '#if GEANY_API_VERSION >= 200'.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5424 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-22 16:44:04 +00:00
Nick Treleaven
7814bb2a5a Make GEANY_API_VERSION, GEANY_ABI_VERSION macros instead of enums
so you can protect code with '#if GEANY_API_VERSION >= 200'.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5423 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-22 16:30:44 +00:00
Nick Treleaven
b9a42fa6d1 Add dialogs_show_input() to API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5418 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-18 18:27:01 +00:00
Nick Treleaven
ddefb0a0b4 Add API functions (patch by Eugene Arshinov, thanks):
Move editor.c: is_{string,comment,code}_style() functions to
highlighting.c, add to API.
Add editor_find_snippet(), editor_insert_snippet(),
utils_find_open_xml_tag() to API.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5409 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-16 15:07:40 +00:00
Nick Treleaven
e7206f35b8 Add sci_get_lexer() to plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5352 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-02 12:55:17 +00:00
Nick Treleaven
6903c883eb Move plugin_set_info prototype and parenthesize arguments for
PLUGIN_SET_TRANSLATABLE_INFO (based on patch by Colomban Wendling,
thanks).
Fix putting pointer symbol before name, not after type.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5341 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-10-28 16:44:52 +00:00
Nick Treleaven
98e6efb3b4 Add msgwin_set_messages_dir() to API (patch by Jiří Techet, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5237 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-16 15:31:23 +00:00
Nick Treleaven
8b6bcf6d68 Add main_widgets.project_menu to API (patch by Jiří Techet, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5236 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-16 15:18:56 +00:00
Nick Treleaven
3e8af38dd6 Increase API for message_window_notebook field addition.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5205 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-08 13:10:44 +00:00
Frank Lanitz
1cea0a2a52 Apply a patch by Jiří Techet which is preventing warnings when using -Wmissing-prototypes on compiling. Thanks.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5187 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-21 09:07:46 +00:00
Enrico Tröger
0f7d1928cc Add editor_goto_pos() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5164 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-15 17:44:31 +00:00
Nick Treleaven
14a9472047 Randomly sort keybinding IDs to show there should be no order.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5124 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-10 16:23:51 +00:00
Nick Treleaven
0c4b7a2ab0 Use single binding_ids keybinding array instead of individual
arrays for core keybindings. This allows the keybinding IDs to be
merged into one enum; the order of keybindings is now just the
order they are added to each group. Keybindings can be reordered
without breaking the plugin ABI but groups must stay the same.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5120 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-10 12:43:30 +00:00