[gtksourceview] Rework symbol visibility handling



commit 86d9ab6db8f48125fa17ac14dcff6f85d2867ae6
Author: Paolo Borelli <pborelli gnome org>
Date:   Tue Dec 8 11:12:27 2015 +0100

    Rework symbol visibility handling
    
    Define versioned macros for available and deprecated symbols and
    annotate all public methods accordingly.
    This adopts the convention use by gtk and other libraries.

 configure.ac                                       |   30 +++
 docs/reference/Makefile.am                         |    5 +-
 gtksourceview/Makefile.am                          |    4 +-
 .../words/gtksourcecompletionwords.c               |    4 +
 gtksourceview/gtksourcebuffer.h                    |   40 ++++-
 gtksourceview/gtksourcecompletion.c                |    4 +
 gtksourceview/gtksourcecompletion.h                |   23 ++-
 gtksourceview/gtksourcecompletioncontext.c         |    6 +-
 gtksourceview/gtksourcecompletioncontext.h         |   10 +-
 gtksourceview/gtksourcecompletioninfo.c            |    4 +
 gtksourceview/gtksourcecompletioninfo.h            |   15 +-
 gtksourceview/gtksourcecompletionitem.c            |    4 +
 gtksourceview/gtksourcecompletionitem.h            |    5 +-
 gtksourceview/gtksourcecompletionmodel.c           |    4 +
 gtksourceview/gtksourcecompletionproposal.c        |    8 +-
 gtksourceview/gtksourcecompletionproposal.h        |   18 ++-
 gtksourceview/gtksourcecompletionprovider.c        |   11 +-
 gtksourceview/gtksourcecompletionprovider.h        |   16 ++-
 gtksourceview/gtksourcecontextengine.c             |    4 +
 gtksourceview/gtksourceencoding.c                  |    4 +
 gtksourceview/gtksourceencoding.h                  |   38 +++--
 gtksourceview/gtksourcefile.c                      |    4 +
 gtksourceview/gtksourcefile.h                      |   13 ++
 gtksourceview/gtksourcefileloader.c                |    4 +
 gtksourceview/gtksourcefileloader.h                |   16 ++-
 gtksourceview/gtksourcefilesaver.c                 |    4 +
 gtksourceview/gtksourcefilesaver.h                 |   19 ++-
 gtksourceview/gtksourcegutter.c                    |    4 +
 gtksourceview/gtksourcegutter.h                    |   12 +-
 gtksourceview/gtksourcegutterrenderer.c            |    4 +
 gtksourceview/gtksourcegutterrenderer.h            |   26 +++-
 gtksourceview/gtksourcegutterrendererlines.c       |    4 +
 gtksourceview/gtksourcegutterrenderermarks.c       |    4 +
 gtksourceview/gtksourcegutterrendererpixbuf.c      |    4 +
 gtksourceview/gtksourcegutterrendererpixbuf.h      |   12 +-
 gtksourceview/gtksourcegutterrenderertext.c        |    4 +
 gtksourceview/gtksourcegutterrenderertext.h        |    6 +
 gtksourceview/gtksourceiter.c                      |    4 +-
 gtksourceview/gtksourcelanguage.h                  |   11 +
 gtksourceview/gtksourcelanguagemanager.h           |   12 +-
 gtksourceview/gtksourcemap.c                       |    4 +
 gtksourceview/gtksourcemap.h                       |    8 +-
 gtksourceview/gtksourcemark.c                      |    4 +
 gtksourceview/gtksourcemark.h                      |    6 +
 gtksourceview/gtksourcemarkattributes.c            |    4 +
 gtksourceview/gtksourcemarkattributes.h            |   20 ++-
 gtksourceview/gtksourcepixbufhelper.c              |    1 -
 gtksourceview/gtksourceprintcompositor.h           |   62 +++++-
 gtksourceview/gtksourceregex.c                     |    4 +
 gtksourceview/gtksourcesearchcontext.c             |    4 +
 gtksourceview/gtksourcesearchcontext.h             |   20 ++
 gtksourceview/gtksourcesearchsettings.c            |    4 +
 gtksourceview/gtksourcesearchsettings.h            |   12 ++
 gtksourceview/gtksourcestyle.c                     |    4 +
 gtksourceview/gtksourcestyle.h                     |    2 +
 gtksourceview/gtksourcestylescheme.c               |    4 +
 gtksourceview/gtksourcestylescheme.h               |    7 +
 gtksourceview/gtksourcestyleschemechooser.c        |    4 +-
 gtksourceview/gtksourcestyleschemechooser.h        |    3 +
 gtksourceview/gtksourcestyleschemechooserbutton.c  |    4 +
 gtksourceview/gtksourcestyleschemechooserbutton.h  |    3 +
 gtksourceview/gtksourcestyleschemechooserwidget.c  |    4 +
 gtksourceview/gtksourcestyleschemechooserwidget.h  |    3 +
 gtksourceview/gtksourcestyleschememanager.c        |    4 +
 gtksourceview/gtksourcestyleschememanager.h        |   10 +
 gtksourceview/gtksourcetag.h                       |    1 +
 gtksourceview/gtksourcetypes.h                     |    1 +
 gtksourceview/gtksourceundomanager.h               |   13 ++
 gtksourceview/gtksourceutils.h                     |    4 +
 gtksourceview/gtksourceversion.h.in                |  210 ++++++++++++++++++++
 gtksourceview/gtksourceview.h                      |   46 ++++-
 71 files changed, 833 insertions(+), 71 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index ef83b17..6746103 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,36 @@ if test "$enable_deprecations" = "no"; then
        AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
 fi
 
