[geany/geany] d8ad36: Merge branch 'master' of https://github.com/geany/geany into spawn

Dimitar Zhekov git-noreply at xxxxx
Fri May 15 17:07:47 UTC 2015


Branch:      refs/heads/master
Author:      Dimitar Zhekov <dimitar.zhekov at gmail.com>
Committer:   Dimitar Zhekov <dimitar.zhekov at gmail.com>
Date:        Sat, 18 Apr 2015 09:31:41 UTC
Commit:      d8ad369f8edf2468c31e3391c43648af7fe3d518
             https://github.com/geany/geany/commit/d8ad369f8edf2468c31e3391c43648af7fe3d518

Log Message:
-----------
Merge branch 'master' of https://github.com/geany/geany into spawn

Conflicts:
	src/build.c
	src/tools.c


Modified Paths:
--------------
    .gitignore
    HACKING
    README
    configure.ac
    data/Makefile.am
    data/filetype_extensions.conf
    data/filetypes.html
    data/filetypes.zephir
    data/geany.glade
    doc/Doxyfile.in
    doc/Makefile.am
    doc/geany.txt
    doc/plugins.dox
    doc/pluginsignals.c
    doc/pluginsymbols.c
    geany.nsi
    geany.pc.in
    icons/16x16/geany.png
    icons/32x32/Makefile.am
    icons/32x32/geany.png
    icons/48x48/geany.png
    icons/geany.ico
    icons/scalable/geany.svg
    m4/geany-binreloc.m4
    m4/geany-lib.m4
    m4/geany-mac-integration.m4
    plugins/Makefile.am
    plugins/geanyfunctions.h
    plugins/geanyplugin.h
    plugins/genapi.py
    plugins/htmlchars.c
    plugins/splitwindow.c
    po/POTFILES.in
    po/de.po
    po/fr.po
    po/pt.po
    scintilla/Makefile.am
    scintilla/gtk/ScintillaGTK.cxx
    scintilla/gtk/makefile.win32
    scintilla/scintilla_changes.patch
    scintilla/src/Catalogue.cxx
    src/Makefile.am
    src/build.c
    src/callbacks.c
    src/callbacks.h
    src/dialogs.c
    src/document.c
    src/editor.c
    src/encodings.c
    src/filetypes.c
    src/filetypes.h
    src/gb.c
    src/gtkcompat.h
    src/highlighting.c
    src/highlightingmappings.h
    src/keybindings.c
    src/libmain.c
    src/log.c
    src/main.c
    src/main.h
    src/makefile.win32
    src/msgwindow.c
    src/navqueue.c
    src/plugindata.h
    src/plugins.c
    src/pluginutils.c
    src/printing.c
    src/project.c
    src/sciwrappers.c
    src/search.c
    src/sidebar.c
    src/stash.c
    src/stash.h
    src/symbols.c
    src/templates.c
    src/toolbar.c
    src/ui_utils.c
    src/utils.c
    src/utils.h
    src/vte.c
    tagmanager/ctags/Makefile.am
    tagmanager/ctags/ctags.c
    tagmanager/ctags/erlang.c
    tagmanager/ctags/make.c
    tagmanager/ctags/makefile.win32
    tagmanager/ctags/parsers.h
    tagmanager/ctags/php.c
    tagmanager/mio/Makefile.am
    tagmanager/src/Makefile.am
    tagmanager/src/makefile.win32
    tagmanager/src/tm_parser.h
    tagmanager/src/tm_source_file.c
    tagmanager/src/tm_workspace.c
    tests/ctags/Makefile.am
    tests/ctags/continuation.mak
    tests/ctags/continuation.mak.tags
    tests/ctags/maze.erl.tags
    tests/ctags/return-hint.zep
    tests/ctags/return-hint.zep.tags
    tests/ctags/simple.zep
    tests/ctags/simple.zep.tags
    tests/ctags/test.erl
    tests/ctags/test.erl.tags
    wscript

Modified: .gitignore
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -92,6 +92,7 @@ Makefile.in
 # /src/
 #-----------------------------------------------------------------------
 /src/geany
+/src/signallist.i
 
 #-----------------------------------------------------------------------
 # /doc/


Modified: HACKING
10 lines changed, 5 insertions(+), 5 deletions(-)
===================================================================
@@ -167,16 +167,16 @@ unmanageable diffs.
 
 GTK versions & API documentation
 --------------------------------
-Geany requires GTK >= 2.16 and GLib >= 2.20. API symbols from newer
+Geany requires GTK >= 2.24 and GLib >= 2.28. API symbols from newer
 GTK/GLib versions should be avoided or made optional to keep the source
 code building on older systems.
 
-The official GTK 2.16 API documentation may not be available online
+The official GTK 2.24 API documentation may not be available online
 anymore, so we put it on http://www.geany.org/manual/gtk/. There
 is also a tarball with all available files for download and use with
 devhelp.
 
-Using the 2.16 API documentation of the GTK libs (including GLib, GDK
+Using the 2.24 API documentation of the GTK libs (including GLib, GDK
 and Pango) has the advantages that you don't get confused by any
 newer API additions and you don't have to take care about whether
 you can use them or not.
@@ -187,8 +187,8 @@ Coding
   them down into smaller static functions where possible. This makes code
   much easier to read and maintain.
 * Use GLib types and functions - gint not int, g_free() not free().
-* Your code should build against GLib 2.20 and GTK 2.16. At least for the
-  moment, we want to keep the minimum requirement for GTK at 2.16 (of
+* Your code should build against GLib 2.27.3 and GTK 2.24. At least for the
+  moment, we want to keep the minimum requirement for GTK at 2.24 (of
   course, you can use the GTK_CHECK_VERSION macro to protect code using
   later versions).
 * Variables should be declared before statements. You can use


Modified: README
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -28,8 +28,8 @@ The basic features of Geany are:
 
 Requirements
 ------------
-For compiling Geany yourself, you will need the GTK (>= 2.16.0)
-libraries and header files. You will also need its dependency libraries
+For compiling Geany yourself, you will need the GTK2 (>= 2.24) or
+GTK3 libraries and header files. You will also need its dependency libraries
 and header files, such as Pango, Glib and ATK. All these files are
 available at http://www.gtk.org.
 


Modified: configure.ac
8 lines changed, 6 insertions(+), 2 deletions(-)
===================================================================
@@ -24,6 +24,7 @@ fi
 AC_USE_SYSTEM_EXTENSIONS
 
 m4_ifdef([AM_PROG_AR],[AM_PROG_AR])
+LT_INIT([disable-static])
 AC_PROG_CC
 AC_PROG_CC_C99
 AM_PROG_CC_C_O
@@ -69,12 +70,12 @@ AS_IF([test "x$enable_gtk3" = xyes],
 	  [gtk_package=gtk+-3.0
 	   gtk_min_version=3.0],
 	  [gtk_package=gtk+-2.0
-	   gtk_min_version=2.16])
+	   gtk_min_version=2.24])
 AM_CONDITIONAL([GTK3], [test "x$gtk_package" = "xgtk+-3.0"])
 
 # GTK/GLib/GIO checks
 gtk_modules="$gtk_package >= $gtk_min_version glib-2.0 >= 2.20"
-gtk_modules_private="gio-2.0 >= 2.20 gmodule-2.0"
+gtk_modules_private="gio-2.0 >= 2.28 gmodule-no-export-2.0"
 PKG_CHECK_MODULES([GTK], [$gtk_modules $gtk_modules_private])
 AC_SUBST([DEPENDENCIES], [$gtk_modules])
 AC_SUBST([GTK_CFLAGS])
@@ -122,6 +123,9 @@ AC_SUBST([pkgdatadir])
 GEANY_CHECK_DOCUTILS
 GEANY_CHECK_DOXYGEN
 
