<p>This are the changes to geany that allow plugin signals to be used by GI-based plugins (e.g. through peasy).</p>

<ul>
<li>signal params must be boxed or gobject (I used gboxed)</li>
<li>the GType must be passed to g_signal_new()</li>
<li>since glib 2.30 there is a generic marshaller which can be used. otherwise we'd need a lot of duplicated, new marshaller code. I chosed to use the generic marshaller (by passing NULL to g_signal_new's marshall func)</li>
<li>geanyobject must be exposed to connect to. I chosed to implement a get_instance() function (singleton pattern)</li>
</ul>

<p>Please review and comment</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/geany/geany/pull/1038'>https://github.com/geany/geany/pull/1038</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>plugin api: convert GeanyDocument to GBoxed internally</li>
  <li>plugin api: convert GeanyFiletype to GBoxed internally</li>
  <li>plugin api: convert GeanyEditor to GBoxed internally</li>
  <li>plugin api: rename document_new_file to _create_file</li>
  <li>plugin api: export geanyobject</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-0">plugins/geanyplugin.h</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-1">src/Makefile.am</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-2">src/document.c</a>
    (32)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-3">src/document.h</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-4">src/editor.c</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-5">src/editor.h</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-6">src/filetypes.c</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-7">src/filetypes.h</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-8">src/geanyobject.c</a>
    (231)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/1038/files#diff-9">src/geanyobject.h</a>
    (3)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/geany/geany/pull/1038.patch'>https://github.com/geany/geany/pull/1038.patch</a></li>
  <li><a href='https://github.com/geany/geany/pull/1038.diff'>https://github.com/geany/geany/pull/1038.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly or <a href="https://github.com/geany/geany/pull/1038">view it on GitHub</a><img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ13KSO_vW0hCSkKecFYLyYQ-GJbzks5qCO6OgaJpZM4Ifw_7.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/pull/1038"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>