+# Symbol visibility handling
+HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+    *-*-mingw*)
+        dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
+        AC_DEFINE([_GTK_SOURCE_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) 
extern],
+                  [defines how to decorate public symbols while building])
+        HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+        ;;
+    *)
+        dnl on other compilers, check if we can do -fvisibility=hidden
+        SAVED_CFLAGS="${CFLAGS}"
+        CFLAGS="-fvisibility=hidden"
+        AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+        AC_TRY_COMPILE([], [int main (void) { return 0; }],
+                       AC_MSG_RESULT(yes)
+                       enable_fvisibility_hidden=yes,
+                       AC_MSG_RESULT(no)
+                       enable_fvisibility_hidden=no)
+        CFLAGS="${SAVED_CFLAGS}"
+
+        AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
+            AC_DEFINE([_GTK_SOURCE_EXTERN], [__attribute__((visibility("default"))) extern],
+                      [defines how to decorate public symbols while building])
+            HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+        ])
+        ;;
+esac
+AC_SUBST(HIDDEN_VISIBILITY_CFLAGS)
+
 AX_REQUIRE_DEFINED([AX_PKG_CHECK_MODULES])
 AX_PKG_CHECK_MODULES([DEP],
                     [glib-2.0 >= $glib_req  gio-2.0 >= $glib_req  gtk+-3.0 >= $gtk_req],
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
index d2fe07a..3c45177 100644
--- a/docs/reference/Makefile.am
+++ b/docs/reference/Makefile.am
@@ -8,7 +8,10 @@ DOC_MODULE = gtksourceview-3.0
 DOC_MAIN_SGML_FILE = gtksourceview-docs.xml
 
 # Extra options to supply to gtkdoc-scan
-SCAN_OPTIONS = --deprecated-guards='GTKSOURCEVIEW_DISABLE_DEPRECATED' --rebuild-types
+SCAN_OPTIONS =                                                         \
+       --deprecated-guards='GTKSOURCEVIEW_DISABLE_DEPRECATED' \        \
+       --rebuild-types                                                 \
+       
--ignore-decorators='GTK_SOURCE_DEPRECATED\w*\s*\([^)]*\)|GTK_SOURCE_DEPRECATED\w*|GTK_SOURCE_AVAILABLE\w*'
 
 # The directory containing the source code. Relative to $(srcdir)
 DOC_SOURCE_DIR = $(top_srcdir)/gtksourceview
diff --git a/gtksourceview/Makefile.am b/gtksourceview/Makefile.am
index 768e887..c256b8a 100644
--- a/gtksourceview/Makefile.am
+++ b/gtksourceview/Makefile.am
@@ -177,12 +177,13 @@ libgtksourceview_3_0_la_LIBADD =                                  \
        $(DEP_LIBS) $(GTK_MAC_LIBS)
 
 libgtksourceview_3_0_la_CFLAGS =       \
+       $(HIDDEN_VISIBILITY_CFLAGS)     \
        $(CODE_COVERAGE_CFLAGS)
 
 libgtksourceview_3_0_la_LDFLAGS =              \
        -version-info $(GSV_LT_VERSION)         \
        -no-undefined                           \
-       -export-symbols-regex "^gtk_source_.*"  \
+       -export-dynamic                         \
        $(WARN_LDFLAGS)                         \
        $(CODE_COVERAGE_LDFLAGS)
 
@@ -203,6 +204,7 @@ stamp-gtksourceview-typebuiltins.c: Makefile.am $(libgtksourceview_public_header
        $(AM_V_GEN) (cd $(srcdir) \
         && $(GLIB_MKENUMS) \
                        --fhead "#include <glib-object.h>\n" \
+                       --fhead "#include \"gtksourceversion.h\"\n" \
                        --fhead "#include \"gtksourceview-typebuiltins.h\"\n\n" \
                        --fprod "\n/* enumerations from \"@filename \" */" \
                        --vhead "static const G Type@Value _ enum_name@_values[] = {" \
diff --git a/gtksourceview/completion-providers/words/gtksourcecompletionwords.c 
b/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
index 502e840..11091ea 100644
--- a/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
+++ b/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
@@ -30,6 +30,10 @@
  * appearing in the registered #GtkTextBuffer<!-- -->s.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecompletionwords.h"
 #include "gtksourcecompletionwordslibrary.h"
 #include "gtksourcecompletionwordsbuffer.h"
diff --git a/gtksourceview/gtksourcebuffer.h b/gtksourceview/gtksourcebuffer.h
index 8aabe8c..d495656 100644
--- a/gtksourceview/gtksourcebuffer.h
+++ b/gtksourceview/gtksourcebuffer.h
@@ -117,120 +117,158 @@ struct _GtkSourceBufferClass
        void (*_gtk_source_reserved3) (void);
 };
 
-GType                   gtk_source_buffer_get_type                             (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_ALL
+GType                   gtk_source_buffer_get_type                             (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceBuffer                *gtk_source_buffer_new                                  (GtkTextTagTable      
  *table);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceBuffer        *gtk_source_buffer_new_with_language                    (GtkSourceLanguage      
*language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_get_highlight_syntax                 (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_highlight_syntax                 (GtkSourceBuffer        
*buffer,
                                                                                 gboolean                
highlight);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_get_highlight_matching_brackets      (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_highlight_matching_brackets      (GtkSourceBuffer        
*buffer,
                                                                                 gboolean                
highlight);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint                    gtk_source_buffer_get_max_undo_levels                  (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_max_undo_levels                  (GtkSourceBuffer        
*buffer,
                                                                                 gint                    
max_undo_levels);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceLanguage      *gtk_source_buffer_get_language                         (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_language                         (GtkSourceBuffer        
*buffer,
                                                                                 GtkSourceLanguage      
*language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_can_undo                             (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_can_redo                             (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyleScheme    *gtk_source_buffer_get_style_scheme                    (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_style_scheme                     (GtkSourceBuffer        
*buffer,
                                                                                 GtkSourceStyleScheme   
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_ensure_highlight                     (GtkSourceBuffer        
*buffer,
                                                                                 const GtkTextIter      
*start,
                                                                                 const GtkTextIter      *end);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_undo                                 (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_redo                                 (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_begin_not_undoable_action            (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_end_not_undoable_action              (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMark          *gtk_source_buffer_create_source_mark                   (GtkSourceBuffer        
*buffer,
                                                                                 const gchar            *name,
                                                                                 const gchar            
*category,
                                                                                 const GtkTextIter      
*where);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_forward_iter_to_source_mark          (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            *iter,
                                                                                 const gchar            
*category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_backward_iter_to_source_mark         (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            *iter,
                                                                                 const gchar            
*category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GSList                 *gtk_source_buffer_get_source_marks_at_iter             (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            *iter,
                                                                                 const gchar            
*category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GSList                 *gtk_source_buffer_get_source_marks_at_line             (GtkSourceBuffer        
*buffer,
                                                                                 gint                    line,
                                                                                 const gchar            
*category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_remove_source_marks                  (GtkSourceBuffer        
*buffer,
                                                                                 const GtkTextIter      
*start,
                                                                                 const GtkTextIter      *end,
                                                                                 const gchar            
*category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_iter_has_context_class               (GtkSourceBuffer        
*buffer,
                                                                                 const GtkTextIter      *iter,
                                                                                 const gchar            
*context_class);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                 **gtk_source_buffer_get_context_classes_at_iter          (GtkSourceBuffer        
*buffer,
                                                                                 const GtkTextIter      
*iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_iter_forward_to_context_class_toggle (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            *iter,
                                                                                 const gchar            
*context_class);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_buffer_iter_backward_to_context_class_toggle
                                                                                (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            *iter,
                                                                                 const gchar            
*context_class);
 
+GTK_SOURCE_AVAILABLE_IN_3_12
 void                    gtk_source_buffer_change_case                          (GtkSourceBuffer        
*buffer,
                                                                                 GtkSourceChangeCaseType 
case_type,
                                                                                 GtkTextIter            
*start,
                                                                                 GtkTextIter            *end);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void                    gtk_source_buffer_join_lines                           (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            
*start,
                                                                                 GtkTextIter            *end);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 void                    gtk_source_buffer_sort_lines                           (GtkSourceBuffer        
*buffer,
                                                                                 GtkTextIter            
*start,
                                                                                 GtkTextIter            *end,
                                                                                 GtkSourceSortFlags     flags,
                                                                                 gint                   
column);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceUndoManager   *gtk_source_buffer_get_undo_manager                     (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_buffer_set_undo_manager                     (GtkSourceBuffer        
*buffer,
                                                                                 GtkSourceUndoManager   
*manager);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_buffer_set_implicit_trailing_newline        (GtkSourceBuffer        
*buffer,
                                                                                 gboolean                
implicit_trailing_newline);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 gboolean                gtk_source_buffer_get_implicit_trailing_newline        (GtkSourceBuffer        
*buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkTextTag             *gtk_source_buffer_create_source_tag                    (GtkSourceBuffer        
*buffer,
                                                                                 const gchar            
*tag_name,
                                                                                 const gchar            
*first_property_name,
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 20b3bc3..64fb025 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -97,6 +97,10 @@
  * GtkSourceCompletionInfo for the main completion window.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecompletion.h"
 #include "gtksourcecompletion-private.h"
 #include "gtksourcecompletionmodel.h"
diff --git a/gtksourceview/gtksourcecompletion.h b/gtksourceview/gtksourcecompletion.h
index 86dd543..6cf52ad 100644
--- a/gtksourceview/gtksourcecompletion.h
+++ b/gtksourceview/gtksourcecompletion.h
@@ -95,48 +95,61 @@ struct _GtkSourceCompletionClass
        void            (* activate_proposal)           (GtkSourceCompletion         *completion);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType           gtk_source_completion_get_type                 (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GQuark          gtk_source_completion_error_quark              (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_add_provider             (GtkSourceCompletion           *completion,
                                                                 GtkSourceCompletionProvider   *provider,
                                                                 GError                       **error);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_remove_provider          (GtkSourceCompletion           *completion,
                                                                 GtkSourceCompletionProvider   *provider,
                                                                 GError                       **error);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GList          *gtk_source_completion_get_providers            (GtkSourceCompletion           *completion);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_show                     (GtkSourceCompletion           *completion,
                                                                 GList                         *providers,
                                                                 GtkSourceCompletionContext    *context);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_completion_hide                     (GtkSourceCompletion           *completion);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionInfo *
                 gtk_source_completion_get_info_window          (GtkSourceCompletion           *completion);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceView  *gtk_source_completion_get_view                 (GtkSourceCompletion           *completion);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionContext *
                 gtk_source_completion_create_context           (GtkSourceCompletion           *completion,
                                                                 GtkTextIter                   *position);
 
-G_DEPRECATED_FOR (gtk_source_completion_provider_get_start_iter)
+GTK_SOURCE_DEPRECATED_IN_3_8_FOR (gtk_source_completion_provider_get_start_iter)
 void            gtk_source_completion_move_window              (GtkSourceCompletion           *completion,
                                                                 GtkTextIter                   *iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
+void            gtk_source_completion_block_interactive        (GtkSourceCompletion           *completion);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
+void            gtk_source_completion_unblock_interactive      (GtkSourceCompletion           *completion);
+
+G_GNUC_INTERNAL
 void            _gtk_source_completion_add_proposals           (GtkSourceCompletion           *completion,
                                                                 GtkSourceCompletionContext    *context,
                                                                 GtkSourceCompletionProvider   *provider,
                                                                 GList                         *proposals,
                                                                 gboolean                       finished);
-
-void            gtk_source_completion_block_interactive        (GtkSourceCompletion           *completion);
-void            gtk_source_completion_unblock_interactive      (GtkSourceCompletion           *completion);
-
 G_END_DECLS
 
 #endif /* __GTK_SOURCE_COMPLETION_H__ */
diff --git a/gtksourceview/gtksourcecompletioncontext.c b/gtksourceview/gtksourcecompletioncontext.c
index 8fb5255..da3939b 100644
--- a/gtksourceview/gtksourcecompletioncontext.c
+++ b/gtksourceview/gtksourcecompletioncontext.c
@@ -60,6 +60,10 @@
  * #GtkTextBuffer with gtk_text_iter_get_buffer().
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecompletioncontext.h"
 #include "gtksourceview-typebuiltins.h"
 #include "gtksourcecompletionprovider.h"
@@ -91,7 +95,7 @@ enum
        NUM_SIGNALS
 };
 
-guint context_signals[NUM_SIGNALS] = {0,};
+static guint context_signals[NUM_SIGNALS] = {0,};
 
 G_DEFINE_TYPE_WITH_PRIVATE (GtkSourceCompletionContext, gtk_source_completion_context, 
G_TYPE_INITIALLY_UNOWNED)
 
diff --git a/gtksourceview/gtksourcecompletioncontext.h b/gtksourceview/gtksourcecompletioncontext.h
index ad919c6..13699b4 100644
--- a/gtksourceview/gtksourcecompletioncontext.h
+++ b/gtksourceview/gtksourcecompletioncontext.h
@@ -71,23 +71,29 @@ struct _GtkSourceCompletionContextClass {
        void (*_gtk_source_reserved3) (void);
 };
 
-GType gtk_source_completion_context_get_type (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_ALL
+GType           gtk_source_completion_context_get_type (void) G_GNUC_CONST;
 
-void            gtk_source_completion_context_add_proposals    (GtkSourceCompletionContext   *context,
+GTK_SOURCE_AVAILABLE_IN_ALL
+void            gtk_source_completion_context_add_proposals    (GtkSourceCompletionContext   *context,
                                                                 GtkSourceCompletionProvider  *provider,
                                                                 GList                        *proposals,
                                                                 gboolean                      finished);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_context_get_iter         (GtkSourceCompletionContext   *context,
                                                                 GtkTextIter                  *iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionActivation
                 gtk_source_completion_context_get_activation   (GtkSourceCompletionContext   *context);
 
+G_GNUC_INTERNAL
 GtkSourceCompletionContext *
                _gtk_source_completion_context_new              (GtkSourceCompletion          *completion,
                                                                 GtkTextIter                  *position);
 
+G_GNUC_INTERNAL
 void           _gtk_source_completion_context_cancel           (GtkSourceCompletionContext   *context);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcecompletioninfo.c b/gtksourceview/gtksourcecompletioninfo.c
index 23edf42..d5e6703 100644
--- a/gtksourceview/gtksourcecompletioninfo.c
+++ b/gtksourceview/gtksourcecompletioninfo.c
@@ -56,6 +56,10 @@
  * #GtkSourceCompletion machinery, you don't need to worry about this.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <gtksourceview/gtksourcecompletioninfo.h>
 #include "gtksourceview-i18n.h"
 
diff --git a/gtksourceview/gtksourcecompletioninfo.h b/gtksourceview/gtksourcecompletioninfo.h
index 6604685..17d3a87 100644
--- a/gtksourceview/gtksourcecompletioninfo.h
+++ b/gtksourceview/gtksourcecompletioninfo.h
@@ -53,26 +53,29 @@ struct _GtkSourceCompletionInfoClass
        void    (*before_show)          (GtkSourceCompletionInfo *info);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType           gtk_source_completion_info_get_type            (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionInfo *
                 gtk_source_completion_info_new                 (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_completion_info_move_to_iter        (GtkSourceCompletionInfo *info,
                                                                 GtkTextView             *view,
                                                                 GtkTextIter             *iter);
 
-G_GNUC_INTERNAL
-void            _gtk_source_completion_info_set_xoffset        (GtkSourceCompletionInfo *info,
-                                                                gint                     xoffset);
-
-G_DEPRECATED_FOR (gtk_container_add)
+GTK_SOURCE_DEPRECATED_IN_3_8_FOR (gtk_container_add)
 void            gtk_source_completion_info_set_widget          (GtkSourceCompletionInfo *info,
                                                                 GtkWidget               *widget);
 
-G_DEPRECATED_FOR (gtk_bin_get_child)
+GTK_SOURCE_DEPRECATED_IN_3_8_FOR (gtk_bin_get_child)
 GtkWidget      *gtk_source_completion_info_get_widget          (GtkSourceCompletionInfo *info);
 
+G_GNUC_INTERNAL
+void            _gtk_source_completion_info_set_xoffset        (GtkSourceCompletionInfo *info,
+                                                                gint                     xoffset);
+
 G_END_DECLS
 
 #endif /* __GTK_SOURCE_COMPLETION_INFO_H__ */
diff --git a/gtksourceview/gtksourcecompletionitem.c b/gtksourceview/gtksourcecompletionitem.c
index b352fd8..453d1fe 100644
--- a/gtksourceview/gtksourcecompletionitem.c
+++ b/gtksourceview/gtksourcecompletionitem.c
@@ -28,6 +28,10 @@
  * #GtkSourceCompletionProposal interface.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecompletionitem.h"
 #include "gtksourcecompletionproposal.h"
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourcecompletionitem.h b/gtksourceview/gtksourcecompletionitem.h
index 7ee573e..cf85c93 100644
--- a/gtksourceview/gtksourcecompletionitem.h
+++ b/gtksourceview/gtksourcecompletionitem.h
@@ -47,19 +47,22 @@ struct _GtkSourceCompletionItemClass {
        GObjectClass parent_class;
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                   gtk_source_completion_item_get_type            (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionItem *gtk_source_completion_item_new                (const gchar *label,
                                                                         const gchar *text,
                                                                         GdkPixbuf   *icon,
                                                                         const gchar *info);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionItem *gtk_source_completion_item_new_with_markup    (const gchar *markup,
                                                                         const gchar *text,
                                                                         GdkPixbuf   *icon,
                                                                         const gchar *info);
 
-G_DEPRECATED_FOR (gtk_source_completion_item_new)
+GTK_SOURCE_DEPRECATED_IN_3_10_FOR (gtk_source_completion_item_new)
 GtkSourceCompletionItem *gtk_source_completion_item_new_from_stock     (const gchar *label,
                                                                         const gchar *text,
                                                                         const gchar *stock,
diff --git a/gtksourceview/gtksourcecompletionmodel.c b/gtksourceview/gtksourcecompletionmodel.c
index ca54de8..f8d98bf 100644
--- a/gtksourceview/gtksourcecompletionmodel.c
+++ b/gtksourceview/gtksourcecompletionmodel.c
@@ -20,6 +20,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecompletionmodel.h"
 #include "gtksourcecompletionprovider.h"
 #include "gtksourcecompletionproposal.h"
diff --git a/gtksourceview/gtksourcecompletionproposal.c b/gtksourceview/gtksourcecompletionproposal.c
index b79f55c..fceed87 100644
--- a/gtksourceview/gtksourcecompletionproposal.c
+++ b/gtksourceview/gtksourcecompletionproposal.c
@@ -20,6 +20,12 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "gtksourcecompletionproposal.h"
+
 /**
  * SECTION:completionproposal
  * @title: GtkSourceCompletionProposal
@@ -40,8 +46,6 @@
  * will be used.
  */
 
-#include "gtksourcecompletionproposal.h"
-
 /* Signals */
 enum
 {
diff --git a/gtksourceview/gtksourcecompletionproposal.h b/gtksourceview/gtksourcecompletionproposal.h
index 0b59012..d498df4 100644
--- a/gtksourceview/gtksourcecompletionproposal.h
+++ b/gtksourceview/gtksourcecompletionproposal.h
@@ -84,22 +84,38 @@ struct _GtkSourceCompletionProposalIface
        void             (*changed)             (GtkSourceCompletionProposal *proposal);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                   gtk_source_completion_proposal_get_type        (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                  *gtk_source_completion_proposal_get_label       (GtkSourceCompletionProposal 
*proposal);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                  *gtk_source_completion_proposal_get_markup      (GtkSourceCompletionProposal 
*proposal);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                  *gtk_source_completion_proposal_get_text        (GtkSourceCompletionProposal 
*proposal);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GdkPixbuf              *gtk_source_completion_proposal_get_icon        (GtkSourceCompletionProposal 
*proposal);
+
+GTK_SOURCE_AVAILABLE_IN_3_18
 const gchar            *gtk_source_completion_proposal_get_icon_name   (GtkSourceCompletionProposal 
*proposal);
+
+GTK_SOURCE_AVAILABLE_IN_3_18
 GIcon                  *gtk_source_completion_proposal_get_gicon       (GtkSourceCompletionProposal 
*proposal);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                  *gtk_source_completion_proposal_get_info        (GtkSourceCompletionProposal 
*proposal);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_completion_proposal_changed         (GtkSourceCompletionProposal 
*proposal);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint                   gtk_source_completion_proposal_hash            (GtkSourceCompletionProposal 
*proposal);
-gboolean                gtk_source_completion_proposal_equal           (GtkSourceCompletionProposal 
*proposal,
+
+GTK_SOURCE_AVAILABLE_IN_ALL
+gboolean                gtk_source_completion_proposal_equal           (GtkSourceCompletionProposal 
*proposal,
                                                                         GtkSourceCompletionProposal *other);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcecompletionprovider.c b/gtksourceview/gtksourcecompletionprovider.c
index 1d465f1..e740710 100644
--- a/gtksourceview/gtksourcecompletionprovider.c
+++ b/gtksourceview/gtksourcecompletionprovider.c
@@ -20,6 +20,13 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "gtksourcecompletionprovider.h"
+#include "gtksourcecompletionproposal.h"
+#include "gtksourcecompletioninfo.h"
 
 /**
  * SECTION:completionprovider
@@ -36,10 +43,6 @@
  * will be used.
  */
 
-#include "gtksourcecompletionprovider.h"
-#include "gtksourcecompletionproposal.h"
-#include "gtksourcecompletioninfo.h"
-
 typedef GtkSourceCompletionProviderIface GtkSourceCompletionProviderInterface;
 
 G_DEFINE_INTERFACE(GtkSourceCompletionProvider, gtk_source_completion_provider, G_TYPE_OBJECT)
diff --git a/gtksourceview/gtksourcecompletionprovider.h b/gtksourceview/gtksourcecompletionprovider.h
index f1aa173..5003adc 100644
--- a/gtksourceview/gtksourcecompletionprovider.h
+++ b/gtksourceview/gtksourcecompletionprovider.h
@@ -105,43 +105,57 @@ struct _GtkSourceCompletionProviderIface
        gint             (*get_priority)        (GtkSourceCompletionProvider *provider);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType           gtk_source_completion_provider_get_type        (void);
 
-
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar          *gtk_source_completion_provider_get_name        (GtkSourceCompletionProvider *provider);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GdkPixbuf      *gtk_source_completion_provider_get_icon        (GtkSourceCompletionProvider *provider);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 const gchar    *gtk_source_completion_provider_get_icon_name   (GtkSourceCompletionProvider *provider);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 GIcon          *gtk_source_completion_provider_get_gicon       (GtkSourceCompletionProvider *provider);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_completion_provider_populate        (GtkSourceCompletionProvider *provider,
                                                                 GtkSourceCompletionContext  *context);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletionActivation
                 gtk_source_completion_provider_get_activation (GtkSourceCompletionProvider *provider);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_provider_match           (GtkSourceCompletionProvider *provider,
                                                                 GtkSourceCompletionContext  *context);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkWidget      *gtk_source_completion_provider_get_info_widget (GtkSourceCompletionProvider *provider,
                                                                 GtkSourceCompletionProposal *proposal);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_completion_provider_update_info     (GtkSourceCompletionProvider *provider,
                                                                 GtkSourceCompletionProposal *proposal,
                                                                 GtkSourceCompletionInfo     *info);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_provider_get_start_iter  (GtkSourceCompletionProvider *provider,
                                                                 GtkSourceCompletionContext  *context,
                                                                 GtkSourceCompletionProposal *proposal,
                                                                 GtkTextIter                 *iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_completion_provider_activate_proposal (GtkSourceCompletionProvider *provider,
                                                                   GtkSourceCompletionProposal *proposal,
                                                                   GtkTextIter                 *iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint            gtk_source_completion_provider_get_interactive_delay (GtkSourceCompletionProvider *provider);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint            gtk_source_completion_provider_get_priority    (GtkSourceCompletionProvider *provider);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcecontextengine.c b/gtksourceview/gtksourcecontextengine.c
index 6c72c78..22e7787 100644
--- a/gtksourceview/gtksourcecontextengine.c
+++ b/gtksourceview/gtksourcecontextengine.c
@@ -20,6 +20,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcecontextengine.h"
 #include <string.h>
 #include <glib.h>
diff --git a/gtksourceview/gtksourceencoding.c b/gtksourceview/gtksourceencoding.c
index 40a2c18..2df70f5 100644
--- a/gtksourceview/gtksourceencoding.c
+++ b/gtksourceview/gtksourceencoding.c
@@ -20,6 +20,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourceencoding.h"
 #include "gtksourceencoding-private.h"
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourceencoding.h b/gtksourceview/gtksourceencoding.h
index 8b6f849..5c892bc 100644
--- a/gtksourceview/gtksourceencoding.h
+++ b/gtksourceview/gtksourceencoding.h
@@ -31,26 +31,40 @@ G_BEGIN_DECLS
 
 #define GTK_SOURCE_TYPE_ENCODING (gtk_source_encoding_get_type ())
 
-GType                   gtk_source_encoding_get_type           (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_3_14
+GType                   gtk_source_encoding_get_type                   (void) G_GNUC_CONST;
 
-const GtkSourceEncoding        *gtk_source_encoding_get_from_charset   (const gchar             *charset);
+GTK_SOURCE_AVAILABLE_IN_3_14
+const GtkSourceEncoding        *gtk_source_encoding_get_from_charset           (const gchar             
*charset);
 
-gchar                  *gtk_source_encoding_to_string          (const GtkSourceEncoding *enc);
+GTK_SOURCE_AVAILABLE_IN_3_14
+gchar                  *gtk_source_encoding_to_string                  (const GtkSourceEncoding *enc);
 
-const gchar            *gtk_source_encoding_get_name           (const GtkSourceEncoding *enc);
-const gchar            *gtk_source_encoding_get_charset        (const GtkSourceEncoding *enc);
+GTK_SOURCE_AVAILABLE_IN_3_14
+const gchar            *gtk_source_encoding_get_name                   (const GtkSourceEncoding *enc);
 
-const GtkSourceEncoding        *gtk_source_encoding_get_utf8           (void);
-const GtkSourceEncoding        *gtk_source_encoding_get_current        (void);
+GTK_SOURCE_AVAILABLE_IN_3_14
+const gchar            *gtk_source_encoding_get_charset                (const GtkSourceEncoding *enc);
 
-GSList                 *gtk_source_encoding_get_all            (void);
+GTK_SOURCE_AVAILABLE_IN_3_14
+const GtkSourceEncoding        *gtk_source_encoding_get_utf8                   (void);
 
-GSList                 *gtk_source_encoding_get_default_candidates
-                                                               (void);
+GTK_SOURCE_AVAILABLE_IN_3_14
+const GtkSourceEncoding        *gtk_source_encoding_get_current                (void);
+
+GTK_SOURCE_AVAILABLE_IN_3_14
+GSList                 *gtk_source_encoding_get_all                    (void);
+
+GTK_SOURCE_AVAILABLE_IN_3_18
+GSList                 *gtk_source_encoding_get_default_candidates     (void);
 
 /* These should not be used, they are just to make python bindings happy */
-GtkSourceEncoding      *gtk_source_encoding_copy               (const GtkSourceEncoding *enc);
-void                    gtk_source_encoding_free               (GtkSourceEncoding       *enc);
+
+GTK_SOURCE_AVAILABLE_IN_3_14
+GtkSourceEncoding      *gtk_source_encoding_copy                       (const GtkSourceEncoding *enc);
+
+GTK_SOURCE_AVAILABLE_IN_3_14
+void                    gtk_source_encoding_free                       (GtkSourceEncoding       *enc);
 
 G_END_DECLS
 
diff --git a/gtksourceview/gtksourcefile.c b/gtksourceview/gtksourcefile.c
index 59021f8..7d1b111 100644
--- a/gtksourceview/gtksourcefile.c
+++ b/gtksourceview/gtksourcefile.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcefile.h"
 #include "gtksourceencoding.h"
 #include "gtksourceview-typebuiltins.h"
diff --git a/gtksourceview/gtksourcefile.h b/gtksourceview/gtksourcefile.h
index 82dc889..cac9781 100644
--- a/gtksourceview/gtksourcefile.h
+++ b/gtksourceview/gtksourcefile.h
@@ -64,37 +64,50 @@ struct _GtkSourceFileClass
        gpointer padding[10];
 };
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GType           gtk_source_file_get_type                       (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFile  *gtk_source_file_new                            (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GFile          *gtk_source_file_get_location                   (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void            gtk_source_file_set_location                   (GtkSourceFile *file,
                                                                 GFile         *location);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 const GtkSourceEncoding *
                 gtk_source_file_get_encoding                   (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceNewlineType
                 gtk_source_file_get_newline_type               (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceCompressionType
                 gtk_source_file_get_compression_type           (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void            gtk_source_file_set_mount_operation_factory    (GtkSourceFile                  *file,
                                                                 GtkSourceMountOperationFactory  callback,
                                                                 gpointer                        user_data,
                                                                 GDestroyNotify                  notify);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 void            gtk_source_file_check_file_on_disk             (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 gboolean        gtk_source_file_is_local                       (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 gboolean        gtk_source_file_is_externally_modified         (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 gboolean        gtk_source_file_is_deleted                     (GtkSourceFile *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 gboolean        gtk_source_file_is_readonly                    (GtkSourceFile *file);
 
 G_GNUC_INTERNAL
diff --git a/gtksourceview/gtksourcefileloader.c b/gtksourceview/gtksourcefileloader.c
index aeb7f32..65fb728 100644
--- a/gtksourceview/gtksourcefileloader.c
+++ b/gtksourceview/gtksourcefileloader.c
@@ -22,6 +22,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcefileloader.h"
 #include "gtksourcebuffer.h"
 #include "gtksourcefile.h"
diff --git a/gtksourceview/gtksourcefileloader.h b/gtksourceview/gtksourcefileloader.h
index 59d67b6..a2848f2 100644
--- a/gtksourceview/gtksourcefileloader.h
+++ b/gtksourceview/gtksourcefileloader.h
@@ -73,30 +73,40 @@ struct _GtkSourceFileLoaderClass
        gpointer padding[10];
 };
 
-GType                   gtk_source_file_loader_get_type        (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_3_14
+GType                   gtk_source_file_loader_get_type        (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GQuark                  gtk_source_file_loader_error_quark     (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFileLoader    *gtk_source_file_loader_new             (GtkSourceBuffer         *buffer,
                                                                 GtkSourceFile           *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFileLoader    *gtk_source_file_loader_new_from_stream (GtkSourceBuffer         *buffer,
                                                                 GtkSourceFile           *file,
                                                                 GInputStream            *stream);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_loader_set_candidate_encodings
                                                                (GtkSourceFileLoader     *loader,
                                                                 GSList                  
*candidate_encodings);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceBuffer                *gtk_source_file_loader_get_buffer      (GtkSourceFileLoader     *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFile          *gtk_source_file_loader_get_file        (GtkSourceFileLoader     *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GFile                  *gtk_source_file_loader_get_location    (GtkSourceFileLoader     *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GInputStream           *gtk_source_file_loader_get_input_stream
                                                                (GtkSourceFileLoader     *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_loader_load_async      (GtkSourceFileLoader     *loader,
                                                                 gint                     io_priority,
                                                                 GCancellable            *cancellable,
@@ -106,14 +116,18 @@ void                       gtk_source_file_loader_load_async      (GtkSourceFileLoader  
   *loader,
                                                                 GAsyncReadyCallback      callback,
                                                                 gpointer                 user_data);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 gboolean                gtk_source_file_loader_load_finish     (GtkSourceFileLoader     *loader,
                                                                 GAsyncResult            *result,
                                                                 GError                 **error);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 const GtkSourceEncoding        *gtk_source_file_loader_get_encoding    (GtkSourceFileLoader     *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceNewlineType    gtk_source_file_loader_get_newline_type (GtkSourceFileLoader    *loader);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceCompressionType gtk_source_file_loader_get_compression_type
                                                                (GtkSourceFileLoader     *loader);
 
diff --git a/gtksourceview/gtksourcefilesaver.c b/gtksourceview/gtksourcefilesaver.c
index 14f77ca..865e378 100644
--- a/gtksourceview/gtksourcefilesaver.c
+++ b/gtksourceview/gtksourcefilesaver.c
@@ -22,6 +22,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcefilesaver.h"
 #include "gtksourcefile.h"
 #include "gtksourcebufferinputstream.h"
diff --git a/gtksourceview/gtksourcefilesaver.h b/gtksourceview/gtksourcefilesaver.h
index c818be4..f7f682e 100644
--- a/gtksourceview/gtksourcefilesaver.h
+++ b/gtksourceview/gtksourcefilesaver.h
@@ -90,45 +90,61 @@ struct _GtkSourceFileSaverClass
        gpointer padding[10];
 };
 
-GType                   gtk_source_file_saver_get_type         (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_3_14
+GType                   gtk_source_file_saver_get_type         (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GQuark                  gtk_source_file_saver_error_quark      (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFileSaver     *gtk_source_file_saver_new              (GtkSourceBuffer          *buffer,
                                                                 GtkSourceFile            *file);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFileSaver     *gtk_source_file_saver_new_with_target  (GtkSourceBuffer          *buffer,
                                                                 GtkSourceFile            *file,
                                                                 GFile                    *target_location);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceBuffer                *gtk_source_file_saver_get_buffer       (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFile          *gtk_source_file_saver_get_file         (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GFile                  *gtk_source_file_saver_get_location     (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_saver_set_encoding     (GtkSourceFileSaver       *saver,
                                                                 const GtkSourceEncoding  *encoding);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 const GtkSourceEncoding *gtk_source_file_saver_get_encoding    (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_saver_set_newline_type (GtkSourceFileSaver       *saver,
                                                                 GtkSourceNewlineType      newline_type);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceNewlineType    gtk_source_file_saver_get_newline_type (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_saver_set_compression_type
                                                                (GtkSourceFileSaver       *saver,
                                                                 GtkSourceCompressionType  compression_type);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceCompressionType gtk_source_file_saver_get_compression_type
                                                                (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_saver_set_flags        (GtkSourceFileSaver       *saver,
                                                                 GtkSourceFileSaverFlags   flags);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 GtkSourceFileSaverFlags         gtk_source_file_saver_get_flags        (GtkSourceFileSaver       *saver);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 void                    gtk_source_file_saver_save_async       (GtkSourceFileSaver       *saver,
                                                                 gint                      io_priority,
                                                                 GCancellable             *cancellable,
@@ -138,6 +154,7 @@ void                         gtk_source_file_saver_save_async       (GtkSourceFileSaver   
    *saver,
                                                                 GAsyncReadyCallback       callback,
                                                                 gpointer                  user_data);
 
+GTK_SOURCE_AVAILABLE_IN_3_14
 gboolean                gtk_source_file_saver_save_finish      (GtkSourceFileSaver       *saver,
                                                                 GAsyncResult             *result,
                                                                 GError                  **error);
diff --git a/gtksourceview/gtksourcegutter.c b/gtksourceview/gtksourcegutter.c
index e16272a..a46b12b 100644
--- a/gtksourceview/gtksourcegutter.c
+++ b/gtksourceview/gtksourcegutter.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutter.h"
 #include "gtksourcegutter-private.h"
 #include "gtksourceview.h"
diff --git a/gtksourceview/gtksourcegutter.h b/gtksourceview/gtksourcegutter.h
index 2077936..0eb98a8 100644
--- a/gtksourceview/gtksourcegutter.h
+++ b/gtksourceview/gtksourcegutter.h
@@ -49,34 +49,40 @@ struct _GtkSourceGutterClass
        GObjectClass parent_class;
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType gtk_source_gutter_get_type               (void) G_GNUC_CONST;
 
-G_DEPRECATED_FOR (gtk_text_view_get_window)
+GTK_SOURCE_DEPRECATED_IN_3_10_FOR (gtk_text_view_get_window)
 GdkWindow *gtk_source_gutter_get_window        (GtkSourceGutter         *gutter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean gtk_source_gutter_insert               (GtkSourceGutter         *gutter,
                                                  GtkSourceGutterRenderer *renderer,
                                                  gint                     position);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_reorder                 (GtkSourceGutter         *gutter,
                                                  GtkSourceGutterRenderer *renderer,
                                                  gint                     position);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_remove                  (GtkSourceGutter         *gutter,
                                                  GtkSourceGutterRenderer *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_queue_draw              (GtkSourceGutter         *gutter);
 
-G_DEPRECATED_FOR (gtk_source_gutter_renderer_set_padding)
+GTK_SOURCE_DEPRECATED_IN_3_12_FOR (gtk_source_gutter_renderer_set_padding)
 void gtk_source_gutter_set_padding              (GtkSourceGutter         *gutter,
                                                  gint                     xpad,
                                                  gint                     ypad);
 
-G_DEPRECATED_FOR (gtk_source_gutter_renderer_get_padding)
+GTK_SOURCE_DEPRECATED_IN_3_12_FOR (gtk_source_gutter_renderer_get_padding)
 void gtk_source_gutter_get_padding              (GtkSourceGutter         *gutter,
                                                  gint                    *xpad,
                                                  gint                    *ypad);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutterRenderer *
      gtk_source_gutter_get_renderer_at_pos      (GtkSourceGutter         *gutter,
                                                  gint                     x,
diff --git a/gtksourceview/gtksourcegutterrenderer.c b/gtksourceview/gtksourcegutterrenderer.c
index 436f2cb..6bb74e7 100644
--- a/gtksourceview/gtksourcegutterrenderer.c
+++ b/gtksourceview/gtksourcegutterrenderer.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutterrenderer.h"
 #include "gtksourcegutterrenderer-private.h"
 #include "gtksourcestylescheme.h"
diff --git a/gtksourceview/gtksourcegutterrenderer.h b/gtksourceview/gtksourcegutterrenderer.h
index 09e61de..fb42189 100644
--- a/gtksourceview/gtksourcegutterrenderer.h
+++ b/gtksourceview/gtksourcegutterrenderer.h
@@ -148,8 +148,10 @@ struct _GtkSourceGutterRendererClass
                                     GtkSourceGutterRendererState  state);
 };
 
-GType gtk_source_gutter_renderer_get_type (void) G_GNUC_CONST;
+GTK_SOURCE_AVAILABLE_IN_ALL
+GType    gtk_source_gutter_renderer_get_type (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_begin           (GtkSourceGutterRenderer      *renderer,
                                                      cairo_t                      *cr,
                                                      GdkRectangle                 *background_area,
@@ -157,6 +159,7 @@ void     gtk_source_gutter_renderer_begin           (GtkSourceGutterRenderer
                                                      GtkTextIter                  *start,
                                                      GtkTextIter                  *end);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_draw            (GtkSourceGutterRenderer      *renderer,
                                                      cairo_t                      *cr,
                                                      GdkRectangle                 *background_area,
@@ -165,66 +168,86 @@ void     gtk_source_gutter_renderer_draw            (GtkSourceGutterRenderer
                                                      GtkTextIter                  *end,
                                                      GtkSourceGutterRendererState  state);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_end             (GtkSourceGutterRenderer      *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint     gtk_source_gutter_renderer_get_size        (GtkSourceGutterRenderer      *renderer);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void    gtk_source_gutter_renderer_set_size         (GtkSourceGutterRenderer      *renderer,
                                                      gint                          size);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_set_visible     (GtkSourceGutterRenderer      *renderer,
                                                      gboolean                      visible);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean gtk_source_gutter_renderer_get_visible     (GtkSourceGutterRenderer      *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_get_padding     (GtkSourceGutterRenderer      *renderer,
                                                      gint                         *xpad,
                                                      gint                         *ypad);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_set_padding     (GtkSourceGutterRenderer      *renderer,
                                                      gint                          xpad,
                                                      gint                          ypad);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_get_alignment   (GtkSourceGutterRenderer      *renderer,
                                                      gfloat                       *xalign,
                                                      gfloat                       *yalign);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_set_alignment   (GtkSourceGutterRenderer      *renderer,
                                                      gfloat                        xalign,
                                                      gfloat                        yalign);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_set_alignment_mode (GtkSourceGutterRenderer              *renderer,
                                                         GtkSourceGutterRendererAlignmentMode  mode);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkTextWindowType
        gtk_source_gutter_renderer_get_window_type  (GtkSourceGutterRenderer      *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkTextView *gtk_source_gutter_renderer_get_view    (GtkSourceGutterRenderer      *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutterRendererAlignmentMode
        gtk_source_gutter_renderer_get_alignment_mode (GtkSourceGutterRenderer    *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean gtk_source_gutter_renderer_get_background  (GtkSourceGutterRenderer      *renderer,
                                                      GdkRGBA                      *color);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_set_background  (GtkSourceGutterRenderer      *renderer,
                                                      const GdkRGBA                *color);
 
 /* Emits the 'activate' signal */
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_activate        (GtkSourceGutterRenderer      *renderer,
                                                      GtkTextIter                  *iter,
                                                      GdkRectangle                 *area,
                                                      GdkEvent                     *event);
 
 /* Emits the 'query-activatable' signal */
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean gtk_source_gutter_renderer_query_activatable (GtkSourceGutterRenderer      *renderer,
                                                        GtkTextIter                  *iter,
                                                        GdkRectangle                 *area,
                                                        GdkEvent                     *event);
 
 /* Emits the 'queue-draw' signal */
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_queue_draw      (GtkSourceGutterRenderer      *renderer);
 
 /* Emits the 'query-tooltip' signal */
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean gtk_source_gutter_renderer_query_tooltip   (GtkSourceGutterRenderer      *renderer,
                                                      GtkTextIter                  *iter,
                                                      GdkRectangle                 *area,
@@ -233,6 +256,7 @@ gboolean gtk_source_gutter_renderer_query_tooltip   (GtkSourceGutterRenderer
                                                      GtkTooltip                   *tooltip);
 
 /* Emits the 'query-data' signal */
+GTK_SOURCE_AVAILABLE_IN_ALL
 void     gtk_source_gutter_renderer_query_data      (GtkSourceGutterRenderer      *renderer,
                                                      GtkTextIter                  *start,
                                                      GtkTextIter                  *end,
diff --git a/gtksourceview/gtksourcegutterrendererlines.c b/gtksourceview/gtksourcegutterrendererlines.c
index 578b5a4..78443cf 100644
--- a/gtksourceview/gtksourcegutterrendererlines.c
+++ b/gtksourceview/gtksourcegutterrendererlines.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutterrendererlines.h"
 #include "gtksourceview.h"
 
diff --git a/gtksourceview/gtksourcegutterrenderermarks.c b/gtksourceview/gtksourcegutterrenderermarks.c
index 7c8919e..547f00e 100644
--- a/gtksourceview/gtksourcegutterrenderermarks.c
+++ b/gtksourceview/gtksourcegutterrenderermarks.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutterrenderermarks.h"
 #include "gtksourceview.h"
 #include "gtksourcebuffer.h"
diff --git a/gtksourceview/gtksourcegutterrendererpixbuf.c b/gtksourceview/gtksourcegutterrendererpixbuf.c
index f737c48..b58b8b2 100644
--- a/gtksourceview/gtksourcegutterrendererpixbuf.c
+++ b/gtksourceview/gtksourcegutterrendererpixbuf.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutterrendererpixbuf.h"
 #include "gtksourceview-i18n.h"
 #include "gtksourcepixbufhelper.h"
diff --git a/gtksourceview/gtksourcegutterrendererpixbuf.h b/gtksourceview/gtksourcegutterrendererpixbuf.h
index b614139..ae3f2ba 100644
--- a/gtksourceview/gtksourcegutterrendererpixbuf.h
+++ b/gtksourceview/gtksourcegutterrendererpixbuf.h
@@ -56,30 +56,38 @@ struct _GtkSourceGutterRendererPixbufClass
        /*< public >*/
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType gtk_source_gutter_renderer_pixbuf_get_type (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutterRenderer *gtk_source_gutter_renderer_pixbuf_new (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void         gtk_source_gutter_renderer_pixbuf_set_pixbuf       (GtkSourceGutterRendererPixbuf *renderer,
                                                                  GdkPixbuf                     *pixbuf);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GdkPixbuf   *gtk_source_gutter_renderer_pixbuf_get_pixbuf       (GtkSourceGutterRendererPixbuf *renderer);
 
-G_DEPRECATED
+GTK_SOURCE_DEPRECATED_IN_3_10
 void         gtk_source_gutter_renderer_pixbuf_set_stock_id     (GtkSourceGutterRendererPixbuf *renderer,
                                                                  const gchar                   *stock_id);
 
-G_DEPRECATED
+GTK_SOURCE_DEPRECATED_IN_3_10
 const gchar *gtk_source_gutter_renderer_pixbuf_get_stock_id     (GtkSourceGutterRendererPixbuf *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void         gtk_source_gutter_renderer_pixbuf_set_gicon        (GtkSourceGutterRendererPixbuf *renderer,
                                                                  GIcon                         *icon);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GIcon       *gtk_source_gutter_renderer_pixbuf_get_gicon        (GtkSourceGutterRendererPixbuf *renderer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void         gtk_source_gutter_renderer_pixbuf_set_icon_name    (GtkSourceGutterRendererPixbuf *renderer,
                                                                  const gchar                   *icon_name);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar *gtk_source_gutter_renderer_pixbuf_get_icon_name    (GtkSourceGutterRendererPixbuf *renderer);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcegutterrenderertext.c b/gtksourceview/gtksourcegutterrenderertext.c
index 3fb38b5..f2866b7 100644
--- a/gtksourceview/gtksourcegutterrenderertext.c
+++ b/gtksourceview/gtksourcegutterrenderertext.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcegutterrenderertext.h"
 #include "gtksourceview-i18n.h"
 
diff --git a/gtksourceview/gtksourcegutterrenderertext.h b/gtksourceview/gtksourcegutterrenderertext.h
index e199a24..3f8f88b 100644
--- a/gtksourceview/gtksourcegutterrenderertext.h
+++ b/gtksourceview/gtksourcegutterrenderertext.h
@@ -56,23 +56,29 @@ struct _GtkSourceGutterRendererTextClass
        /*< public >*/
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType gtk_source_gutter_renderer_text_get_type (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutterRenderer *gtk_source_gutter_renderer_text_new (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_renderer_text_set_markup (GtkSourceGutterRendererText *renderer,
                                                  const gchar                 *markup,
                                                  gint                         length);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_renderer_text_set_text (GtkSourceGutterRendererText *renderer,
                                                const gchar                 *text,
                                                gint                         length);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_renderer_text_measure (GtkSourceGutterRendererText *renderer,
                                               const gchar                 *text,
                                               gint                        *width,
                                               gint                        *height);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void gtk_source_gutter_renderer_text_measure_markup (GtkSourceGutterRendererText *renderer,
                                                      const gchar                 *markup,
                                                      gint                        *width,
diff --git a/gtksourceview/gtksourceiter.c b/gtksourceview/gtksourceiter.c
index 807e8e4..20c5242 100644
--- a/gtksourceview/gtksourceiter.c
+++ b/gtksourceview/gtksourceiter.c
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include "gtksourceiter.h"
+
 /* GtkTextIter functions. Contains forward/backward functions for word
  * movements, with custom word boundaries that are used for word selection
  * (double-click) and cursor movements (Ctrl+left, Ctrl+right, etc).  The
@@ -32,8 +34,6 @@
  * https://bugzilla.gnome.org/show_bug.cgi?id=111503
  */
 
-#include "gtksourceiter.h"
-
 /* Go to the end of the next or current "full word". A full word is a group of
  * non-blank chars.
  * In other words, this function is the same as the 'E' Vim command.
diff --git a/gtksourceview/gtksourcelanguage.h b/gtksourceview/gtksourcelanguage.h
index bab8cb2..df49c03 100644
--- a/gtksourceview/gtksourcelanguage.h
+++ b/gtksourceview/gtksourcelanguage.h
@@ -54,28 +54,39 @@ struct _GtkSourceLanguageClass
        void (*_gtk_source_reserved2) (void);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType            gtk_source_language_get_type          (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar     *gtk_source_language_get_id            (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar     *gtk_source_language_get_name          (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar     *gtk_source_language_get_section       (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean         gtk_source_language_get_hidden        (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar     *gtk_source_language_get_metadata      (GtkSourceLanguage *language,
                                                         const gchar       *name);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar          **gtk_source_language_get_mime_types    (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar          **gtk_source_language_get_globs         (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar          **gtk_source_language_get_style_ids     (GtkSourceLanguage *language);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar    *gtk_source_language_get_style_name     (GtkSourceLanguage *language,
                                                         const gchar       *style_id);
 
+GTK_SOURCE_AVAILABLE_IN_3_4
 const gchar    *gtk_source_language_get_style_fallback (GtkSourceLanguage *language,
                                                         const gchar       *style_id);
 
diff --git a/gtksourceview/gtksourcelanguagemanager.h b/gtksourceview/gtksourcelanguagemanager.h
index 5687621..3dbacba 100644
--- a/gtksourceview/gtksourcelanguagemanager.h
+++ b/gtksourceview/gtksourcelanguagemanager.h
@@ -55,30 +55,34 @@ struct _GtkSourceLanguageManagerClass
        void (*_gtk_source_reserved4) (void);
 };
 
-
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                    gtk_source_language_manager_get_type                  (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceLanguageManager *gtk_source_language_manager_new                      (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceLanguageManager *gtk_source_language_manager_get_default              (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar * const *    gtk_source_language_manager_get_search_path           (GtkSourceLanguageManager 
*lm);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_language_manager_set_search_path           (GtkSourceLanguageManager *lm,
                                                                                 gchar                   
**dirs);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar * const *    gtk_source_language_manager_get_language_ids          (GtkSourceLanguageManager 
*lm);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceLanguage       *gtk_source_language_manager_get_language              (GtkSourceLanguageManager *lm,
                                                                                 const gchar              
*id);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceLanguage       *gtk_source_language_manager_guess_language            (GtkSourceLanguageManager *lm,
                                                                                 const gchar              
*filename,
                                                                                 const gchar              
*content_type);
 
-
-
 G_END_DECLS
 
 #endif /* __GTK_SOURCE_LANGUAGE_MANAGER_H__ */
-
diff --git a/gtksourceview/gtksourcemap.c b/gtksourceview/gtksourcemap.c
index 25ff201..2e7265e 100644
--- a/gtksourceview/gtksourcemap.c
+++ b/gtksourceview/gtksourcemap.c
@@ -18,6 +18,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcemap.h"
 #include <string.h>
 #include "gtksourcebuffer.h"
diff --git a/gtksourceview/gtksourcemap.h b/gtksourceview/gtksourcemap.h
index 468f356..500016a 100644
--- a/gtksourceview/gtksourcemap.h
+++ b/gtksourceview/gtksourcemap.h
@@ -49,13 +49,17 @@ struct _GtkSourceMapClass
        gpointer padding[10];
 };
 
-GType                    gtk_source_map_get_type       (void);
+GTK_SOURCE_AVAILABLE_IN_3_18
+GType                   gtk_source_map_get_type        (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 GtkWidget              *gtk_source_map_new             (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 void                    gtk_source_map_set_view        (GtkSourceMap  *map,
-                                                         GtkSourceView *view);
+                                                        GtkSourceView *view);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 GtkSourceView          *gtk_source_map_get_view        (GtkSourceMap  *map);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcemark.c b/gtksourceview/gtksourcemark.c
index 64af0d8..f01f52a 100644
--- a/gtksourceview/gtksourcemark.c
+++ b/gtksourceview/gtksourcemark.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcemark.h"
 #include "gtksourcebuffer.h"
 #include "gtksourcebuffer-private.h"
diff --git a/gtksourceview/gtksourcemark.h b/gtksourceview/gtksourcemark.h
index 02e16e9..9c1c728 100644
--- a/gtksourceview/gtksourcemark.h
+++ b/gtksourceview/gtksourcemark.h
@@ -54,15 +54,21 @@ struct _GtkSourceMarkClass
        void (*_gtk_source_reserved2) (void);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType           gtk_source_mark_get_type (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMark   *gtk_source_mark_new           (const gchar    *name,
                                                 const gchar    *category);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar    *gtk_source_mark_get_category   (GtkSourceMark  *mark);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMark  *gtk_source_mark_next           (GtkSourceMark  *mark,
                                                 const gchar    *category);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMark  *gtk_source_mark_prev           (GtkSourceMark  *mark,
                                                 const gchar    *category);
 
diff --git a/gtksourceview/gtksourcemarkattributes.c b/gtksourceview/gtksourcemarkattributes.c
index 1214726..ba693d4 100644
--- a/gtksourceview/gtksourcemarkattributes.c
+++ b/gtksourceview/gtksourcemarkattributes.c
@@ -20,6 +20,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcemarkattributes.h"
 #include "gtksourcemark.h"
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourcemarkattributes.h b/gtksourceview/gtksourcemarkattributes.h
index 042c2e6..3e173fe 100644
--- a/gtksourceview/gtksourcemarkattributes.h
+++ b/gtksourceview/gtksourcemarkattributes.h
@@ -56,42 +56,58 @@ struct _GtkSourceMarkAttributesClass
        /*< public >*/
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType gtk_source_mark_attributes_get_type (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMarkAttributes *gtk_source_mark_attributes_new (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void             gtk_source_mark_attributes_set_background      (GtkSourceMarkAttributes *attributes,
                                                                  const GdkRGBA           *background);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean         gtk_source_mark_attributes_get_background      (GtkSourceMarkAttributes *attributes,
                                                                  GdkRGBA                 *background);
 
-G_DEPRECATED
+GTK_SOURCE_DEPRECATED_IN_3_10
 void             gtk_source_mark_attributes_set_stock_id        (GtkSourceMarkAttributes *attributes,
                                                                  const gchar             *stock_id);
 
-G_DEPRECATED
+GTK_SOURCE_DEPRECATED_IN_3_10
 const gchar     *gtk_source_mark_attributes_get_stock_id        (GtkSourceMarkAttributes *attributes);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void             gtk_source_mark_attributes_set_icon_name       (GtkSourceMarkAttributes *attributes,
                                                                  const gchar             *icon_name);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar     *gtk_source_mark_attributes_get_icon_name       (GtkSourceMarkAttributes *attributes);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void             gtk_source_mark_attributes_set_gicon           (GtkSourceMarkAttributes *attributes,
                                                                  GIcon                   *gicon);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 GIcon           *gtk_source_mark_attributes_get_gicon           (GtkSourceMarkAttributes *attributes);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void             gtk_source_mark_attributes_set_pixbuf          (GtkSourceMarkAttributes *attributes,
                                                                  const GdkPixbuf         *pixbuf);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 const GdkPixbuf *gtk_source_mark_attributes_get_pixbuf          (GtkSourceMarkAttributes *attributes);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const GdkPixbuf *gtk_source_mark_attributes_render_icon         (GtkSourceMarkAttributes *attributes,
                                                                  GtkWidget               *widget,
                                                                  gint                   size);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar           *gtk_source_mark_attributes_get_tooltip_text    (GtkSourceMarkAttributes *attributes,
                                                                  GtkSourceMark           *mark);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar           *gtk_source_mark_attributes_get_tooltip_markup  (GtkSourceMarkAttributes *attributes,
                                                                  GtkSourceMark           *mark);
 
diff --git a/gtksourceview/gtksourcepixbufhelper.c b/gtksourceview/gtksourcepixbufhelper.c
index 99dd6b2..57e4a10 100644
--- a/gtksourceview/gtksourcepixbufhelper.c
+++ b/gtksourceview/gtksourcepixbufhelper.c
@@ -19,7 +19,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-
 #include "gtksourcepixbufhelper.h"
 
 typedef enum
diff --git a/gtksourceview/gtksourceprintcompositor.h b/gtksourceview/gtksourceprintcompositor.h
index 5bd18c5..d4f2ea1 100644
--- a/gtksourceview/gtksourceprintcompositor.h
+++ b/gtksourceview/gtksourceprintcompositor.h
@@ -54,115 +54,164 @@ struct _GtkSourcePrintCompositorClass
        void (*_gtk_source_reserved2) (void);
 };
 
-
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                    gtk_source_print_compositor_get_type          (void) G_GNUC_CONST;
 
-/* Constructors
- */
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourcePrintCompositor *gtk_source_print_compositor_new              (GtkSourceBuffer          *buffer);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourcePrintCompositor *gtk_source_print_compositor_new_from_view    (GtkSourceView            *view);
 
-/* Properties */
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceBuffer         *gtk_source_print_compositor_get_buffer        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_tab_width     (GtkSourcePrintCompositor *compositor,
                                                                         guint                     width);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint                    gtk_source_print_compositor_get_tab_width     (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_wrap_mode     (GtkSourcePrintCompositor *compositor,
                                                                         GtkWrapMode               wrap_mode);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkWrapMode              gtk_source_print_compositor_get_wrap_mode     (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_highlight_syntax
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         gboolean                  highlight);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                 gtk_source_print_compositor_get_highlight_syntax
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_print_line_numbers
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         guint                     interval);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint                    gtk_source_print_compositor_get_print_line_numbers
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_body_font_name
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         const gchar              *font_name);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                   *gtk_source_print_compositor_get_body_font_name
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_line_numbers_font_name
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         const gchar              *font_name);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                   *gtk_source_print_compositor_get_line_numbers_font_name
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_header_font_name
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         const gchar              *font_name);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                   *gtk_source_print_compositor_get_header_font_name
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_footer_font_name
                                                                        (GtkSourcePrintCompositor *compositor,
                                                                         const gchar              *font_name);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gchar                   *gtk_source_print_compositor_get_footer_font_name
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gdouble                          gtk_source_print_compositor_get_top_margin    (GtkSourcePrintCompositor 
*compositor,
                                                                         GtkUnit                   unit);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_top_margin    (GtkSourcePrintCompositor *compositor,
                                                                         gdouble                   margin,
                                                                         GtkUnit                   unit);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gdouble                          gtk_source_print_compositor_get_bottom_margin (GtkSourcePrintCompositor 
*compositor,
                                                                         GtkUnit                   unit);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_bottom_margin (GtkSourcePrintCompositor *compositor,
                                                                         gdouble                   margin,
                                                                         GtkUnit                   unit);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gdouble                          gtk_source_print_compositor_get_left_margin   (GtkSourcePrintCompositor 
*compositor,
                                                                         GtkUnit                   unit);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_left_margin   (GtkSourcePrintCompositor *compositor,
                                                                         gdouble                   margin,
                                                                         GtkUnit                   unit);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gdouble                          gtk_source_print_compositor_get_right_margin  (GtkSourcePrintCompositor 
*compositor,
                                                                         GtkUnit                   unit);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_right_margin  (GtkSourcePrintCompositor *compositor,
                                                                         gdouble                   margin,
                                                                         GtkUnit                   unit);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_print_header  (GtkSourcePrintCompositor *compositor,
                                                                         gboolean                  print);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                 gtk_source_print_compositor_get_print_header  (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_print_footer  (GtkSourcePrintCompositor *compositor,
                                                                         gboolean                  print);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                 gtk_source_print_compositor_get_print_footer  (GtkSourcePrintCompositor 
*compositor);
 
-/* format strings are strftime like */
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_header_format (GtkSourcePrintCompositor *compositor,
                                                                         gboolean                  separator,
                                                                         const gchar              *left,
                                                                         const gchar              *center,
                                                                         const gchar              *right);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_set_footer_format (GtkSourcePrintCompositor *compositor,
                                                                         gboolean                  separator,
                                                                         const gchar              *left,
                                                                         const gchar              *center,
                                                                         const gchar              *right);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint                     gtk_source_print_compositor_get_n_pages       (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                 gtk_source_print_compositor_paginate          (GtkSourcePrintCompositor *compositor,
                                                                         GtkPrintContext          *context);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gdouble                          gtk_source_print_compositor_get_pagination_progress
                                                                        (GtkSourcePrintCompositor 
*compositor);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                     gtk_source_print_compositor_draw_page         (GtkSourcePrintCompositor *compositor,
                                                                         GtkPrintContext          *context,
                                                                         gint                      page_nr);
@@ -170,6 +219,3 @@ void                          gtk_source_print_compositor_draw_page         
(GtkSourcePrintCompositor *compo
 G_END_DECLS
 
 #endif /* __GTK_SOURCE_PRINT_COMPOSITOR_H__ */
-
-
-
diff --git a/gtksourceview/gtksourceregex.c b/gtksourceview/gtksourceregex.c
index 6635444..3934d19 100644
--- a/gtksourceview/gtksourceregex.c
+++ b/gtksourceview/gtksourceregex.c
@@ -20,6 +20,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <string.h>
 #include <glib.h>
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourcesearchcontext.c b/gtksourceview/gtksourcesearchcontext.c
index 5fd79ed..d7f8f48 100644
--- a/gtksourceview/gtksourcesearchcontext.c
+++ b/gtksourceview/gtksourcesearchcontext.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcesearchcontext.h"
 #include "gtksourcesearchsettings.h"
 #include "gtksourcebuffer.h"
diff --git a/gtksourceview/gtksourcesearchcontext.h b/gtksourceview/gtksourcesearchcontext.h
index c8ce2e0..0e8417f 100644
--- a/gtksourceview/gtksourcesearchcontext.h
+++ b/gtksourceview/gtksourcesearchcontext.h
@@ -51,70 +51,89 @@ struct _GtkSourceSearchContextClass
        gpointer padding[10];
 };
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 GType                   gtk_source_search_context_get_type                     (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 GtkSourceSearchContext *gtk_source_search_context_new                          (GtkSourceBuffer         
*buffer,
                                                                                 GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 GtkSourceBuffer                *gtk_source_search_context_get_buffer                   
(GtkSourceSearchContext  *search);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 GtkSourceSearchSettings        *gtk_source_search_context_get_settings                 
(GtkSourceSearchContext  *search);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 void                    gtk_source_search_context_set_settings                 (GtkSourceSearchContext  
*search,
                                                                                 GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_get_highlight                (GtkSourceSearchContext  
*search);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 void                    gtk_source_search_context_set_highlight                (GtkSourceSearchContext  
*search,
                                                                                 gboolean                 
highlight);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GtkSourceStyle         *gtk_source_search_context_get_match_style              (GtkSourceSearchContext  
*search);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void                    gtk_source_search_context_set_match_style              (GtkSourceSearchContext  
*search,
                                                                                 GtkSourceStyle          
*match_style);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 GError                 *gtk_source_search_context_get_regex_error              (GtkSourceSearchContext  
*search);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gint                    gtk_source_search_context_get_occurrences_count        (GtkSourceSearchContext  
*search);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gint                    gtk_source_search_context_get_occurrence_position      (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*match_start,
                                                                                 const GtkTextIter       
*match_end);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_forward                      (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*iter,
                                                                                 GtkTextIter             
*match_start,
                                                                                 GtkTextIter             
*match_end);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 void                    gtk_source_search_context_forward_async                (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*iter,
                                                                                 GCancellable            
*cancellable,
                                                                                 GAsyncReadyCallback      
callback,
                                                                                 gpointer                 
user_data);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_forward_finish               (GtkSourceSearchContext  
*search,
                                                                                 GAsyncResult            
*result,
                                                                                 GtkTextIter             
*match_start,
                                                                                 GtkTextIter             
*match_end,
                                                                                 GError                 
**error);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_backward                     (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*iter,
                                                                                 GtkTextIter             
*match_start,
                                                                                 GtkTextIter             
*match_end);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 void                    gtk_source_search_context_backward_async               (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*iter,
                                                                                 GCancellable            
*cancellable,
                                                                                 GAsyncReadyCallback      
callback,
                                                                                 gpointer                 
user_data);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_backward_finish              (GtkSourceSearchContext  
*search,
                                                                                 GAsyncResult            
*result,
                                                                                 GtkTextIter             
*match_start,
                                                                                 GtkTextIter             
*match_end,
                                                                                 GError                 
**error);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gboolean                gtk_source_search_context_replace                      (GtkSourceSearchContext  
*search,
                                                                                 const GtkTextIter       
*match_start,
                                                                                 const GtkTextIter       
*match_end,
@@ -122,6 +141,7 @@ gboolean             gtk_source_search_context_replace                      
(GtkSourceSearchContext  *search,
                                                                                 gint                     
replace_length,
                                                                                 GError                 
**error);
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 guint                   gtk_source_search_context_replace_all                  (GtkSourceSearchContext  
*search,
                                                                                 const gchar             
*replace,
                                                                                 gint                     
replace_length,
diff --git a/gtksourceview/gtksourcesearchsettings.c b/gtksourceview/gtksourcesearchsettings.c
index 51fc411..9aaf36d 100644
--- a/gtksourceview/gtksourcesearchsettings.c
+++ b/gtksourceview/gtksourcesearchsettings.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcesearchsettings.h"
 #include "gtksourceview-i18n.h"
 
diff --git a/gtksourceview/gtksourcesearchsettings.h b/gtksourceview/gtksourcesearchsettings.h
index 56f727d..f13e7f4 100644
--- a/gtksourceview/gtksourcesearchsettings.h
+++ b/gtksourceview/gtksourcesearchsettings.h
@@ -51,33 +51,45 @@ struct _GtkSourceSearchSettingsClass
        gpointer padding[10];
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                   gtk_source_search_settings_get_type                    (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceSearchSettings *gtk_source_search_settings_new                                (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_search_settings_set_search_text             (GtkSourceSearchSettings 
*settings,
                                                                                 const gchar             
*search_text);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar            *gtk_source_search_settings_get_search_text             (GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_search_settings_set_case_sensitive          (GtkSourceSearchSettings 
*settings,
                                                                                 gboolean                 
case_sensitive);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_search_settings_get_case_sensitive          (GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_search_settings_set_at_word_boundaries      (GtkSourceSearchSettings 
*settings,
                                                                                 gboolean                 
at_word_boundaries);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_search_settings_get_at_word_boundaries      (GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_search_settings_set_wrap_around             (GtkSourceSearchSettings 
*settings,
                                                                                 gboolean                 
wrap_around);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_search_settings_get_wrap_around             (GtkSourceSearchSettings 
*settings);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_search_settings_set_regex_enabled           (GtkSourceSearchSettings 
*settings,
                                                                                 gboolean                 
regex_enabled);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean                gtk_source_search_settings_get_regex_enabled           (GtkSourceSearchSettings 
*settings);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcestyle.c b/gtksourceview/gtksourcestyle.c
index 6b2327c..1fffe5f 100644
--- a/gtksourceview/gtksourcestyle.c
+++ b/gtksourceview/gtksourcestyle.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcestyle.h"
 #include "gtksourcestyle-private.h"
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourcestyle.h b/gtksourceview/gtksourcestyle.h
index 58fdd00..f077954 100644
--- a/gtksourceview/gtksourcestyle.h
+++ b/gtksourceview/gtksourcestyle.h
@@ -36,8 +36,10 @@ G_BEGIN_DECLS
 
 typedef struct _GtkSourceStyleClass GtkSourceStyleClass;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType           gtk_source_style_get_type      (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyle *gtk_source_style_copy          (const GtkSourceStyle *style);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcestylescheme.c b/gtksourceview/gtksourcestylescheme.c
index 61c4bc2..fc5a948 100644
--- a/gtksourceview/gtksourcestylescheme.c
+++ b/gtksourceview/gtksourcestylescheme.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcestylescheme.h"
 #include "gtksourcestyleschememanager.h"
 #include "gtksourcestyle-private.h"
diff --git a/gtksourceview/gtksourcestylescheme.h b/gtksourceview/gtksourcestylescheme.h
index 18c2d41..f5a6dd1 100644
--- a/gtksourceview/gtksourcestylescheme.h
+++ b/gtksourceview/gtksourcestylescheme.h
@@ -52,18 +52,25 @@ struct _GtkSourceStyleSchemeClass
        void (*_gtk_source_reserved2) (void);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                   gtk_source_style_scheme_get_type                       (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar             *gtk_source_style_scheme_get_id                                (GtkSourceStyleScheme 
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar             *gtk_source_style_scheme_get_name                      (GtkSourceStyleScheme 
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar             *gtk_source_style_scheme_get_description               (GtkSourceStyleScheme 
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar * const *   gtk_source_style_scheme_get_authors                    (GtkSourceStyleScheme 
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar             *gtk_source_style_scheme_get_filename                  (GtkSourceStyleScheme 
*scheme);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyle         *gtk_source_style_scheme_get_style                      (GtkSourceStyleScheme *scheme,
                                                                                 const gchar          
*style_id);
 
diff --git a/gtksourceview/gtksourcestyleschemechooser.c b/gtksourceview/gtksourcestyleschemechooser.c
index 42f14e2..ce85d6c 100644
--- a/gtksourceview/gtksourcestyleschemechooser.c
+++ b/gtksourceview/gtksourcestyleschemechooser.c
@@ -18,7 +18,9 @@
  * along with GtkSourceView. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "gtksourcestyleschemechooser.h"
 #include "gtksourcestylescheme.h"
diff --git a/gtksourceview/gtksourcestyleschemechooser.h b/gtksourceview/gtksourcestyleschemechooser.h
index f4b2a6e..cbfdfe3 100644
--- a/gtksourceview/gtksourcestyleschemechooser.h
+++ b/gtksourceview/gtksourcestyleschemechooser.h
@@ -47,10 +47,13 @@ struct _GtkSourceStyleSchemeChooserInterface
        gpointer padding[12];
 };
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GType                     gtk_source_style_scheme_chooser_get_type               (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GtkSourceStyleScheme     *gtk_source_style_scheme_chooser_get_style_scheme       
(GtkSourceStyleSchemeChooser *chooser);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void                      gtk_source_style_scheme_chooser_set_style_scheme       
(GtkSourceStyleSchemeChooser *chooser,
                                                                                   GtkSourceStyleScheme       
 *scheme);
 
diff --git a/gtksourceview/gtksourcestyleschemechooserbutton.c 
b/gtksourceview/gtksourcestyleschemechooserbutton.c
index a1ae5a0..3cf23bd 100644
--- a/gtksourceview/gtksourcestyleschemechooserbutton.c
+++ b/gtksourceview/gtksourcestyleschemechooserbutton.c
@@ -19,6 +19,10 @@
  * along with GtkSourceView. If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcestyleschemechooserbutton.h"
 #include "gtksourcestyleschemechooser.h"
 #include "gtksourcestyleschemechooserwidget.h"
diff --git a/gtksourceview/gtksourcestyleschemechooserbutton.h 
b/gtksourceview/gtksourcestyleschemechooserbutton.h
index 441f3cf..942f767 100644
--- a/gtksourceview/gtksourcestyleschemechooserbutton.h
+++ b/gtksourceview/gtksourcestyleschemechooserbutton.h
@@ -23,6 +23,7 @@
 #define __GTK_SOURCE_STYLE_SCHEME_CHOOSER_BUTTON_H__
 
 #include <gtk/gtk.h>
+#include <gtksourceview/gtksourcetypes.h>
 
 G_BEGIN_DECLS
 
@@ -47,8 +48,10 @@ struct _GtkSourceStyleSchemeChooserButtonClass
        GtkButtonClass parent;
 };
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GType                 gtk_source_style_scheme_chooser_button_get_type              (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GtkWidget            *gtk_source_style_scheme_chooser_button_new                   (void);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcestyleschemechooserwidget.c 
b/gtksourceview/gtksourcestyleschemechooserwidget.c
index a91151c..6c66627 100644
--- a/gtksourceview/gtksourcestyleschemechooserwidget.c
+++ b/gtksourceview/gtksourcestyleschemechooserwidget.c
@@ -19,6 +19,10 @@
  * along with GtkSourceView. If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcestyleschemechooserwidget.h"
 #include "gtksourcestyleschemechooser.h"
 #include "gtksourcestylescheme.h"
diff --git a/gtksourceview/gtksourcestyleschemechooserwidget.h 
b/gtksourceview/gtksourcestyleschemechooserwidget.h
index c8041c6..6b8cba5 100644
--- a/gtksourceview/gtksourcestyleschemechooserwidget.h
+++ b/gtksourceview/gtksourcestyleschemechooserwidget.h
@@ -23,6 +23,7 @@
 #define GTK_SOURCE_STYLE_SCHEME_CHOOSER_WIDGET_H
 
 #include <gtk/gtk.h>
+#include <gtksourceview/gtksourcetypes.h>
 
 G_BEGIN_DECLS
 
@@ -47,8 +48,10 @@ struct _GtkSourceStyleSchemeChooserWidgetClass
        GtkBinClass parent;
 };
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GType        gtk_source_style_scheme_chooser_widget_get_type              (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GtkWidget   *gtk_source_style_scheme_chooser_widget_new                   (void);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcestyleschememanager.c b/gtksourceview/gtksourcestyleschememanager.c
index 81c64b8..c80278b 100644
--- a/gtksourceview/gtksourcestyleschememanager.c
+++ b/gtksourceview/gtksourcestyleschememanager.c
@@ -19,6 +19,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "gtksourcestyleschememanager.h"
 #include "gtksourcestylescheme.h"
 #include "gtksourceview-i18n.h"
diff --git a/gtksourceview/gtksourcestyleschememanager.h b/gtksourceview/gtksourcestyleschememanager.h
index 75c5816..24b19cc 100644
--- a/gtksourceview/gtksourcestyleschememanager.h
+++ b/gtksourceview/gtksourcestyleschememanager.h
@@ -55,29 +55,39 @@ struct _GtkSourceStyleSchemeManagerClass
        void (*_gtk_source_reserved4) (void);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType                   gtk_source_style_scheme_manager_get_type               (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyleSchemeManager *
                         gtk_source_style_scheme_manager_new                    (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyleSchemeManager *
                         gtk_source_style_scheme_manager_get_default            (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_style_scheme_manager_set_search_path        (GtkSourceStyleSchemeManager  
  *manager,
                                                                                 gchar                        
 **path);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_style_scheme_manager_append_search_path     (GtkSourceStyleSchemeManager  
  *manager,
                                                                                 const gchar                  
  *path);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_style_scheme_manager_prepend_search_path    (GtkSourceStyleSchemeManager  
  *manager,
                                                                                 const gchar                  
  *path);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar * const *   gtk_source_style_scheme_manager_get_search_path        (GtkSourceStyleSchemeManager  
  *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void                    gtk_source_style_scheme_manager_force_rescan           (GtkSourceStyleSchemeManager  
  *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 const gchar * const *   gtk_source_style_scheme_manager_get_scheme_ids         (GtkSourceStyleSchemeManager  
  *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceStyleScheme   *gtk_source_style_scheme_manager_get_scheme             (GtkSourceStyleSchemeManager  
  *manager,
                                                                                 const gchar                  
  *scheme_id);
 
diff --git a/gtksourceview/gtksourcetag.h b/gtksourceview/gtksourcetag.h
index f03a84f..725f98a 100644
--- a/gtksourceview/gtksourcetag.h
+++ b/gtksourceview/gtksourcetag.h
@@ -41,6 +41,7 @@ struct _GtkSourceTagClass
        gpointer padding[10];
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkTextTag *   gtk_source_tag_new              (const gchar *name);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourcetypes.h b/gtksourceview/gtksourcetypes.h
index a851fe8..ee7c84e 100644
--- a/gtksourceview/gtksourcetypes.h
+++ b/gtksourceview/gtksourcetypes.h
@@ -23,6 +23,7 @@
 #define __GTK_SOURCE_TYPES_H__
 
 #include <gio/gio.h>
+#include <gtksourceview/gtksourceversion.h>
 
 G_BEGIN_DECLS
 
diff --git a/gtksourceview/gtksourceundomanager.h b/gtksourceview/gtksourceundomanager.h
index a782799..2b6c6fe 100644
--- a/gtksourceview/gtksourceundomanager.h
+++ b/gtksourceview/gtksourceundomanager.h
@@ -56,18 +56,31 @@ struct _GtkSourceUndoManagerIface
        void     (*can_redo_changed)          (GtkSourceUndoManager *manager);
 };
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GType     gtk_source_undo_manager_get_type                  (void) G_GNUC_CONST;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean  gtk_source_undo_manager_can_undo                  (GtkSourceUndoManager *manager);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean  gtk_source_undo_manager_can_redo                  (GtkSourceUndoManager *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_undo                      (GtkSourceUndoManager *manager);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_redo                      (GtkSourceUndoManager *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *manager);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_end_not_undoable_action   (GtkSourceUndoManager *manager);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_can_undo_changed          (GtkSourceUndoManager *manager);
+
+GTK_SOURCE_AVAILABLE_IN_ALL
 void      gtk_source_undo_manager_can_redo_changed          (GtkSourceUndoManager *manager);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourceutils.h b/gtksourceview/gtksourceutils.h
index 2a39ed9..02740cc 100644
--- a/gtksourceview/gtksourceutils.h
+++ b/gtksourceview/gtksourceutils.h
@@ -23,10 +23,14 @@
 #define __GTK_SOURCE_UTILS_H__
 
 #include <glib-object.h>
+#include <gtksourceview/gtksourceversion.h>
 
 G_BEGIN_DECLS
 
+GTK_SOURCE_AVAILABLE_IN_3_10
 gchar          *gtk_source_utils_unescape_search_text          (const gchar    *text);
+
+GTK_SOURCE_AVAILABLE_IN_3_10
 gchar          *gtk_source_utils_escape_search_text            (const gchar    *text);
 
 G_END_DECLS
diff --git a/gtksourceview/gtksourceversion.h.in b/gtksourceview/gtksourceversion.h.in
index 0684d97..03d72e4 100644
--- a/gtksourceview/gtksourceversion.h.in
+++ b/gtksourceview/gtksourceversion.h.in
@@ -79,12 +79,222 @@ G_BEGIN_DECLS
        (GTK_SOURCE_MAJOR_VERSION == (major) && GTK_SOURCE_MINOR_VERSION == (minor) && \
         GTK_SOURCE_MICRO_VERSION >= (micro)))
 
+#ifndef _GTK_SOURCE_EXTERN
+#define _GTK_SOURCE_EXTERN extern
+#endif
+
+#define GTK_SOURCE_VERSION_3_0 (G_ENCODE_VERSION (3, 0))
+#define GTK_SOURCE_VERSION_3_2 (G_ENCODE_VERSION (3, 2))
+#define GTK_SOURCE_VERSION_3_4 (G_ENCODE_VERSION (3, 4))
+#define GTK_SOURCE_VERSION_3_6 (G_ENCODE_VERSION (3, 6))
+#define GTK_SOURCE_VERSION_3_8 (G_ENCODE_VERSION (3, 8))
+#define GTK_SOURCE_VERSION_3_10 (G_ENCODE_VERSION (3, 10))
+#define GTK_SOURCE_VERSION_3_12 (G_ENCODE_VERSION (3, 12))
+#define GTK_SOURCE_VERSION_3_14 (G_ENCODE_VERSION (3, 14))
+#define GTK_SOURCE_VERSION_3_16 (G_ENCODE_VERSION (3, 16))
+#define GTK_SOURCE_VERSION_3_18 (G_ENCODE_VERSION (3, 18))
+#define GTK_SOURCE_VERSION_3_20 (G_ENCODE_VERSION (3, 20))
+
+#if (GTK_SOURCE_MINOR_VERSION % 2)
+#define GTK_SOURCE_VERSION_CUR_STABLE (G_ENCODE_VERSION (GTK_SOURCE_MAJOR_VERSION, GTK_SOURCE_MINOR_VERSION 
+ 1))
+#else
+#define GTK_SOURCE_VERSION_CUR_STABLE (G_ENCODE_VERSION (GTK_SOURCE_MAJOR_VERSION, GTK_SOURCE_MINOR_VERSION))
+#endif
+
+#if (GTK_SOURCE_MINOR_VERSION % 2)
+#define GTK_SOURCE_VERSION_PREV_STABLE (G_ENCODE_VERSION (GTK_SOURCE_MAJOR_VERSION, GTK_SOURCE_MINOR_VERSION 
- 1))
+#else
+#define GTK_SOURCE_VERSION_PREV_STABLE (G_ENCODE_VERSION (GTK_SOURCE_MAJOR_VERSION, GTK_SOURCE_MINOR_VERSION 
- 2))
+#endif
+
+#ifndef GTK_SOURCE_VERSION_MIN_REQUIRED
+#define GTK_SOURCE_VERSION_MIN_REQUIRED (GTK_SOURCE_VERSION_CUR_STABLE)
+#endif
+
+#ifndef GTK_SOURCE_VERSION_MAX_ALLOWED
+#if GTK_SOURCE_VERSION_MIN_REQUIRED > GTK_SOURCE_VERSION_PREV_STABLE
+#define GTK_SOURCE_VERSION_MAX_ALLOWED  GTK_SOURCE_VERSION_MIN_REQUIRED
+#else
+#define GTK_SOURCE_VERSION_MAX_ALLOWED GTK_SOURCE_VERSION_CUR_STABLE
+#endif
+#endif
+
+/* sanity checks */
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_MIN_REQUIRED
+#error "GTK_SOURCE_VERSION_MAX_ALLOWED must be >= GTK_SOURCE_VERSION_MIN_REQUIRED"
+#endif
+#if GTK_SOURCE_VERSION_MIN_REQUIRED < GTK_SOURCE_VERSION_3_0
+#error "GTK_SOURCE_VERSION_MIN_REQUIRED must be >= GTK_SOURCE_VERSION_3_0"
+#endif
+
+#define GTK_SOURCE_AVAILABLE_IN_ALL _GTK_SOURCE_EXTERN
+
+/* Every new stable minor release should add a set of macros here */
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_0
+#define GTK_SOURCE_DEPRECATED_IN_3_0 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_0_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_0 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_0_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_0
+#define GTK_SOURCE_AVAILABLE_IN_3_0 G_UNAVAILABLE(3, 0) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_0 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_2
+#define GTK_SOURCE_DEPRECATED_IN_3_2 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_2_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_2 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_2_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_2
+#define GTK_SOURCE_AVAILABLE_IN_3_2 G_UNAVAILABLE(3, 2) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_2 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_4
+#define GTK_SOURCE_DEPRECATED_IN_3_4 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_4_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_4 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_4_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_4
+#define GTK_SOURCE_AVAILABLE_IN_3_4 G_UNAVAILABLE(3, 4) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_4 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_6
+#define GTK_SOURCE_DEPRECATED_IN_3_6 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_6_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_6 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_6_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_6
+#define GTK_SOURCE_AVAILABLE_IN_3_6 G_UNAVAILABLE(3, 6) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_6 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_8
+#define GTK_SOURCE_DEPRECATED_IN_3_8 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_8_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_8 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_8_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_8
+#define GTK_SOURCE_AVAILABLE_IN_3_8 G_UNAVAILABLE(3, 8) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_8 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_10
+#define GTK_SOURCE_DEPRECATED_IN_3_10 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_10_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_10 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_10_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_10
+#define GTK_SOURCE_AVAILABLE_IN_3_10 G_UNAVAILABLE(3, 10) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_10 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_12
+#define GTK_SOURCE_DEPRECATED_IN_3_12 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_12_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_12 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_12_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_12
+#define GTK_SOURCE_AVAILABLE_IN_3_12 G_UNAVAILABLE(3, 12) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_12 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_14
+#define GTK_SOURCE_DEPRECATED_IN_3_14 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_14_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_14 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_14_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_14
+#define GTK_SOURCE_AVAILABLE_IN_3_14 G_UNAVAILABLE(3, 14) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_14 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_16
+#define GTK_SOURCE_DEPRECATED_IN_3_16 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_16_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_16 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_16_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_16
+#define GTK_SOURCE_AVAILABLE_IN_3_16 G_UNAVAILABLE(3, 16) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_16 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_18
+#define GTK_SOURCE_DEPRECATED_IN_3_18 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_18_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_18 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_18_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_18
+#define GTK_SOURCE_AVAILABLE_IN_3_18 G_UNAVAILABLE(3, 10) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_18 _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MIN_REQUIRED >= GTK_SOURCE_VERSION_3_20
+#define GTK_SOURCE_DEPRECATED_IN_3_20 G_DEPRECATED
+#define GTK_SOURCE_DEPRECATED_IN_3_20_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define GTK_SOURCE_DEPRECATED_IN_3_20 _GTK_SOURCE_EXTERN
+#define GTK_SOURCE_DEPRECATED_IN_3_20_FOR(f) _GTK_SOURCE_EXTERN
+#endif
+
+#if GTK_SOURCE_VERSION_MAX_ALLOWED < GTK_SOURCE_VERSION_3_20
+#define GTK_SOURCE_AVAILABLE_IN_3_20 G_UNAVAILABLE(3, 10) _GTK_SOURCE_EXTERN
+#else
+#define GTK_SOURCE_AVAILABLE_IN_3_20 _GTK_SOURCE_EXTERN
+#endif
+
+GTK_SOURCE_AVAILABLE_IN_3_20
 guint          gtk_source_get_major_version            (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_20
 guint          gtk_source_get_minor_version            (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_20
 guint          gtk_source_get_micro_version            (void);
 
+GTK_SOURCE_AVAILABLE_IN_3_20
 gboolean       gtk_source_check_version                (guint major,
                                                         guint minor,
                                                         guint micro);
diff --git a/gtksourceview/gtksourceview.h b/gtksourceview/gtksourceview.h
index 2e2e9db..9e044e6 100644
--- a/gtksourceview/gtksourceview.h
+++ b/gtksourceview/gtksourceview.h
@@ -127,116 +127,152 @@ typedef enum
        GTK_SOURCE_DRAW_SPACES_ALL        = 0x7f
 } GtkSourceDrawSpacesFlags;
 
+GTK_SOURCE_AVAILABLE_IN_ALL
+GType           gtk_source_view_get_type               (void) G_GNUC_CONST;
 
-GType           gtk_source_view_get_type               (void) G_GNUC_CONST;
-
-GtkWidget      *gtk_source_view_new                    (void);
+GTK_SOURCE_AVAILABLE_IN_ALL
+GtkWidget      *gtk_source_view_new                    (void);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkWidget      *gtk_source_view_new_with_buffer        (GtkSourceBuffer *buffer);
 
-void            gtk_source_view_set_show_line_numbers  (GtkSourceView   *view,
+GTK_SOURCE_AVAILABLE_IN_ALL
+void            gtk_source_view_set_show_line_numbers  (GtkSourceView   *view,
                                                         gboolean         show);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_show_line_numbers  (GtkSourceView   *view);
 
-void            gtk_source_view_set_tab_width          (GtkSourceView   *view,
+GTK_SOURCE_AVAILABLE_IN_ALL
+void            gtk_source_view_set_tab_width          (GtkSourceView   *view,
                                                         guint            width);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint            gtk_source_view_get_tab_width          (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_indent_width       (GtkSourceView   *view,
                                                         gint             width);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gint            gtk_source_view_get_indent_width       (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_auto_indent        (GtkSourceView   *view,
                                                         gboolean         enable);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_auto_indent        (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_insert_spaces_instead_of_tabs
                                                        (GtkSourceView   *view,
                                                         gboolean         enable);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_insert_spaces_instead_of_tabs
                                                        (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_indent_on_tab      (GtkSourceView   *view,
                                                         gboolean         enable);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_indent_on_tab      (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void            gtk_source_view_indent_lines           (GtkSourceView   *view,
                                                         GtkTextIter     *start,
                                                         GtkTextIter     *end);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void            gtk_source_view_unindent_lines         (GtkSourceView   *view,
                                                         GtkTextIter     *start,
                                                         GtkTextIter     *end);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_highlight_current_line
                                                        (GtkSourceView   *view,
                                                         gboolean         highlight);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_highlight_current_line
                                                        (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_show_right_margin  (GtkSourceView   *view,
                                                         gboolean         show);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_show_right_margin  (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_right_margin_position
                                                        (GtkSourceView   *view,
                                                         guint            pos);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint           gtk_source_view_get_right_margin_position
                                                        (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_show_line_marks    (GtkSourceView   *view,
                                                         gboolean         show);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 gboolean        gtk_source_view_get_show_line_marks    (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void             gtk_source_view_set_mark_attributes    (GtkSourceView           *view,
                                                          const gchar             *category,
                                                          GtkSourceMarkAttributes *attributes,
                                                          gint                     priority);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceMarkAttributes *
                  gtk_source_view_get_mark_attributes    (GtkSourceView           *view,
                                                          const gchar             *category,
                                                          gint                    *priority);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 void            gtk_source_view_set_smart_backspace    (GtkSourceView   *view,
                                                         gboolean        smart_backspace);
 
+GTK_SOURCE_AVAILABLE_IN_3_18
 gboolean        gtk_source_view_get_smart_backspace    (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_smart_home_end     (GtkSourceView             *view,
                                                         GtkSourceSmartHomeEndType  smart_home_end);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceSmartHomeEndType
                 gtk_source_view_get_smart_home_end     (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 void            gtk_source_view_set_draw_spaces        (GtkSourceView            *view,
                                                         GtkSourceDrawSpacesFlags  flags);
 
 GtkSourceDrawSpacesFlags
                 gtk_source_view_get_draw_spaces        (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 guint           gtk_source_view_get_visual_column      (GtkSourceView     *view,
                                                         const GtkTextIter *iter);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceCompletion *
                 gtk_source_view_get_completion         (GtkSourceView   *view);
 
+GTK_SOURCE_AVAILABLE_IN_ALL
 GtkSourceGutter *gtk_source_view_get_gutter            (GtkSourceView     *view,
                                                          GtkTextWindowType  window_type);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 void            gtk_source_view_set_background_pattern (GtkSourceView                  *view,
                                                          GtkSourceBackgroundPatternType  background_pattern);
 
+GTK_SOURCE_AVAILABLE_IN_3_16
 GtkSourceBackgroundPatternType
                 gtk_source_view_get_background_pattern (GtkSourceView   *view);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]