+# libgeany
+GEANY_LIB_INIT
+
 # Output
 AC_CONFIG_FILES([
 		Makefile


Modified: data/Makefile.am
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -69,7 +69,8 @@ filetypes = \
 	filetypes.verilog \
 	filetypes.vhdl \
 	filetypes.xml \
-	filetypes.yaml
+	filetypes.yaml \
+	filetypes.zephir
 
 tagfiles = \
 	c99.tags \


Modified: data/filetype_extensions.conf
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -67,6 +67,7 @@ Verilog=*.v;
 VHDL=*.vhd;*.vhdl;
 XML=*.xml;*.sgml;*.xsl;*.xslt;*.xsd;*.xhtml;*.xul;*.dtd;*.xtpl;
 YAML=*.yaml;*.yml;
+Zephir=*.zep;
 None=*;
 
 # Note: restarting is required after editing groups


Modified: data/filetypes.html
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -44,7 +44,7 @@
 php_comment=comment
 php_commentline=comment_line
 php_operator=operator
-php_hstring_variable=string_2
+php_hstring_variable=preprocessor
 php_complex_variable=preprocessor
 
 jscript_start=tag


Modified: data/filetypes.zephir
24 lines changed, 24 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,24 @@
+# For complete documentation of this file, please see Geany's main documentation
+[styling=HTML]
+
+[keywords=HTML]
+# all items must be in one line
+# these are Zephir instructions, overriding PHP list
+php=abstract bool break case catch class const continue default empty else false fetch finally fixed float for foreach function if int integer interface isset let long namespace new null private protected public return static string switch this throw true try typeof uint ulong unlikely var void while
+
+[lexer_properties=PHP]
+
+[settings=PHP]
+# default extension used when saving files
+extension=zep
+
+[indentation]
+#width=4
+# 0 is spaces, 1 is tabs, 2 is tab & spaces
+#type=1
+
+[build_settings]
+# %f will be replaced by the complete filename
+# %e will be replaced by the filename without extension
+# (use only one of it at one time)
+compiler=zephir build


Modified: data/geany.glade
6 lines changed, 3 insertions(+), 3 deletions(-)
===================================================================
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
+  <requires lib="gtk+" version="2.24"/>
   <!-- interface-naming-policy project-wide -->
   <object class="GtkAccelGroup" id="accelgroup1"/>
   <object class="GtkAdjustment" id="adjustment1">
@@ -8135,7 +8135,6 @@
                         <property name="can_focus">True</property>
                         <property name="hscrollbar_policy">automatic</property>
                         <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
                         <child>
                           <object class="GtkTreeView" id="treeview2">
                             <property name="visible">True</property>
@@ -8159,7 +8158,6 @@
                       <object class="GtkScrolledWindow" id="scrolledwindow7">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="shadow_type">in</property>
                         <child>
                           <object class="GtkTreeView" id="treeview6">
                             <property name="visible">True</property>
@@ -8528,10 +8526,12 @@
                     <property name="can_focus">True</property>
                     <property name="hscrollbar_policy">automatic</property>
                     <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
                     <child>
                       <object class="GtkViewport" id="viewport_project_dialog_description">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="shadow_type">none</property>
                         <child>
                           <object class="GtkTextView" id="textview_project_dialog_description">
                             <property name="visible">True</property>


Modified: doc/Doxyfile.in
1 lines changed, 0 insertions(+), 1 deletions(-)
===================================================================
@@ -775,7 +775,6 @@ WARN_LOGFILE           =
 INPUT                  = @top_srcdir@/src/ \
                          @top_srcdir@/doc/ \
                          @top_srcdir@/plugins/geanyplugin.h \
-                         @top_srcdir@/plugins/geanyfunctions.h \
                          @top_srcdir@/tagmanager/src/tm_source_file.c \
                          @top_srcdir@/tagmanager/src/tm_source_file.h \
                          @top_srcdir@/tagmanager/src/tm_workspace.c \


Modified: doc/Makefile.am
1 lines changed, 0 insertions(+), 1 deletions(-)
===================================================================
@@ -96,7 +96,6 @@ doxygen_sources = \
 	$(srcdir)/*.dox \
 	$(top_srcdir)/src/*.[ch] \
 	$(top_srcdir)/plugins/geanyplugin.h \
-	$(top_srcdir)/plugins/geanyfunctions.h \
 	$(top_srcdir)/tagmanager/src/tm_source_file.[ch] \
 	$(top_srcdir)/tagmanager/src/tm_workspace.[ch]
 


Modified: doc/geany.txt
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -103,7 +103,7 @@ Installation
 Requirements
 ------------
 
-You will need the GTK (>= 2.16.0) libraries and their dependencies
+You will need the GTK (>= 2.24) libraries and their dependencies
 (Pango, GLib and ATK). Your distro should provide packages for these,
 usually installed by default. For Windows, you can download an installer
 from the website which bundles these libraries.
@@ -120,7 +120,7 @@ Source compilation
 ------------------
 
 Compiling Geany is quite easy.
-To do so, you need the GTK (>= 2.16.0) libraries and header files.
+To do so, you need the GTK (>= 2.24) libraries and header files.
 You also need the Pango, GLib and ATK libraries and header files.
 All these files are available at http://www.gtk.org, but very often
 your distro will provide development packages to save the trouble of


Modified: doc/plugins.dox
7 lines changed, 2 insertions(+), 5 deletions(-)
===================================================================
@@ -187,14 +187,12 @@ so there is no need to include @a gtk/gtk.h yourself.
 
 @note
 @a plugindata.h contains the biggest part of the plugin API and provides some basic macros.
- at a geanyfunctions.h provides some macros for convenient access to plugin API functions.
 
-Then you should define three basic variables which will give access to data fields and
-functions provided by the plugin API.
+Then you should define two basic variables which will give access to data fields
+provided by the plugin API.
 @code
 GeanyPlugin			*geany_plugin;
 GeanyData			*geany_data;
-GeanyFunctions		*geany_functions;
 @endcode
 
 Now you can go on and write your first lines for your new plugin. As mentioned before,
@@ -363,7 +361,6 @@ Once this is done, your first plugin is ready. Congratulations!
 
 GeanyPlugin		*geany_plugin;
 GeanyData		*geany_data;
-GeanyFunctions	*geany_functions;
 
 PLUGIN_VERSION_CHECK(211)
 


Modified: doc/pluginsignals.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -31,7 +31,7 @@
  * To use plugin signals in Geany, you have two options:
  *
  * -# Create a PluginCallback array with the @ref plugin_callbacks symbol. List the signals
- *    you want to listen to and create the appropiate signal callbacks for each signal.
+ *    you want to listen to and create the appropriate signal callbacks for each signal.
  *    The callback array is read @a after plugin_init() has been called.
  * -# Use plugin_signal_connect(), which can be called at any time and can also connect
  *    to non-Geany signals (such as GTK widget signals).


Modified: doc/pluginsymbols.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -79,7 +79,7 @@ KeyBindingGroup *plugin_key_group;
  * The dialog will show all plugins that support this symbol together.
  * @param dialog The plugin preferences dialog widget - this should only be used to
  * connect the @c "response" signal. If settings should be read from the dialog, the
- * reponse will be either @c GTK_RESPONSE_OK or @c GTK_RESPONSE_APPLY.
+ * response will be either @c GTK_RESPONSE_OK or @c GTK_RESPONSE_APPLY.
  * @return A container widget holding preference widgets.
  * @note Using @link stash.h Stash @endlink can make implementing preferences easier.
  * @see plugin_configure_single(). */


Modified: geany.nsi
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -124,6 +124,7 @@ Section "!Program Files" SEC01
 
 	SetOutPath "$INSTDIR\bin"
 	File "${RESOURCEDIR}\bin\Geany.exe"
+	File "${RESOURCEDIR}\bin\Geany*.dll"
 
 	SetOutPath "$INSTDIR\data"
 	File "${RESOURCEDIR}\data\GPL-2"


Modified: geany.pc.in
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -10,5 +10,5 @@ Name: Geany
 Description: A fast and lightweight IDE using GTK2
 Requires: @DEPENDENCIES@
 Version: @VERSION@
-Libs: -L${libdir}
+Libs: -L${libdir} -lgeany
 Cflags: -DGTK -I${includedir}/geany -I${includedir}/geany/tagmanager -I${includedir}/geany/scintilla


Modified: icons/16x16/geany.png
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: icons/32x32/Makefile.am
7 lines changed, 6 insertions(+), 1 deletions(-)
===================================================================
@@ -1,4 +1,9 @@
-icons_actionsdir = $(datadir)/icons/hicolor/32x32/actions
+iconsdir = $(datadir)/icons/hicolor/32x32
+icons_appsdir = $(iconsdir)/apps
+icons_actionsdir = $(iconsdir)/actions
+
+dist_icons_apps_DATA =		\
+	geany.png
 
 dist_icons_actions_DATA =	\
 	geany-build.png			\


Modified: icons/32x32/geany.png
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: icons/48x48/geany.png
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: icons/geany.ico
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: icons/scalable/geany.svg
352 lines changed, 226 insertions(+), 126 deletions(-)
===================================================================
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
+
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
@@ -13,8 +14,7 @@
    height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.45+devel"
-   sodipodi:docbase="/home/needcoffee/Templates"
+   inkscape:version="0.48.4 r9939"
    sodipodi:docname="geany.svg"
    version="1.0"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
@@ -50,7 +50,7 @@
          style="stop-color:#ffffff;stop-opacity:1;" />
       <stop
          style="stop-color:#edd400;stop-opacity:1"
-         offset="0.78597295"
+         offset="0.74871767"
          id="stop19748" />
       <stop
          id="stop19750"
@@ -407,7 +407,8 @@
        y1="12.358853"
        x2="41.660713"
        y2="35.394569"
-       gradientUnits="userSpaceOnUse" />
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0.178571,0.17857129)" />
     <radialGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3570"
@@ -446,19 +447,21 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="11.2"
-     inkscape:cx="42.57446"
+     inkscape:cx="22.57446"
      inkscape:cy="23.938611"
      inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="1280"
-     inkscape:window-height="932"
+     inkscape:current-layer="layer9"
+     inkscape:window-width="1246"
+     inkscape:window-height="842"
      inkscape:window-x="0"
-     inkscape:window-y="42"
+     inkscape:window-y="0"
      inkscape:showpageshadow="false"
      width="48px"
      height="48px"
      borderlayer="true"
-     gridtolerance="10000">
+     gridtolerance="10000"
+     showgrid="false"
+     inkscape:window-maximized="0">
     <inkscape:grid
        type="xygrid"
        id="grid2173" />
@@ -492,170 +495,267 @@
     </rdf:RDF>
   </metadata>
   <g
-     inkscape:label="Ebene 1"
      inkscape:groupmode="layer"
-     id="layer1">
+     id="layer7"
+     inkscape:label="Plate"
+     style="display:inline">
     <path
-       style="opacity:0.6;color:#000000;fill:url(#radialGradient7112);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.48304588px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 41.000002,41.499999 C 41.000002,45.087999 33.160001,47.999998 23.500001,47.999998 C 13.84,47.999998 6,45.087999 6,41.499999 C 6,37.912 13.84,35 23.500001,35 C 33.160001,35 41.000002,37.912 41.000002,41.499999 z"
-       id="path6721" />
+       style="opacity:0.6;color:#000000;fill:url(#radialGradient7112);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.48304588px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 41.000002,41.499999 c 0,3.588 -7.840001,6.499999 -17.500001,6.499999 C 13.84,47.999998 6,45.087999 6,41.499999 6,37.912 13.84,35 23.500001,35 c 9.66,0 17.500001,2.912 17.500001,6.499999 z"
+       id="path6721"
+       inkscape:connector-curvature="0" />
     <path
-       style="color:#000000;fill:url(#linearGradient3233);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:0.99999970000000005px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 37.499999,40.5 C 37.499999,43.26 31.003999,45.5 22.999999,45.5 C 14.996,45.5 8.4999993,43.26 8.4999993,40.5 C 8.4999993,37.74 14.996,35.5 22.999999,35.5 C 31.003999,35.5 37.499999,37.74 37.499999,40.5 z"
-       id="path3580" />
+       style="color:#000000;fill:url(#linearGradient3233);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:0.9999997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 37.499999,40.5 c 0,2.76 -6.496,5 -14.5,5 -8.003999,0 -14.4999997,-2.24 -14.4999997,-5 0,-2.76 6.4960007,-5 14.4999997,-5 8.004,0 14.5,2.24 14.5,5 z"
+       id="path3580"
+       inkscape:connector-curvature="0" />
     <path
-       style="opacity:0.2;color:#000000;fill:url(#radialGradient7116);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 31.999998,40.5 C 31.999998,42.432 28.415999,44 23.999999,44 C 19.583999,44 16,42.432 16,40.5 C 16,38.568 19.583999,37 23.999999,37 C 28.415999,37 31.999998,38.568 31.999998,40.5 z"
-       id="path7114" />
-    <path
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4751);stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 36.5,40.045839 C 36.5,42.504536 30.452,44.499998 23.000002,44.499998 C 15.548001,44.499998 9.4999996,42.504536 9.4999996,40.045839 C 9.4999996,37.587142 15.548001,35.591678 23.000002,35.591678 C 30.452,35.591678 36.5,37.587142 36.5,40.045839 z"
-       id="path4362" />
+       style="color:#000000;fill:none;stroke:url(#linearGradient4751);stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 36.5,40.045839 c 0,2.458697 -6.048,4.454159 -13.499998,4.454159 -7.452001,0 -13.5000024,-1.995462 -13.5000024,-4.454159 0,-2.458697 6.0480014,-4.454161 13.5000024,-4.454161 7.451998,0 13.499998,1.995464 13.499998,4.454161 z"
+       id="path4362"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer8"
+     inkscape:label="Base"
+     style="display:inline">
     <path
-       style="color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.38169873px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 30,38.999999 C 30,40.656 26.864,42 23,42 C 19.136,42 16,40.656 16,38.999999 C 16,37.344 19.136,36 23,36 C 26.864,36 30,37.344 30,38.999999 z"
-       id="path3578" />
+       style="opacity:0.2;color:#000000;fill:url(#radialGradient7116);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 31.999998,40.5 c 0,1.932 -3.583999,3.5 -7.999999,3.5 C 19.583999,44 16,42.432 16,40.5 16,38.568 19.583999,37 23.999999,37 c 4.416,0 7.999999,1.568 7.999999,3.5 z"
+       id="path7114"
+       inkscape:connector-curvature="0" />
     <path
-       style="color:#000000;fill:url(#linearGradient2846);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:0.99999970000000005px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 22.676304,13.5 C 15.075207,13.5 8.9072718,16.629657 8.9072715,20.493968 C 8.9072715,21.510209 8.7545243,23.67041 9.0187617,26.20205 C 6.530419,25.243195 6.5331578,23.087734 6.3151258,20.525331 L 3.5278724,20.525331 C 3.5200724,20.699921 3.4999999,20.88186 3.4999999,21.058504 C 4.41768,32.304817 13.225346,39.074745 22.676304,39.499999 C 26.476851,39.499999 31.198867,38.468746 34.131915,33.446923 C 37.064967,28.425102 36.445335,22.426121 36.445336,20.493968 C 36.445336,16.629658 30.277398,13.5 22.676304,13.5 z"
-       id="path2196"
-       sodipodi:nodetypes="cscccccssc" />
+       style="color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.38169873px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 30,38.999999 C 30,40.656 26.864,42 23,42 19.136,42 16,40.656 16,38.999999 16,37.344 19.136,36 23,36 c 3.864,0 7,1.344 7,2.999999 z"
+       id="path3578"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:label="Lamp"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <g
+       inkscape:groupmode="layer"
+       id="layer17"
+       inkscape:label="Body"
+       style="display:inline">
+      <path
+         style="color:#000000;fill:url(#linearGradient2846);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:0.9999997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 22.676304,13.5 c -7.601097,0 -13.7690322,3.129657 -13.7690325,6.993968 0,1.016241 -0.1527472,3.176442 0.1114902,5.708082 C 6.530419,25.243195 6.5331578,23.087734 6.3151258,20.525331 l -3.4122534,0 c 1.0212964,13.220693 10.8298956,18.795811 19.7734316,18.974668 3.800548,0 8.522563,-1.031253 11.455611,-6.053076 2.933052,-5.021821 2.31342,-11.020802 2.313421,-12.952955 0,-3.86431 -6.167938,-6.993968 -13.769032,-6.993968 z"
+         id="path2196"
+         sodipodi:nodetypes="csccccssc"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer15"
+       inkscape:label="Light"
+       style="display:inline">
+      <path
+         style="opacity:0.6;color:#000000;fill:url(#radialGradient19774);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.91345936px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 19,19 c 0,2.760001 11.4,5 4.5,5 C 16.6,24 11,21.760001 11,19 c 0,-2.76 5.6,-5 12.5,-5 6.9,0 -4.5,2.24 -4.5,5 z"
+         id="path3187"
+         sodipodi:nodetypes="csssc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="opacity:0.6;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 10.625,19 c 0,0.915534 -0.767012,5.759599 -0.625,8 C 10.07101,28.120201 5.0041843,25.428122 5.9375,22 6.3277685,20.566522 3.818081,20.571654 3.8392857,21.571429 4.0178571,29.99083 10.948298,35.536343 14.910254,36.823715 16.441246,37.321185 18.711279,38 20,38 L 24,23 C 19.552193,23 11.76157,21.382369 10.625,19 z"
+         id="path5939"
+         sodipodi:nodetypes="cssssccc"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer14"
+       inkscape:label="Lid shine"
+       style="display:inline">
+      <path
+         style="color:#000000;fill:none;stroke:url(#linearGradient17109);stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 34.499998,18.5 c 0,2.207999 -5.151998,4 -11.499998,4 -6.348,0 -11.500001,-1.792001 -11.500001,-4 0,-2.208001 5.152001,-4 11.500001,-4 6.348,0 11.499998,1.791999 11.499998,4 z"
+         id="path16339"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer13"
+       inkscape:label="Lid border"
+       style="display:inline">
+      <path
+         id="path15948"
+         d="M 35.5,18.978366 C 35.5,21.474308 29.9,23.5 23,23.5 c -6.899998,0 -12.499999,-2.025692 -12.499999,-4.521634 0,-2.495943 5.600001,-4.521635 12.499999,-4.521635 6.9,0 12.5,2.025692 12.5,4.521635 z"
+         style="color:#000000;fill:none;stroke:#c4a000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer11"
+       inkscape:label="Shine"
+       style="display:inline">
+      <path
+         style="color:#000000;fill:none;stroke:url(#radialGradient17706);stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 22.725993,14.5 c -7.023753,0 -12.7987342,2.811741 -12.7987342,6.379465 l 0.00151,6.727679 C 7.2436344,26.91518 5.6295693,25.718751 5.4919108,22.25 4.8643187,22.28638 4.5162462,22.093645 4.1428569,22.263394 5.6806192,32.712819 13.776231,38.263157 22.725993,38.500002 c 3.511878,0 7.889437,-0.957354 10.59971,-5.59375 C 36.035972,28.269858 35.445645,22.75261 35.445644,20.968751 35.445644,17.401028 29.749748,14.5 22.725993,14.5 z"
+         id="path2206"
+         sodipodi:nodetypes="ccccccssc"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer16"
+       inkscape:label="Bottleneck"
+       style="display:inline">
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:#816a24;fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1.22474467999999992px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path17203"
+         sodipodi:cx="3"
+         sodipodi:cy="20.5"
+         sodipodi:rx="2"
+         sodipodi:ry="1.5"
+         d="m 5,20.5 a 2,1.5 0 1 1 -4,0 2,1.5 0 1 1 4,0 z"
+         transform="matrix(1,0,0,0.6666669,1.5,6.8333282)" />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer10"
+     inkscape:label="Lid knob"
+     style="display:inline">
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:0.68313003000000005px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       style="color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:0.68313003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
        id="path3628"
        sodipodi:cx="22.5"
        sodipodi:cy="17.5"
        sodipodi:rx="3.5"
        sodipodi:ry="0.5"
-       d="M 26,17.5 A 3.5,0.5 0 1 1 19,17.5 A 3.5,0.5 0 1 1 26,17.5 z"
+       d="m 26,17.5 a 3.5,0.5 0 1 1 -7,0 3.5,0.5 0 1 1 7,0 z"
        transform="matrix(0.7142857,0,0,3.0000004,6.9285725,-34.500007)" />
     <path
-       style="opacity:0.6;color:#000000;fill:url(#radialGradient19774);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.91345936px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 19,19 C 19,21.760001 30.4,24 23.5,24 C 16.6,24 11,21.760001 11,19 C 11,16.24 16.6,14 23.5,14 C 30.4,14 19,16.24 19,19 z"
-       id="path3187"
-       sodipodi:nodetypes="csssc" />
-    <path
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient17109);stroke-width:0.99999994000000003;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 34.499998,18.5 C 34.499998,20.707999 29.348,22.5 23,22.5 C 16.652,22.5 11.499999,20.707999 11.499999,18.5 C 11.499999,16.291999 16.652,14.5 23,14.5 C 29.348,14.5 34.499998,16.291999 34.499998,18.5 z"
-       id="path16339" />
-    <path
-       style="opacity:0.59999999999999998;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 10.625,19 C 10.625,19.915534 9.857988,24.759599 10,27 C 10.071006,28.120201 5.1052705,22.887711 5.9375,22 C 7.8125,20 5,22 5,23 C 5,31.062258 14.519727,36.072058 15.892397,36.913001 C 17.265069,37.753943 18.711279,38 20,38 C 20,38 24,23 24,23 C 19.552193,23 11.76157,21.382369 10.625,19 z"
-       id="path5939"
-       sodipodi:nodetypes="cssssccc" />
+       style="opacity:0.1;color:#000000;fill:url(#radialGradient5545);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 28,18 c 0,1.104 -2.016,2 -4.5,2 -2.483999,0 -4.499999,-0.896 -4.499999,-2 0,-1.103999 2.016,-1.999999 4.499999,-1.999999 2.484,0 4.5,0.896 4.5,1.999999 z"
+       id="path5154"
+       inkscape:connector-curvature="0" />
     <path
-       id="path15948"
-       d="M 35.5,18.978366 C 35.5,21.474308 29.9,23.5 23,23.5 C 16.100002,23.5 10.500001,21.474308 10.500001,18.978366 C 10.500001,16.482423 16.100002,14.456731 23,14.456731 C 29.9,14.456731 35.5,16.482423 35.5,18.978366 z"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+       style="color:#000000;fill:url(#radialGradient5934);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 26.500001,14.000002 c 0,-1.380001 -1.568002,-2.5 -3.5,-2.5 -1.932,0 -3.499999,1.119999 -3.499999,2.5 0,1.379998 1.567999,4.5 3.499999,4.5 1.931998,0 3.5,-3.120002 3.5,-4.5 z"
+       id="path2201"
+       inkscape:connector-curvature="0" />
     <path
-       style="opacity:0.1;color:#000000;fill:url(#radialGradient5545);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 28,18 C 28,19.104 25.984,20 23.5,20 C 21.016001,20 19.000001,19.104 19.000001,18 C 19.000001,16.896001 21.016001,16.000001 23.5,16.000001 C 25.984,16.000001 28,16.896001 28,18 z"
-       id="path5154" />
-    <path
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient17706);stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 22.725993,14.5 C 15.70224,14.5 9.9272588,17.311741 9.9272588,20.879465 C 9.9272588,20.879465 10.107339,27.250001 10.107339,27.250001 C 7.5114915,26.825894 5.9867122,25.093751 5.8490537,21.625 C 4.9536045,21.304239 4.8733891,21.736497 4.4999998,21.906251 C 6.1270478,32.177104 13.954803,38.084585 22.725993,38.500002 C 26.237871,38.500002 30.61543,37.542648 33.325703,32.906252 C 36.035972,28.269858 35.445645,22.75261 35.445644,20.968751 C 35.445644,17.401028 29.749748,14.5 22.725993,14.5 z"
-       id="path2206"
-       sodipodi:nodetypes="ccccccssc" />
-    <path
-       style="color:#000000;fill:url(#radialGradient5934);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 26.500001,14.000002 C 26.500001,12.620001 24.931999,11.500002 23.000001,11.500002 C 21.068001,11.500002 19.500002,12.620001 19.500002,14.000002 C 19.500002,15.38 21.068001,18.500002 23.000001,18.500002 C 24.931999,18.500002 26.500001,15.38 26.500001,14.000002 z"
-       id="path2201" />
-    <path
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient3185);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 25.500002,14.285716 C 25.500002,13.300001 24.38,12.500001 23,12.500001 C 21.620003,12.500001 20.500002,13.300001 20.500002,14.285716 C 20.500002,15.271429 21.620003,17.500001 23,17.500001 C 24.38,17.500001 25.500002,15.271429 25.500002,14.285716 z"
-       id="path2204" />
-    <path
-       style="fill:url(#radialGradient11865);fill-opacity:1;stroke:#a40000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 13.999999,24.408323 L 12.5,27.408324 L 13.999999,30.408324 L 15.5,27.408324 L 13.999999,24.408323 z"
-       id="path11861" />
-    <path
-       style="fill:url(#linearGradient11867);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 14,24.908323 L 13,27.408324 L 14,29.908323 L 14,24.908323 z"
-       id="path11863" />
-    <path
-       style="fill:url(#radialGradient14259);fill-opacity:1;stroke:#a40000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 32,24.499999 L 30.5,27.5 L 32,30.5 L 33.500001,27.5 L 32,24.499999 z"
-       id="path14255" />
-    <path
-       style="fill:url(#linearGradient14261);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 32,24.999999 L 31,27.5 L 32,29.999999 L 32,24.999999 z"
-       id="path14257" />
+       style="color:#000000;fill:none;stroke:url(#radialGradient3185);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 25.500002,14.285716 C 25.500002,13.300001 24.38,12.500001 23,12.500001 c -1.379997,0 -2.499998,0.8 -2.499998,1.785715 0,0.985713 1.120001,3.214285 2.499998,3.214285 1.38,0 2.500002,-2.228572 2.500002,-3.214285 z"
+       id="path2204"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer9"
+     inkscape:label="Handle"
+     style="display:inline">
     <path
-       id="path17168"
-       d="M 22.999999,26.500001 L 20.500001,30.5 L 22.999999,34.5 L 25.5,30.5 L 22.999999,26.500001 z"
-       style="fill:url(#radialGradient17172);fill-opacity:1;stroke:#a40000;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+       style="fill:#edd400;fill-opacity:1;stroke:#c4a000;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
+       d="m 41,10.5 c -3.601,0 -5.642857,3.345429 -5.642857,6.946429 l 1,2.357143 c -2e-6,-2.965529 1.845858,-6.392857 4.892858,-6.392857 3.046998,0 4.160713,2.467506 4.249999,5.433035 l 0,9.0625 C 45.121824,32.616353 38.114594,33.546278 34.4375,34.25 33.989858,34.905095 32.974684,35.478537 32.464286,36 37.337556,34.679542 46.983231,34.613084 47.5,28 l 0,-11 C 47.232143,13.220429 44.601,10.5 41,10.5 z"
+       id="rect19335"
+       sodipodi:nodetypes="cccsccccccc"
+       inkscape:connector-curvature="0" />
     <path
-       id="path17170"
-       d="M 23.000001,27.166666 L 21.333335,30.500001 L 23.000001,33.833332 L 23.000001,27.166666 z"
-       style="fill:url(#linearGradient17174);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+       style="opacity:0.8;fill:none;stroke:url(#linearGradient19742);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+       d="M 35.910713,17.339286 C 37.749999,9.8749998 46.249999,11.392857 46.517857,18 l 4e-6,10.803571 c -0.357148,2.857144 -4.714291,5.017857 -11.714291,6.017857"
+       id="path19353"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Genie"
+     style="display:inline">
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1.22474468px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path17203"
-       sodipodi:cx="3"
-       sodipodi:cy="20.5"
-       sodipodi:rx="2"
-       sodipodi:ry="1.5"
-       d="M 5,20.5 A 2,1.5 0 1 1 1,20.5 A 2,1.5 0 1 1 5,20.5 z"
-       transform="matrix(1,0,0,0.6666669,1.5,6.8333282)" />
+       style="color:#000000;fill:url(#radialGradient18099);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.09544492px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path17708"
+       sodipodi:cx="4.5"
+       sodipodi:cy="18"
+       sodipodi:rx="2.5"
+       sodipodi:ry="3"
+       d="m 7,18 a 2.5,3 0 1 1 -5,0 2.5,3 0 1 1 5,0 z"
+       transform="matrix(0.8,0,0,0.6666667,0.4,5.9999992)" />
     <path
        transform="matrix(1.8,0,0,1.5,-1.6,-21.5)"
-       d="M 7,18 A 2.5,3 0 1 1 2,18 A 2.5,3 0 1 1 7,18 z"
+       d="m 7,18 a 2.5,3 0 1 1 -5,0 2.5,3 0 1 1 5,0 z"
        sodipodi:ry="3"
        sodipodi:rx="2.5"
        sodipodi:cy="18"
        sodipodi:cx="4.5"
        id="path18109"
-       style="opacity:1;color:#000000;fill:url(#radialGradient18124);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.54772246px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       style="color:#000000;fill:url(#radialGradient18124);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.54772246px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
        sodipodi:type="arc" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:url(#radialGradient18126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.6846531px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       style="color:#000000;fill:url(#radialGradient18126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.6846531px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
        id="path18105"
        sodipodi:cx="4.5"
        sodipodi:cy="18"
        sodipodi:rx="2.5"
        sodipodi:ry="3"
-       d="M 7,18 A 2.5,3 0 1 1 2,18 A 2.5,3 0 1 1 7,18 z"
+       d="m 7,18 a 2.5,3 0 1 1 -5,0 2.5,3 0 1 1 5,0 z"
        transform="matrix(1.4,0,0,1.1666666,-1.8,-10.499998)" />
     <path
        transform="matrix(1,0,0,0.8333334,1,-0.5000017)"
-       d="M 7,18 A 2.5,3 0 1 1 2,18 A 2.5,3 0 1 1 7,18 z"
+       d="m 7,18 a 2.5,3 0 1 1 -5,0 2.5,3 0 1 1 5,0 z"
        sodipodi:ry="3"
        sodipodi:rx="2.5"
        sodipodi:cy="18"
        sodipodi:cx="4.5"
        id="path18101"
-       style="opacity:1;color:#000000;fill:url(#radialGradient18128);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.91287076px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       style="color:#000000;fill:url(#radialGradient18128);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.91287076px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
        sodipodi:type="arc" />
     <path
-       sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:url(#radialGradient18099);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.09544492px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path17708"
-       sodipodi:cx="4.5"
-       sodipodi:cy="18"
-       sodipodi:rx="2.5"
-       sodipodi:ry="3"
-       d="M 7,18 A 2.5,3 0 1 1 2,18 A 2.5,3 0 1 1 7,18 z"
-       transform="matrix(0.8,0,0,0.6666667,0.4,5.9999992)" />
+       style="color:#000000;fill:none;stroke:#babdb6;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 6.5,0.5 c -2.76,0 -5,2.24 -5,5 0,0.7052919 0.1736534,1.3600729 0.4375,1.96875 C 1.0683042,8.2026828 0.5,9.2741795 0.5,10.5 c 0,1.503057 0.8357443,2.785297 2.0625,3.46875 C 2.5302393,14.144924 2.5,14.314551 2.5,14.5 c 0,0.473227 0.1170765,0.914313 0.3125,1.3125 C 2.033208,16.236011 1.5,17.051249 1.5,18 1.5,19.38 2.62,20.5 4,20.5 5.38,20.5 6.5,19.38 6.5,18 6.5,17.770954 6.464025,17.554539 6.40625,17.34375 7.61269,16.955089 8.5,15.835151 8.5,14.5 8.5,13.807159 8.269939,13.164285 7.875,12.65625 8.269345,12.036545 8.5,11.288446 8.5,10.5 8.5,10.361396 8.4512825,10.228735 8.4375,10.09375 10.231875,9.334375 11.5,7.5699998 11.5,5.5 c 0,-2.7599999 -2.2400001,-5.00000001 -5,-5 z"
+       id="path18113"
+       inkscape:connector-curvature="0" />
     <path
-       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#babdb6;stroke-width:0.99999994000000003px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 6.5 0.5 C 3.74 0.5 1.5 2.74 1.5 5.5 C 1.5 6.2052919 1.6736534 6.8600729 1.9375 7.46875 C 1.0683042 8.2026828 0.5 9.2741795 0.5 10.5 C 0.5 12.003057 1.3357443 13.285297 2.5625 13.96875 C 2.5302393 14.144924 2.5 14.314551 2.5 14.5 C 2.5 14.973227 2.6170765 15.414313 2.8125 15.8125 C 2.033208 16.236011 1.5 17.051249 1.5 18 C 1.5 19.38 2.62 20.5 4 20.5 C 5.38 20.5 6.5 19.38 6.5 18 C 6.5 17.770954 6.4640248 17.554539 6.40625 17.34375 C 7.61269 16.955089 8.5 15.835151 8.5 14.5 C 8.5 13.807159 8.269939 13.164285 7.875 12.65625 C 8.269345 12.036545 8.5 11.288446 8.5 10.5 C 8.5 10.361396 8.4512825 10.228735 8.4375 10.09375 C 10.231875 9.334375 11.5 7.5699998 11.5 5.5 C 11.5 2.7400001 9.2599999 0.49999999 6.5 0.5 z "
-       id="path18113" />
+       style="color:#000000;fill:none;stroke:#ffffff;stroke-width:0.83333319px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 6.5,1.4375 c -2.2356,0 -4.0624999,1.8269 -4.0625,4.0625 0,0.83835 0.2819195,1.6035821 0.71875,2.25 C 2.1380622,8.247806 1.4375,9.2909498 1.4375,10.5 c 0,1.419316 0.9704888,2.590691 2.28125,2.9375 -0.1867744,0.312236 -0.3125,0.672452 -0.3125,1.0625 0,1.15 0.9437501,2.09375 2.09375,2.09375 1.1500001,0 2.0937502,-0.94375 2.09375,-2.09375 0,-0.759952 -0.4229037,-1.417347 -1.03125,-1.78125 0.6023928,-0.559383 0.9999999,-1.332481 1,-2.21875 C 7.5625,10.126681 7.497472,9.7684083 7.375,9.4375 9.1855058,9.0335119 10.5625,7.4316981 10.5625,5.5 10.5625,3.2644 8.7355999,1.4375 6.5,1.4375 z M 4,16.40625 c -0.8832,0 -1.5937501,0.710549 -1.59375,1.59375 0,0.8832 0.71055,1.593751 1.59375,1.59375 0.8832,0 1.5937499,-0.710551 1.59375,-1.59375 C 5.59375,17.1168 4.8832,16.40625 4,16.40625 z"
+       id="path18130"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Gems"
+     style="display:inline">
     <path
-       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.83333319px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="M 6.5 1.4375 C 4.2644 1.4375 2.4375001 3.2644 2.4375 5.5 C 2.4375 6.33835 2.7194195 7.1035821 3.15625 7.75 C 2.1380622 8.247806 1.4375 9.2909498 1.4375 10.5 C 1.4375 11.919316 2.4079888 13.090691 3.71875 13.4375 C 3.5319756 13.749736 3.40625 14.109952 3.40625 14.5 C 3.40625 15.65 4.3500001 16.59375 5.5 16.59375 C 6.6500001 16.59375 7.5937502 15.65 7.59375 14.5 C 7.59375 13.740048 7.1708463 13.082653 6.5625 12.71875 C 7.1648928 12.159367 7.5624999 11.386269 7.5625 10.5 C 7.5625 10.126681 7.497472 9.7684083 7.375 9.4375 C 9.1855058 9.0335119 10.5625 7.4316981 10.5625 5.5 C 10.5625 3.2644 8.7355999 1.4375 6.5 1.4375 z M 4 16.40625 C 3.1168 16.40625 2.4062499 17.116799 2.40625 18 C 2.40625 18.8832 3.1168 19.593751 4 19.59375 C 4.8832 19.59375 5.5937499 18.883199 5.59375 18 C 5.59375 17.1168 4.8832 16.40625 4 16.40625 z "
-       id="path18130" />
+       id="path17168"
+       d="M 22.999999,26.500001 20.500001,30.5 l 2.499998,4 2.500001,-4 -2.500001,-3.999999 z"
+       style="fill:url(#radialGradient17172);fill-opacity:1;stroke:#a40000;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       inkscape:connector-curvature="0" />
     <path
-       style="fill:#edd400;fill-opacity:1;stroke:#c4a000;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 41,10.5 C 37.399,10.5 35,13.399 35,17 L 36,19 C 35.999998,16.034471 36.953,13.5 40,13.5 C 43.046998,13.5 45.5,15.878221 45.5,18.84375 L 45.5,27.90625 C 45.121824,32.616353 38.114594,33.546278 34.4375,34.25 C 33.989858,34.905095 33.510398,35.478537 33,36 C 37.87327,34.679542 46.983231,34.613084 47.5,28 L 47.5,17 C 47.5,13.399 44.601,10.5 41,10.5 z"
-       id="rect19335"
-       sodipodi:nodetypes="cccsccccccc" />
+       id="path17170"
+       d="m 23.000001,27.166666 -1.666666,3.333335 1.666666,3.333331 0,-6.666666 z"
+       style="fill:url(#linearGradient17174);fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
     <path
-       style="opacity:0.8;fill:none;fill-opacity:1;stroke:url(#linearGradient19742);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 36,16 C 39,8 46.160714,12.464286 46.428571,16.125 L 46.339286,28.625 C 46.339286,31.660715 41,34 34,35"
-       id="path19353"
-       sodipodi:nodetypes="cccc" />
+       style="fill:url(#radialGradient11865);fill-opacity:1;stroke:#a40000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       d="M 13.999999,24.408323 12.5,27.408324 l 1.499999,3 1.500001,-3 -1.500001,-3.000001 z"
+       id="path11861"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#linearGradient11867);fill-opacity:1;stroke:none"
+       d="m 14,24.908323 -1,2.500001 1,2.499999 0,-5 z"
+       id="path11863"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#radialGradient14259);fill-opacity:1;stroke:#a40000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       d="M 32,24.499999 30.5,27.5 l 1.5,3 1.500001,-3 L 32,24.499999 z"
+       id="path14255"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#linearGradient14261);fill-opacity:1;stroke:none"
+       d="M 32,24.999999 31,27.5 l 1,2.499999 0,-5 z"
+       id="path14257"
+       inkscape:connector-curvature="0" />
   </g>
 </svg>


Modified: m4/geany-binreloc.m4
6 lines changed, 4 insertions(+), 2 deletions(-)
===================================================================
@@ -52,9 +52,11 @@ AC_DEFUN([GEANY_CHECK_BINRELOC],
 		AC_MSG_RESULT([no (unknown value "$enable_binreloc")])
 		enable_binreloc=no
 	fi
-	if test "$enable_binreloc" = "yes"; then
+	AM_CONDITIONAL(ENABLE_BINRELOC, [test "$enable_binreloc" = "yes"])
+	AM_COND_IF(ENABLE_BINRELOC,
+	[
 		AC_DEFINE([ENABLE_BINRELOC],,[Use AutoPackage?])
-	fi
+	])
 
 	GEANY_STATUS_ADD([Enable binary relocation], [$enable_binreloc])
 ])


Modified: m4/geany-lib.m4
58 lines changed, 58 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,58 @@
+dnl checks whether the compiler supports GCC4-style visibility
+AC_DEFUN([GCC4_VISIBILITY],
+[
+	have_gcc4_visibility=no
+	AC_MSG_CHECKING([whether compiler supports GCC4-style visibility])
+	gcc_visibility_backup_cflags=$CFLAGS
+	CFLAGS=-fvisibility=hidden
+	AC_LINK_IFELSE([AC_LANG_SOURCE([[__attribute__((visibility("default")))
+									 int main(int argc, char **argv) { return 0; }]])],
+				   [have_gcc4_visibility=yes])
+	AC_MSG_RESULT([$have_gcc4_visibility])
+	CFLAGS="${gcc_visibility_backup_cflags}"
+])
+
+dnl Checks and fills LIBGEANY_EXPORT_CFLAGS
+AC_DEFUN([GEANY_EXPORT],
+[
+	AC_REQUIRE([GEANY_CHECK_MINGW])
+	AC_REQUIRE([GCC4_VISIBILITY])
+
+	dnl FIXME: better way to detect Windows?
+	AM_COND_IF([MINGW], [win32=yes], [win32=false])
+
+	export_CFLAGS=
+	AS_IF([test x$win32 = xyes],
+		  [export_CFLAGS='-DGEANY_EXPORT_SYMBOL="__declspec(dllexport)"'],
+		  [test x$have_gcc4_visibility = xyes],
+		  [export_CFLAGS='-fvisibility=hidden -DGEANY_EXPORT_SYMBOL="__attribute__((visibility(\"default\")))"'],
+		  [dnl GEANY_EXPORT_SYMBOL expands to nothing
+		   export_CFLAGS='-DGEANY_EXPORT_SYMBOL'])
+
+	LIBGEANY_EXPORT_CFLAGS="${export_CFLAGS} -DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL"
+
+	AC_SUBST([LIBGEANY_EXPORT_CFLAGS])
+])
+
+AC_DEFUN([GEANY_LIB_INIT],
+[
+	AC_REQUIRE([GEANY_EXPORT])
+
+dnl In the future, if we want to use libtool/library versioning, we can
+dnl set these variables accordingly. For now its the same as if not specified (0:0:0)
+	libgeany_current=0
+	libgeany_revision=0
+	libgeany_age=0
+
+	LIBGEANY_CFLAGS="${LIBGEANY_EXPORT_CFLAGS}"
+	LIBGEANY_LDFLAGS="-version-info ${libgeany_current}:${libgeany_revision}:${libgeany_age}"
+
+	AC_SUBST([LIBGEANY_CFLAGS])
+	AC_SUBST([LIBGEANY_LDFLAGS])
+
+dnl Check for utilities needed to do codegen
+	AC_PATH_PROG([SORT], [sort], [
+		AC_MSG_ERROR([The 'sort' utility is required, is it installed?])])
+	AC_PATH_PROG([UNIQ], [uniq], [
+		AC_MSG_ERROR([The 'uniq' utility is required, is it installed?])])
+])


Modified: m4/geany-mac-integration.m4
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -9,7 +9,8 @@ AC_DEFUN([GEANY_CHECK_MAC_INTEGRATION],
 			[geany_enable_mac_integration="$enableval"],
 			[geany_enable_mac_integration="no"])
 
-	AS_IF([test "x$geany_enable_mac_integration" = "xyes"],
+	AM_CONDITIONAL(ENABLE_MAC_INTEGRATION, [test "x$geany_enable_mac_integration" = "xyes"])
+	AM_COND_IF(ENABLE_MAC_INTEGRATION,
 	[
 		AS_IF([test "x$enable_gtk3" = xyes],
 			[PKG_CHECK_MODULES(MAC_INTEGRATION, gtk-mac-integration-gtk3)], 


Modified: plugins/Makefile.am
33 lines changed, 14 insertions(+), 19 deletions(-)
===================================================================
@@ -1,22 +1,18 @@
 # Adapted from Pidgin's plugins/Makefile.am, thanks
 
 EXTRA_DIST = \
-	makefile.win32 \
-	genapi.py
+	makefile.win32
 
+if MINGW
+plugindir = $(libdir)
+else
 plugindir = $(libdir)/geany
+endif
 
 plugins_includedir = $(includedir)/geany
 plugins_include_HEADERS = \
-	geanyplugin.h \
-	geanyfunctions.h
-
-# systems without python should continue to build OK
-geanyfunctions.h: genapi.py ../src/plugins.c
-	python genapi.py || true
-
-all: geanyfunctions.h
-
+	geanyfunctions.h \
+	geanyplugin.h
 
 demoplugin_la_LDFLAGS    = -module -avoid-version -no-undefined
 classbuilder_la_LDFLAGS  = -module -avoid-version -no-undefined
@@ -27,7 +23,6 @@ filebrowser_la_LDFLAGS   = -module -avoid-version -no-undefined
 splitwindow_la_LDFLAGS   = -module -avoid-version -no-undefined
 
 if PLUGINS
-
 # Plugins to be installed
 plugin_LTLIBRARIES = \
 	classbuilder.la \
@@ -57,13 +52,13 @@ saveactions_la_CFLAGS   = -DG_LOG_DOMAIN=\""SaveActions"\"
 filebrowser_la_CFLAGS   = -DG_LOG_DOMAIN=\""FileBrowser"\"
 splitwindow_la_CFLAGS   = -DG_LOG_DOMAIN=\""SplitWindow"\"
 
-demoplugin_la_LIBADD    = $(GTK_LIBS)
-classbuilder_la_LIBADD  = $(GTK_LIBS)
-htmlchars_la_LIBADD     = $(GTK_LIBS)
-export_la_LIBADD        = $(GTK_LIBS) -lm
-saveactions_la_LIBADD   = $(GTK_LIBS)
-filebrowser_la_LIBADD   = $(GTK_LIBS)
-splitwindow_la_LIBADD   = $(GTK_LIBS)
+demoplugin_la_LIBADD    = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
+classbuilder_la_LIBADD  = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
+htmlchars_la_LIBADD     = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
+export_la_LIBADD        = $(top_builddir)/src/libgeany.la $(GTK_LIBS) -lm
+saveactions_la_LIBADD   = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
+filebrowser_la_LIBADD   = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
+splitwindow_la_LIBADD   = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
 
 endif # PLUGINS
 


Modified: plugins/geanyfunctions.h
460 lines changed, 20 insertions(+), 440 deletions(-)
===================================================================
@@ -1,448 +1,28 @@
-/* This file is generated automatically by genapi.py - do not edit. */
-
-/** @file geanyfunctions.h @ref geany_functions wrappers.
- * This allows the use of normal API function names in plugins by defining macros.
+/*
+ *      geanyfunctions.h - this file is part of Geany, a fast and lightweight IDE
+ *
+ *      Copyright 2014 Matthew Brush <mbrush at codebrainz.ca>
  *
- * E.g.:@code
- * #define plugin_add_toolbar_item \
- * 	geany_functions->p_plugin->plugin_add_toolbar_item @endcode
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
  *
- * You need to declare the @ref geany_functions symbol yourself.
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
  *
- * Note: This must be included after all other API headers to prevent conflicts with
- * other header's function prototypes - this is done for you when using geanyplugin.h.
+ *      You should have received a copy of the GNU General Public License along
+ *      with this program; if not, write to the Free Software Foundation, Inc.,
+ *      51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+/* This file exists purely for backwards compatibility. */
+
 #ifndef GEANY_FUNCTIONS_H
-#define GEANY_FUNCTIONS_H
+#define GEANY_FUNCTIONS_H 1
 
-#define plugin_add_toolbar_item \
-	geany_functions->p_plugin->plugin_add_toolbar_item
-#define plugin_module_make_resident \
-	geany_functions->p_plugin->plugin_module_make_resident
-#define plugin_signal_connect \
-	geany_functions->p_plugin->plugin_signal_connect
-#define plugin_set_key_group \
-	geany_functions->p_plugin->plugin_set_key_group
-#define plugin_show_configure \
-	geany_functions->p_plugin->plugin_show_configure
-#define plugin_timeout_add \
-	geany_functions->p_plugin->plugin_timeout_add
-#define plugin_timeout_add_seconds \
-	geany_functions->p_plugin->plugin_timeout_add_seconds
-#define plugin_idle_add \
-	geany_functions->p_plugin->plugin_idle_add
-#define plugin_builder_connect_signals \
-	geany_functions->p_plugin->plugin_builder_connect_signals
-#define document_new_file \
-	geany_functions->p_document->document_new_file
-#define document_get_current \
-	geany_functions->p_document->document_get_current
-#define document_get_from_page \
-	geany_functions->p_document->document_get_from_page
-#define document_find_by_filename \
-	geany_functions->p_document->document_find_by_filename
-#define document_find_by_real_path \
-	geany_functions->p_document->document_find_by_real_path
-#define document_save_file \
-	geany_functions->p_document->document_save_file
-#define document_open_file \
-	geany_functions->p_document->document_open_file
-#define document_open_files \
-	geany_functions->p_document->document_open_files
-#define document_remove_page \
-	geany_functions->p_document->document_remove_page
-#define document_reload_force \
-	geany_functions->p_document->document_reload_force
-#define document_set_encoding \
-	geany_functions->p_document->document_set_encoding
-#define document_set_text_changed \
-	geany_functions->p_document->document_set_text_changed
-#define document_set_filetype \
-	geany_functions->p_document->document_set_filetype
-#define document_close \
-	geany_functions->p_document->document_close
-#define document_index \
-	geany_functions->p_document->document_index
-#define document_save_file_as \
-	geany_functions->p_document->document_save_file_as
-#define document_rename_file \
-	geany_functions->p_document->document_rename_file
-#define document_get_status_color \
-	geany_functions->p_document->document_get_status_color
-#define document_get_basename_for_display \
-	geany_functions->p_document->document_get_basename_for_display
-#define document_get_notebook_page \
-	geany_functions->p_document->document_get_notebook_page
-#define document_compare_by_display_name \
-	geany_functions->p_document->document_compare_by_display_name
-#define document_compare_by_tab_order \
-	geany_functions->p_document->document_compare_by_tab_order
-#define document_compare_by_tab_order_reverse \
-	geany_functions->p_document->document_compare_by_tab_order_reverse
-#define document_find_by_id \
-	geany_functions->p_document->document_find_by_id
-#define editor_get_indent_prefs \
-	geany_functions->p_editor->editor_get_indent_prefs
-#define editor_create_widget \
-	geany_functions->p_editor->editor_create_widget
-#define editor_indicator_set_on_range \
-	geany_functions->p_editor->editor_indicator_set_on_range
-#define editor_indicator_set_on_line \
-	geany_functions->p_editor->editor_indicator_set_on_line
-#define editor_indicator_clear \
-	geany_functions->p_editor->editor_indicator_clear
-#define editor_set_indent_type \
-	geany_functions->p_editor->editor_set_indent_type
-#define editor_get_word_at_pos \
-	geany_functions->p_editor->editor_get_word_at_pos
-#define editor_get_eol_char_name \
-	geany_functions->p_editor->editor_get_eol_char_name
-#define editor_get_eol_char_len \
-	geany_functions->p_editor->editor_get_eol_char_len
-#define editor_get_eol_char \
-	geany_functions->p_editor->editor_get_eol_char
-#define editor_insert_text_block \
-	geany_functions->p_editor->editor_insert_text_block
-#define editor_get_eol_char_mode \
-	geany_functions->p_editor->editor_get_eol_char_mode
-#define editor_goto_pos \
-	geany_functions->p_editor->editor_goto_pos
-#define editor_find_snippet \
-	geany_functions->p_editor->editor_find_snippet
-#define editor_insert_snippet \
-	geany_functions->p_editor->editor_insert_snippet
-#define scintilla_send_message \
-	geany_functions->p_scintilla->scintilla_send_message
-#define scintilla_new \
-	geany_functions->p_scintilla->scintilla_new
-#define sci_send_command \
-	geany_functions->p_sci->sci_send_command
-#define sci_start_undo_action \
-	geany_functions->p_sci->sci_start_undo_action
-#define sci_end_undo_action \
-	geany_functions->p_sci->sci_end_undo_action
-#define sci_set_text \
-	geany_functions->p_sci->sci_set_text
-#define sci_insert_text \
-	geany_functions->p_sci->sci_insert_text
-#define sci_get_text \
-	geany_functions->p_sci->sci_get_text
-#define sci_get_length \
-	geany_functions->p_sci->sci_get_length
-#define sci_get_current_position \
-	geany_functions->p_sci->sci_get_current_position
-#define sci_set_current_position \
-	geany_functions->p_sci->sci_set_current_position
-#define sci_get_col_from_position \
-	geany_functions->p_sci->sci_get_col_from_position
-#define sci_get_line_from_position \
-	geany_functions->p_sci->sci_get_line_from_position
-#define sci_get_position_from_line \
-	geany_functions->p_sci->sci_get_position_from_line
-#define sci_replace_sel \
-	geany_functions->p_sci->sci_replace_sel
-#define sci_get_selected_text \
-	geany_functions->p_sci->sci_get_selected_text
-#define sci_get_selected_text_length \
-	geany_functions->p_sci->sci_get_selected_text_length
-#define sci_get_selection_start \
-	geany_functions->p_sci->sci_get_selection_start
-#define sci_get_selection_end \
-	geany_functions->p_sci->sci_get_selection_end
-#define sci_get_selection_mode \
-	geany_functions->p_sci->sci_get_selection_mode
-#define sci_set_selection_mode \
-	geany_functions->p_sci->sci_set_selection_mode
-#define sci_set_selection_start \
-	geany_functions->p_sci->sci_set_selection_start
-#define sci_set_selection_end \
-	geany_functions->p_sci->sci_set_selection_end
-#define sci_get_text_range \
-	geany_functions->p_sci->sci_get_text_range
-#define sci_get_line \
-	geany_functions->p_sci->sci_get_line
-#define sci_get_line_length \
-	geany_functions->p_sci->sci_get_line_length
-#define sci_get_line_count \
-	geany_functions->p_sci->sci_get_line_count
-#define sci_get_line_is_visible \
-	geany_functions->p_sci->sci_get_line_is_visible
-#define sci_ensure_line_is_visible \
-	geany_functions->p_sci->sci_ensure_line_is_visible
-#define sci_scroll_caret \
-	geany_functions->p_sci->sci_scroll_caret
-#define sci_find_matching_brace \
-	geany_functions->p_sci->sci_find_matching_brace
-#define sci_get_style_at \
-	geany_functions->p_sci->sci_get_style_at
-#define sci_get_char_at \
-	geany_functions->p_sci->sci_get_char_at
-#define sci_get_current_line \
-	geany_functions->p_sci->sci_get_current_line
-#define sci_has_selection \
-	geany_functions->p_sci->sci_has_selection
-#define sci_get_tab_width \
-	geany_functions->p_sci->sci_get_tab_width
-#define sci_indicator_clear \
-	geany_functions->p_sci->sci_indicator_clear
-#define sci_indicator_set \
-	geany_functions->p_sci->sci_indicator_set
-#define sci_get_contents \
-	geany_functions->p_sci->sci_get_contents
-#define sci_get_contents_range \
-	geany_functions->p_sci->sci_get_contents_range
-#define sci_get_selection_contents \
-	geany_functions->p_sci->sci_get_selection_contents
-#define sci_set_font \
-	geany_functions->p_sci->sci_set_font
-#define sci_get_line_end_position \
-	geany_functions->p_sci->sci_get_line_end_position
-#define sci_set_target_start \
-	geany_functions->p_sci->sci_set_target_start
-#define sci_set_target_end \
-	geany_functions->p_sci->sci_set_target_end
-#define sci_replace_target \
-	geany_functions->p_sci->sci_replace_target
-#define sci_set_marker_at_line \
-	geany_functions->p_sci->sci_set_marker_at_line
-#define sci_delete_marker_at_line \
-	geany_functions->p_sci->sci_delete_marker_at_line
-#define sci_is_marker_set_at_line \
-	geany_functions->p_sci->sci_is_marker_set_at_line
-#define sci_goto_line \
-	geany_functions->p_sci->sci_goto_line
-#define sci_find_text \
-	geany_functions->p_sci->sci_find_text
-#define sci_set_line_indentation \
-	geany_functions->p_sci->sci_set_line_indentation
-#define sci_get_line_indentation \
-	geany_functions->p_sci->sci_get_line_indentation
-#define sci_get_lexer \
-	geany_functions->p_sci->sci_get_lexer
-#define templates_get_template_fileheader \
-	geany_functions->p_templates->templates_get_template_fileheader
-#define utils_str_equal \
-	geany_functions->p_utils->utils_str_equal
-#define utils_string_replace_all \
-	geany_functions->p_utils->utils_string_replace_all
-#define utils_get_file_list \
-	geany_functions->p_utils->utils_get_file_list
-#define utils_write_file \
-	geany_functions->p_utils->utils_write_file
-#define utils_get_locale_from_utf8 \
-	geany_functions->p_utils->utils_get_locale_from_utf8
-#define utils_get_utf8_from_locale \
-	geany_functions->p_utils->utils_get_utf8_from_locale
-#define utils_remove_ext_from_filename \
-	geany_functions->p_utils->utils_remove_ext_from_filename
-#define utils_mkdir \
-	geany_functions->p_utils->utils_mkdir
-#define utils_get_setting_boolean \
-	geany_functions->p_utils->utils_get_setting_boolean
-#define utils_get_setting_integer \
-	geany_functions->p_utils->utils_get_setting_integer
-#define utils_get_setting_string \
-	geany_functions->p_utils->utils_get_setting_string
-#define utils_spawn_sync \
-	geany_functions->p_utils->utils_spawn_sync
-#define utils_spawn_async \
-	geany_functions->p_utils->utils_spawn_async
-#define utils_str_casecmp \
-	geany_functions->p_utils->utils_str_casecmp
-#define utils_get_date_time \
-	geany_functions->p_utils->utils_get_date_time
-#define utils_open_browser \
-	geany_functions->p_utils->utils_open_browser
-#define utils_string_replace_first \
-	geany_functions->p_utils->utils_string_replace_first
-#define utils_str_middle_truncate \
-	geany_functions->p_utils->utils_str_middle_truncate
-#define utils_str_remove_chars \
-	geany_functions->p_utils->utils_str_remove_chars
-#define utils_get_file_list_full \
-	geany_functions->p_utils->utils_get_file_list_full
-#define utils_copy_environment \
-	geany_functions->p_utils->utils_copy_environment
-#define utils_find_open_xml_tag \
-	geany_functions->p_utils->utils_find_open_xml_tag
-#define utils_find_open_xml_tag_pos \
-	geany_functions->p_utils->utils_find_open_xml_tag_pos
-#define ui_dialog_vbox_new \
-	geany_functions->p_ui->ui_dialog_vbox_new
-#define ui_frame_new_with_alignment \
-	geany_functions->p_ui->ui_frame_new_with_alignment
-#define ui_set_statusbar \
-	geany_functions->p_ui->ui_set_statusbar
-#define ui_table_add_row \
-	geany_functions->p_ui->ui_table_add_row
-#define ui_path_box_new \
-	geany_functions->p_ui->ui_path_box_new
-#define ui_button_new_with_image \
-	geany_functions->p_ui->ui_button_new_with_image
-#define ui_add_document_sensitive \
-	geany_functions->p_ui->ui_add_document_sensitive
-#define ui_widget_set_tooltip_text \
-	geany_functions->p_ui->ui_widget_set_tooltip_text
-#define ui_image_menu_item_new \
-	geany_functions->p_ui->ui_image_menu_item_new
-#define ui_lookup_widget \
-	geany_functions->p_ui->ui_lookup_widget
-#define ui_progress_bar_start \
-	geany_functions->p_ui->ui_progress_bar_start
-#define ui_progress_bar_stop \
-	geany_functions->p_ui->ui_progress_bar_stop
-#define ui_entry_add_clear_icon \
-	geany_functions->p_ui->ui_entry_add_clear_icon
-#define ui_menu_add_document_items \
-	geany_functions->p_ui->ui_menu_add_document_items
-#define ui_widget_modify_font_from_string \
-	geany_functions->p_ui->ui_widget_modify_font_from_string
-#define ui_is_keyval_enter_or_return \
-	geany_functions->p_ui->ui_is_keyval_enter_or_return
-#define ui_get_gtk_settings_integer \
-	geany_functions->p_ui->ui_get_gtk_settings_integer
-#define ui_combo_box_add_to_history \
-	geany_functions->p_ui->ui_combo_box_add_to_history
-#define ui_menu_add_document_items_sorted \
-	geany_functions->p_ui->ui_menu_add_document_items_sorted
-#define ui_lookup_stock_label \
-	geany_functions->p_ui->ui_lookup_stock_label
-#define ui_tree_view_set_tooltip_text_column \
-	geany_functions->p_ui->ui_tree_view_set_tooltip_text_column
-#define dialogs_show_question \
-	geany_functions->p_dialogs->dialogs_show_question
-#define dialogs_show_msgbox \
-	geany_functions->p_dialogs->dialogs_show_msgbox
-#define dialogs_show_save_as \
-	geany_functions->p_dialogs->dialogs_show_save_as
-#define dialogs_show_input_numeric \
-	geany_functions->p_dialogs->dialogs_show_input_numeric
-#define dialogs_show_input \
-	geany_functions->p_dialogs->dialogs_show_input
-#define msgwin_status_add \
-	geany_functions->p_msgwin->msgwin_status_add
-#define msgwin_compiler_add \
-	geany_functions->p_msgwin->msgwin_compiler_add
-#define msgwin_msg_add \
-	geany_functions->p_msgwin->msgwin_msg_add
-#define msgwin_clear_tab \
-	geany_functions->p_msgwin->msgwin_clear_tab
-#define msgwin_switch_tab \
-	geany_functions->p_msgwin->msgwin_switch_tab
-#define msgwin_set_messages_dir \
-	geany_functions->p_msgwin->msgwin_set_messages_dir
-#define encodings_convert_to_utf8 \
-	geany_functions->p_encodings->encodings_convert_to_utf8
-#define encodings_convert_to_utf8_from_charset \
-	geany_functions->p_encodings->encodings_convert_to_utf8_from_charset
-#define encodings_get_charset_from_index \
-	geany_functions->p_encodings->encodings_get_charset_from_index
-#define keybindings_send_command \
-	geany_functions->p_keybindings->keybindings_send_command
-#define keybindings_set_item \
-	geany_functions->p_keybindings->keybindings_set_item
-#define keybindings_get_item \
-	geany_functions->p_keybindings->keybindings_get_item
-#define keybindings_get_modifiers \
-	geany_functions->p_keybindings->keybindings_get_modifiers
-#define tm_get_real_path \
-	geany_functions->p_tm->tm_get_real_path
-#define tm_source_file_new \
-	geany_functions->p_tm->tm_source_file_new
-#define tm_source_file_free \
-	geany_functions->p_tm->tm_source_file_free
-#define tm_workspace_add_source_file \
-	geany_functions->p_tm->tm_workspace_add_source_file
-#define tm_workspace_remove_source_file \
-	geany_functions->p_tm->tm_workspace_remove_source_file
-#define tm_workspace_add_source_files \
-	geany_functions->p_tm->tm_workspace_add_source_files
-#define tm_workspace_remove_source_files \
-	geany_functions->p_tm->tm_workspace_remove_source_files
-#define search_show_find_in_files_dialog \
-	geany_functions->p_search->search_show_find_in_files_dialog
-#define highlighting_get_style \
-	geany_functions->p_highlighting->highlighting_get_style
-#define highlighting_set_styles \
-	geany_functions->p_highlighting->highlighting_set_styles
-#define highlighting_is_string_style \
-	geany_functions->p_highlighting->highlighting_is_string_style
-#define highlighting_is_comment_style \
-	geany_functions->p_highlighting->highlighting_is_comment_style
-#define highlighting_is_code_style \
-	geany_functions->p_highlighting->highlighting_is_code_style
-#define filetypes_detect_from_file \
-	geany_functions->p_filetypes->filetypes_detect_from_file
-#define filetypes_lookup_by_name \
-	geany_functions->p_filetypes->filetypes_lookup_by_name
-#define filetypes_index \
-	geany_functions->p_filetypes->filetypes_index
-#define filetypes_get_display_name \
-	geany_functions->p_filetypes->filetypes_get_display_name
-#define filetypes_get_sorted_by_name \
-	geany_functions->p_filetypes->filetypes_get_sorted_by_name
-#define navqueue_goto_line \
-	geany_functions->p_navqueue->navqueue_goto_line
-#define main_reload_configuration \
-	geany_functions->p_main->main_reload_configuration
-#define main_locale_init \
-	geany_functions->p_main->main_locale_init
-#define main_is_realized \
-	geany_functions->p_main->main_is_realized
-#define stash_group_new \
-	geany_functions->p_stash->stash_group_new
-#define stash_group_add_boolean \
-	geany_functions->p_stash->stash_group_add_boolean
-#define stash_group_add_integer \
-	geany_functions->p_stash->stash_group_add_integer
-#define stash_group_add_string \
-	geany_functions->p_stash->stash_group_add_string
-#define stash_group_add_string_vector \
-	geany_functions->p_stash->stash_group_add_string_vector
-#define stash_group_load_from_key_file \
-	geany_functions->p_stash->stash_group_load_from_key_file
-#define stash_group_save_to_key_file \
-	geany_functions->p_stash->stash_group_save_to_key_file
-#define stash_group_free \
-	geany_functions->p_stash->stash_group_free
-#define stash_group_load_from_file \
-	geany_functions->p_stash->stash_group_load_from_file
-#define stash_group_save_to_file \
-	geany_functions->p_stash->stash_group_save_to_file
-#define stash_group_add_toggle_button \
-	geany_functions->p_stash->stash_group_add_toggle_button
-#define stash_group_add_radio_buttons \
-	geany_functions->p_stash->stash_group_add_radio_buttons
-#define stash_group_add_spin_button_integer \
-	geany_functions->p_stash->stash_group_add_spin_button_integer
-#define stash_group_add_combo_box \
-	geany_functions->p_stash->stash_group_add_combo_box
-#define stash_group_add_combo_box_entry \
-	geany_functions->p_stash->stash_group_add_combo_box_entry
-#define stash_group_add_entry \
-	geany_functions->p_stash->stash_group_add_entry
-#define stash_group_add_widget_property \
-	geany_functions->p_stash->stash_group_add_widget_property
-#define stash_group_display \
-	geany_functions->p_stash->stash_group_display
-#define stash_group_update \
-	geany_functions->p_stash->stash_group_update
-#define stash_group_free_settings \
-	geany_functions->p_stash->stash_group_free_settings
-#define symbols_get_context_separator \
-	geany_functions->p_symbols->symbols_get_context_separator
-#define build_activate_menu_item \
-	geany_functions->p_build->build_activate_menu_item
-#define build_get_current_menu_item \
-	geany_functions->p_build->build_get_current_menu_item
-#define build_remove_menu_item \
-	geany_functions->p_build->build_remove_menu_item
-#define build_set_menu_item \
-	geany_functions->p_build->build_set_menu_item
-#define build_get_group_count \
-	geany_functions->p_build->build_get_group_count
-#define project_write_config \
-	geany_functions->p_project->project_write_config
+#include "geanyplugin.h"
 
-#endif
+#endif /* GEANY_FUNCTIONS */


Modified: plugins/geanyplugin.h
16 lines changed, 14 insertions(+), 2 deletions(-)
===================================================================
@@ -28,27 +28,39 @@
 #ifndef GEANY_PLUGIN_H
 #define GEANY_PLUGIN_H 1
 
-/* Note: only include headers that define types or macros, not just functions */
+#ifndef HAVE_PLUGINS
+# define HAVE_PLUGINS 1
+#endif
+
+/* Only include public headers here */
 #include "app.h"
+#include "build.h"
+#include "dialogs.h"
 #include "document.h"
 #include "editor.h"
 #include "encodings.h"
 #include "filetypes.h"
 #include "geany.h"
+#include "geanyfunctions.h"
 #include "highlighting.h"
 #include "keybindings.h"
+#include "main.h"
 #include "msgwindow.h"
+#include "navqueue.h"
 #include "plugindata.h"
+#include "pluginutils.h"
 #include "prefs.h"
 #include "project.h"
+#include "sciwrappers.h"
 #include "search.h"
 #include "stash.h"
 #include "support.h"
+#include "symbols.h"
 #include "templates.h"
 #include "toolbar.h"
 #include "ui_utils.h"
 #include "utils.h"
 
-#include "geanyfunctions.h"
+#include "gtkcompat.h"
 
 #endif


Modified: plugins/genapi.py
98 lines changed, 0 insertions(+), 98 deletions(-)
===================================================================
@@ -1,98 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-#       genapi.py - this file is part of Geany, a fast and lightweight IDE
-#
-#       Copyright 2008-2011 Nick Treleaven <nick.treleaven<at>btinternet.com>
-#       Copyright 2008-2011 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
-#
-#       This program is free software; you can redistribute it and/or modify
-#       it under the terms of the GNU General Public License as published by
-#       the Free Software Foundation; either version 2 of the License, or
-#       (at your option) any later version.
-#
-#       This program is distributed in the hope that it will be useful,
-#       but WITHOUT ANY WARRANTY; without even the implied warranty of
-#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#       GNU General Public License for more details.
-#
-#       You should have received a copy of the GNU General Public License
-#       along with this program; if not, write to the Free Software
-#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# $(Id)
-
-r"""
-Creates macros for each plugin API function pointer, e.g.:
-
-#define plugin_add_toolbar_item \
-    geany_functions->p_plugin->plugin_add_toolbar_item
-"""
-
-
-import re
-import sys
-
-
-def get_function_names():
-    names = []
-    filep = open('../src/plugins.c')
-    while 1:
-        line = filep.readline()
-        if line == "":
-            break
-        match = re.match("^\t&([a-z][a-z0-9_]+)", line)
-        if match:
-            symbol = match.group(1)
-            if not symbol.endswith('_funcs'):
-                names.append(symbol)
-    filep.close()
-    return names
-
-
-def get_api_tuple(source):
-    match = re.match("^([a-z]+)_([a-z][a-z0-9_]+)$", source)
-    return 'p_' + match.group(1), match.group(2)
-
-
-header = \
-r'''/* This file is generated automatically by genapi.py - do not edit. */
-
-/** @file %s @ref geany_functions wrappers.
- * This allows the use of normal API function names in plugins by defining macros.
- *
- * E.g.:@code
- * #define plugin_add_toolbar_item \
- * 	geany_functions->p_plugin->plugin_add_toolbar_item @endcode
- *
- * You need to declare the @ref geany_functions symbol yourself.
- *
- * Note: This must be included after all other API headers to prevent conflicts with
- * other header's function prototypes - this is done for you when using geanyplugin.h.
- */
-
-#ifndef GEANY_FUNCTIONS_H
-#define GEANY_FUNCTIONS_H
-
-'''
-
-if __name__ == "__main__":
-    outfile = 'geanyfunctions.h'
-
-    fnames = get_function_names()
-    if not fnames:
-        sys.exit("No function names read!")
-
-    f = open(outfile, 'w')
-    f.write(header % (outfile))
-
-    for fname in fnames:
-        ptr, name = get_api_tuple(fname)
-        # note: name no longer needed
-        f.write('#define %s \\\n\tgeany_functions->%s->%s\n' % (fname, ptr, fname))
-
-    f.write('\n#endif\n')
-    f.close()
-
-    if not '-q' in sys.argv:
-        sys.stdout.write('Generated %s\n' % outfile)


Modified: plugins/htmlchars.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -525,8 +525,8 @@ static void tools_show_dialog_insert_special_chars(void)
 		swin = gtk_scrolled_window_new(NULL, NULL);
 		gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC,
 			GTK_POLICY_AUTOMATIC);
-		gtk_scrolled_window_add_with_viewport(
-					GTK_SCROLLED_WINDOW(swin), GTK_WIDGET(sc_tree));
+		gtk_container_add(GTK_CONTAINER(swin), GTK_WIDGET(sc_tree));
+		gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(swin), GTK_SHADOW_IN);
 
 		gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0);
 


Modified: plugins/splitwindow.c
9 lines changed, 7 insertions(+), 2 deletions(-)
===================================================================
@@ -299,7 +299,7 @@ static void split_view(gboolean horizontal)
 {
 	GtkWidget *notebook = geany_data->main_widgets->notebook;
 	GtkWidget *parent = gtk_widget_get_parent(notebook);
-	GtkWidget *pane, *toolbar, *box;
+	GtkWidget *pane, *toolbar, *box, *splitwin_notebook;
 	GeanyDocument *doc = document_get_current();
 	gint width = gtk_widget_get_allocated_width(notebook) / 2;
 	gint height = gtk_widget_get_allocated_height(notebook) / 2;
@@ -321,9 +321,14 @@ static void split_view(gboolean horizontal)
 	box = gtk_vbox_new(FALSE, 0);
 	toolbar = create_toolbar();
 	gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, FALSE, 0);
-	gtk_container_add(GTK_CONTAINER(pane), box);
 	edit_window.vbox = box;
 
+	/* used just to make the split window look the same as the main editor */
+	splitwin_notebook = gtk_notebook_new();
+	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(splitwin_notebook), FALSE);
+	gtk_notebook_append_page(GTK_NOTEBOOK(splitwin_notebook), box, NULL);
+	gtk_container_add(GTK_CONTAINER(pane), splitwin_notebook);
+
 	set_editor(&edit_window, doc->editor);
 
 	if (horizontal)


Modified: po/POTFILES.in
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -16,8 +16,8 @@ src/geanyentryaction.c
 src/highlighting.c
 src/keybindings.c
 src/keyfile.c
+src/libmain.c
 src/log.c
-src/main.c
 src/msgwindow.c
 src/navqueue.c
 src/notebook.c


Modified: po/de.po
110 lines changed, 61 insertions(+), 49 deletions(-)
===================================================================
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Geany 1.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-04 19:03+0100\n"
-"PO-Revision-Date: 2015-03-04 19:04+0100\n"
+"POT-Creation-Date: 2015-03-31 07:09+0200\n"
+"PO-Revision-Date: 2015-03-31 07:10+0200\n"
 "Last-Translator: Frank Lanitz <frank at frank.uvena.de>\n"
 "Language-Team: German <geany-i18n at uvena.de>\n"
 "Language: de\n"
@@ -1641,7 +1641,7 @@ msgstr ""
 msgid "<b>Terminal</b>"
 msgstr "<b>Terminal</b>"
 
-#: ../data/geany.glade.h:334 ../src/prefs.c:1619 ../src/vte.c:301
+#: ../data/geany.glade.h:334 ../src/prefs.c:1619 ../src/vte.c:298
 msgid "Terminal"
 msgstr "Terminal"
 
@@ -1684,7 +1684,7 @@ msgid "Sa_ve All"
 msgstr "A_lle speichern"
 
 #: ../data/geany.glade.h:345 ../src/document.c:1558 ../src/document.c:3489
-#: ../src/sidebar.c:710
+#: ../src/sidebar.c:711
 msgid "_Reload"
 msgstr "Neu _laden"
 
@@ -3196,29 +3196,29 @@ msgstr "Schlechter RegEx für Dateityp %s: %s"
 msgid "untitled"
 msgstr "unbenannt"
 
-#: ../src/highlighting.c:1218 ../src/main.c:838 ../src/socket.c:171
+#: ../src/highlighting.c:1220 ../src/main.c:838 ../src/socket.c:171
 #: ../src/templates.c:233
 #, c-format
 msgid "Could not find file '%s'."
 msgstr "Konnte die Datei »%s« nicht finden."
 
-#: ../src/highlighting.c:1288
+#: ../src/highlighting.c:1290
 msgid "Default"
 msgstr "Standard"
 
-#: ../src/highlighting.c:1329
+#: ../src/highlighting.c:1331
 msgid "The current filetype overrides the default style."
 msgstr ""
 "Der aktuelle Dateityp überschreibt die Standardeinstellungen für die "
 "Darstellung."
 
-#: ../src/highlighting.c:1330
+#: ../src/highlighting.c:1332
 msgid "This may cause color schemes to display incorrectly."
 msgstr ""
 "Dies kann dazu führen, dass eventuell Farbprofile nicht korrekt angezeigt "
 "werden."
 
-#: ../src/highlighting.c:1355
+#: ../src/highlighting.c:1357
 msgid "Color Schemes"
 msgstr "Farbschemata"
 
@@ -3263,7 +3263,7 @@ msgstr "Ansicht"
 msgid "Document"
 msgstr "Dokument"
 
-#: ../src/keybindings.c:256 ../src/keybindings.c:608 ../src/project.c:511
+#: ../src/keybindings.c:256 ../src/keybindings.c:608 ../src/project.c:512
 #: ../src/ui_utils.c:2195
 msgid "Build"
 msgstr "Erstellen"
@@ -3740,12 +3740,12 @@ msgstr "Tastenkürzel"
 msgid "The following keyboard shortcuts are configurable:"
 msgstr "Die folgenden Tastenkürzel sind frei definierbar:"
 
-#: ../src/keyfile.c:1006
+#: ../src/keyfile.c:1010
 msgid "Type here what you want, use it as a notice/scratch board"
 msgstr ""
 "Schreiben Sie hier rein, was sie möchten. Sie können es als Notizbuch nutzen."
 
-#: ../src/keyfile.c:1233
+#: ../src/keyfile.c:1237
 msgid "Failed to load one or more session files."
 msgstr ""
 "Eine oder mehrere Datei(en) aus der letzten Sitzung konnte(n) nicht geladen "
@@ -4003,11 +4003,11 @@ msgstr "Tasten festlegen"
 msgid "Press the combination of the keys you want to use for \"%s\"."
 msgstr "Welche Tastenkombination soll für »%s« genutzt werden?"
 
-#: ../src/prefs.c:225 ../src/symbols.c:2298 ../src/sidebar.c:744
+#: ../src/prefs.c:225 ../src/symbols.c:2298 ../src/sidebar.c:745
 msgid "_Expand All"
 msgstr "Alle a_usklappen"
 
-#: ../src/prefs.c:230 ../src/symbols.c:2303 ../src/sidebar.c:750
+#: ../src/prefs.c:230 ../src/symbols.c:2303 ../src/sidebar.c:751
 msgid "_Collapse All"
 msgstr "Alle _einklappen"
 
@@ -4172,11 +4172,11 @@ msgstr ""
 "Der Pfad der Datei repräsentiert das Projekt und beinhaltet dessen "
 "Einstellungen. Gewöhnlich sollte sie die »%s« Dateiendung besitzen."
 
-#: ../src/project.c:212 ../src/project.c:484
+#: ../src/project.c:212 ../src/project.c:485
 msgid "Choose Project Base Path"
 msgstr "Auswahl des Projektbasisverzeichnisses"
 
-#: ../src/project.c:251 ../src/project.c:621 ../src/project.c:1159
+#: ../src/project.c:251 ../src/project.c:622 ../src/project.c:1160
 msgid "Project file could not be written"
 msgstr "Projektdatei konnte nicht geschrieben werden."
 
@@ -4185,7 +4185,7 @@ msgstr "Projektdatei konnte nicht geschrieben werden."
 msgid "Project \"%s\" created."
 msgstr "Projekt »%s« erstellt."
 
-#: ../src/project.c:296 ../src/project.c:328 ../src/project.c:1021
+#: ../src/project.c:296 ../src/project.c:328 ../src/project.c:1022
 #, c-format
 msgid "Project file \"%s\" could not be loaded."
 msgstr "Die Projektdatei »%s« konnte nicht geladen werden."
@@ -4203,67 +4203,67 @@ msgstr "Projektdateien"
 msgid "Project \"%s\" closed."
 msgstr "Projekt »%s« geschlossen."
 
-#: ../src/project.c:624
+#: ../src/project.c:625
 #, c-format
 msgid "Project \"%s\" saved."
 msgstr "Projekt »%s« gespeichert."
 
-#: ../src/project.c:657
+#: ../src/project.c:658
 msgid "Do you want to close it before proceeding?"
 msgstr "Möchten Sie das Projekt schließen bevor Sie fortfahren?"
 
-#: ../src/project.c:658
+#: ../src/project.c:659
 #, c-format
 msgid "The '%s' project is open."
 msgstr "Das Projekt »%s« ist geöffnet."
 
-#: ../src/project.c:707
+#: ../src/project.c:708
 msgid "The specified project name is too short."
 msgstr "Der eingegebene Projektname ist zu kurz."
 
-#: ../src/project.c:713
+#: ../src/project.c:714
 #, c-format
 msgid "The specified project name is too long (max. %d characters)."
 msgstr "Der eingegebene Projektname ist zu lang (max. %d Zeichen)."
 
-#: ../src/project.c:725
+#: ../src/project.c:726
 msgid "You have specified an invalid project filename."
 msgstr "Sie haben einen ungültigen Dateinamen angegeben."
 
-#: ../src/project.c:748
+#: ../src/project.c:749
 msgid "Create the project's base path directory?"
 msgstr "Soll das Projektbasisverzeichnis erstellt werden?"
 
-#: ../src/project.c:749
+#: ../src/project.c:750
 #, c-format
 msgid "The path \"%s\" does not exist."
 msgstr "Der Pfad »%s« existiert nicht."
 
-#: ../src/project.c:758
+#: ../src/project.c:759
 #, c-format
 msgid "Project base directory could not be created (%s)."
 msgstr "Projektverzeichnis konnte nicht erstellt werden (%s)."
 
-#: ../src/project.c:771
+#: ../src/project.c:772
 #, c-format
 msgid "Project file could not be written (%s)."
 msgstr "Projektdatei konnte nicht geschrieben werden (%s)."
 
-#: ../src/project.c:777 ../src/search.c:630
+#: ../src/project.c:778 ../src/search.c:630
 msgid "_Replace"
 msgstr "_Ersetzen"
 
-#: ../src/project.c:779 ../plugins/export.c:332
+#: ../src/project.c:780 ../plugins/export.c:332
 #, c-format
 msgid "The file '%s' already exists. Do you want to overwrite it?"
 msgstr "Die Datei »%s« existiert bereits. Soll sie überschrieben werden?"
 
 #. initialise the dialog
-#: ../src/project.c:925 ../src/project.c:936
+#: ../src/project.c:926 ../src/project.c:937
 msgid "Choose Project Filename"
 msgstr "Auswahl des Projektdateinamens"
 
-#: ../src/project.c:1011
+#: ../src/project.c:1012
 #, c-format
 msgid "Project \"%s\" opened."
 msgstr "Projekt »%s« geöffnet."
@@ -5150,27 +5150,27 @@ msgstr "Wörter:"
 msgid "Characters:"
 msgstr "Buchstaben:"
 
-#: ../src/sidebar.c:177
+#: ../src/sidebar.c:178
 msgid "No tags found"
 msgstr "Keine Symbole gefunden"
 
-#: ../src/sidebar.c:594
+#: ../src/sidebar.c:595
 msgid "Show S_ymbol List"
 msgstr "S_ymbolliste anzeigen"
 
-#: ../src/sidebar.c:606
+#: ../src/sidebar.c:607
 msgid "Show _Document List"
 msgstr "_Dokumentenliste anzeigen"
 
-#: ../src/sidebar.c:618 ../plugins/filebrowser.c:665
+#: ../src/sidebar.c:619 ../plugins/filebrowser.c:665
 msgid "H_ide Sidebar"
 msgstr "Seitenleiste _verstecken"
 
-#: ../src/sidebar.c:723 ../plugins/filebrowser.c:636
+#: ../src/sidebar.c:724 ../plugins/filebrowser.c:636
 msgid "_Find in Files..."
 msgstr "In _Dateien suchen..."
 
-#: ../src/sidebar.c:733
+#: ../src/sidebar.c:734
 msgid "Show _Paths"
 msgstr "_Pfade anzeigen"
 
@@ -5342,24 +5342,36 @@ msgstr "Klassischer Apple (CR)"
 msgid "Unix (LF)"
 msgstr "Unix (LF)"
 
-#: ../src/vte.c:440
+#: ../src/utils.c:388
+msgid "CRLF"
+msgstr "CRLF"
+
+#: ../src/utils.c:389
+msgid "CR"
+msgstr "CR"
+
+#: ../src/utils.c:390
+msgid "LF"
+msgstr "LF"
+
+#: ../src/vte.c:437
 #, c-format
 msgid "invalid VTE library \"%s\": missing symbol \"%s\""
 msgstr "Ungültige VTE-Bibliothek \"%s\": Es fehlt das Symbol \"%s\""
 
-#: ../src/vte.c:589
+#: ../src/vte.c:586
 msgid "_Set Path From Document"
 msgstr "Pfad des Dokumentes _übernehmen"
 
-#: ../src/vte.c:594
+#: ../src/vte.c:591
 msgid "_Restart Terminal"
 msgstr "Terminal _neustarten"
 
-#: ../src/vte.c:617
+#: ../src/vte.c:614
 msgid "_Input Methods"
 msgstr "Eingabe_methoden"
 
-#: ../src/vte.c:711
+#: ../src/vte.c:708
 msgid ""
 "Could not change the directory in the VTE because it probably contains a "
 "command."
@@ -5862,28 +5874,28 @@ msgstr "Teilt das Editorfenster in zwei Teilfenster."
 msgid "Show the current document"
 msgstr "Zeige das aktuelle Dokument"
 
-#: ../plugins/splitwindow.c:290 ../plugins/splitwindow.c:418
-#: ../plugins/splitwindow.c:433
+#: ../plugins/splitwindow.c:290 ../plugins/splitwindow.c:423
+#: ../plugins/splitwindow.c:438
 msgid "_Unsplit"
 msgstr "Teilung _aufheben"
 
-#: ../plugins/splitwindow.c:400
+#: ../plugins/splitwindow.c:405
 msgid "_Split Window"
 msgstr "Fenster _teilen"
 
-#: ../plugins/splitwindow.c:408
+#: ../plugins/splitwindow.c:413
 msgid "_Side by Side"
 msgstr "_Seite an Seite"
 
-#: ../plugins/splitwindow.c:413
+#: ../plugins/splitwindow.c:418
 msgid "_Top and Bottom"
 msgstr "_Oben und Unten"
 
-#: ../plugins/splitwindow.c:429
+#: ../plugins/splitwindow.c:434
 msgid "Side by Side"
 msgstr "Seite an Seite"
 
-#: ../plugins/splitwindow.c:431
+#: ../plugins/splitwindow.c:436
 msgid "Top and Bottom"
 msgstr "Oben und Unten"
 


Modified: po/fr.po
1337 lines changed, 671 insertions(+), 666 deletions(-)
===================================================================
No diff available, check online


Modified: po/pt.po
5222 lines changed, 2860 insertions(+), 2362 deletions(-)
===================================================================
No diff available, check online


Modified: scintilla/Makefile.am
9 lines changed, 5 insertions(+), 4 deletions(-)
===================================================================
@@ -1,7 +1,7 @@
 
 SUBDIRS = include
 
-noinst_LIBRARIES=libscintilla.a
+noinst_LTLIBRARIES=libscintilla.la
 
 AM_CXXFLAGS = -DNDEBUG -DGTK -DSCI_LEXER -DG_THREADS_IMPL_NONE
 
@@ -139,13 +139,14 @@ src/XPM.cxx \
 src/XPM.h \
 $(LEXER_SRCS)
 
-libscintilla_a_SOURCES = $(SRCS)
+libscintilla_la_SOURCES = $(SRCS)
 
-AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/include -I$(srcdir)/src -I$(srcdir)/lexlib @GTK_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/include -I$(srcdir)/src -I$(srcdir)/lexlib \
+	@GTK_CFLAGS@ @LIBGEANY_CFLAGS@
 
 marshallers: gtk/scintilla-marshal.list
 	glib-genmarshal --prefix scintilla_marshal gtk/scintilla-marshal.list --header > gtk/scintilla-marshal.h
 	glib-genmarshal --prefix scintilla_marshal gtk/scintilla-marshal.list --body > gtk/scintilla-marshal.c
 
 EXTRA_DIST=gtk/scintilla-marshal.list License.txt README version.txt \
-	makefile.win32
+	gtk/makefile.win32


Modified: scintilla/gtk/ScintillaGTK.cxx
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -3104,6 +3104,7 @@ sptr_t ScintillaGTK::DirectFunction(
 	return reinterpret_cast<ScintillaGTK *>(ptr)->WndProc(iMessage, wParam, lParam);
 }
 
+GEANY_API_SYMBOL
 sptr_t scintilla_send_message(ScintillaObject *sci, unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
 	ScintillaGTK *psci = reinterpret_cast<ScintillaGTK *>(sci->pscin);
 	return psci->WndProc(iMessage, wParam, lParam);
@@ -3115,6 +3116,7 @@ static void scintilla_init(ScintillaObject *sci);
 extern void Platform_Initialise();
 extern void Platform_Finalise();
 
+GEANY_API_SYMBOL
 GType scintilla_get_type() {
 	static GType scintilla_type = 0;
 	try {
@@ -3252,6 +3254,7 @@ static void scintilla_init(ScintillaObject *sci) {
 	}
 }
 
+GEANY_API_SYMBOL
 GtkWidget* scintilla_new() {
 	GtkWidget *widget = GTK_WIDGET(g_object_new(scintilla_get_type(), NULL));
 	gtk_widget_set_direction(widget, GTK_TEXT_DIR_LTR);


Modified: scintilla/gtk/makefile.win32
4 lines changed, 3 insertions(+), 1 deletions(-)
===================================================================
@@ -32,7 +32,9 @@ vpath %.h ../src ../include ../lexlib
 vpath %.cxx ../src ../lexlib ../lexers
 
 INCLUDEDIRS=-I ../include -I ../src -I ../lexlib
-CXXBASEFLAGS=-Wall -Wno-missing-braces -Wno-char-subscripts -DGTK -DSCI_LEXER $(INCLUDEDIRS)
+CXXBASEFLAGS=-Wall -Wno-missing-braces -Wno-char-subscripts -DGTK -DSCI_LEXER $(INCLUDEDIRS) \
+	-DGEANY_EXPORT_SYMBOL="__declspec(dllexport)" \
+	-DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL
 
 ifdef THREADS
 THREADFLAGS=


Modified: scintilla/scintilla_changes.patch
47 lines changed, 38 insertions(+), 9 deletions(-)
===================================================================
@@ -1,8 +1,37 @@
-A patch to Scintilla 2.29 containing our changes to Scintilla
-(removing unused lexers and an updated marshallers file).
-diff -Naur scintilla_orig/gtk/scintilla-marshal.c scintilla/gtk/scintilla-marshal.c
---- scintilla_orig/gtk/scintilla-marshal.c	2010-10-27 23:15:45.000000000 +0200
-+++ scintilla/gtk/scintilla-marshal.c	2011-04-03 17:42:59.000000000 +0200
+A patch to Scintilla 3.54 containing our changes to Scintilla
+(removing unused lexers, exporting symbols, and an updated marshallers file).
+diff --git scintilla/gtk/ScintillaGTK.cxx scintilla/gtk/ScintillaGTK.cxx
+index 0871ca2..49dc278 100644
+--- scintilla/gtk/ScintillaGTK.cxx
++++ scintilla/gtk/ScintillaGTK.cxx
+@@ -3104,6 +3104,7 @@ sptr_t ScintillaGTK::DirectFunction(
+ 	return reinterpret_cast<ScintillaGTK *>(ptr)->WndProc(iMessage, wParam, lParam);
+ }
+ 
++GEANY_API_SYMBOL
+ sptr_t scintilla_send_message(ScintillaObject *sci, unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
+ 	ScintillaGTK *psci = reinterpret_cast<ScintillaGTK *>(sci->pscin);
+ 	return psci->WndProc(iMessage, wParam, lParam);
+@@ -3115,6 +3116,7 @@ static void scintilla_init(ScintillaObject *sci);
+ extern void Platform_Initialise();
+ extern void Platform_Finalise();
+ 
++GEANY_API_SYMBOL
+ GType scintilla_get_type() {
+ 	static GType scintilla_ty@@ Diff output truncated at 100000 characters. @@

--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list