<blockquote>
<p>What do you mean by "specialist knowledge"? GObject interfaces are a fundamental part of GObject (and GLib in general), just like signals.</p>
</blockquote>
<p>Sorry not to be clear, DEFINING new GObjects is what is not so common, its no longer even in Glib.</p>
<blockquote>
<p>To make a core feature plugin-replacable you have to change Geany anyway. Using either singals or interfaces requires knowledge about the GObject fundamentals.</p>
</blockquote>
<p>How do you need any GObject knowledge to emit signals? eg <a href="https://github.com/geany/geany/blob/master/src/document.c#L711">https://github.com/geany/geany/blob/master/src/document.c#L711</a></p>
<p>Note, I am not advocating for signals specifically, just something that is as easy to use on both sides as signals are.  I agree with your observation on passing data but don't think the other inefficiencies matter too much.</p>
<blockquote>
<p>Interfaces are much more lightweight and easier to use correctly (IMO).</p>
</blockquote>
<p>I will admit lack of familiarity, maybe it would be better if you could show an example, say what would it need in Geany and in the plugin for the plugin to replace Geany's autoindent <a href="https://github.com/geany/geany/blob/master/src/editor.c#L1504">functionality</a> or just to get the indent <a href="https://github.com/geany/geany/blob/master/src/editor.c#L1468">size</a></p>

<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, <a href="https://github.com/geany/geany/issues/1458#issuecomment-294350891">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ17d4pyg4-hZ_6WyKkPkKzFeyMmXks5rwhJbgaJpZM4M1Ajm">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJzUGpQCRNUOIJKLwUtVXILy5Y94Oks5rwhJbgaJpZM4M1Ajm.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/issues/1458#issuecomment-294350891"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@elextr in #1458: \u003e What do you mean by \"specialist knowledge\"? GObject interfaces are a fundamental part of GObject (and GLib in general), just like signals.\r\n\r\nSorry not to be clear, DEFINING new GObjects is what is not so common, its no longer even in Glib.\r\n\r\n\u003e To make a core feature plugin-replacable you have to change Geany anyway. Using either singals or interfaces requires knowledge about the GObject fundamentals.\r\n\r\nHow do you need any GObject knowledge to emit signals? eg https://github.com/geany/geany/blob/master/src/document.c#L711\r\n\r\nNote, I am not advocating for signals specifically, just something that is as easy to use on both sides as signals are.  I agree with your observation on passing data but don't think the other inefficiencies matter too much.\r\n\r\n\u003e  Interfaces are much more lightweight and easier to use correctly (IMO).\r\n\r\nI will admit lack of familiarity, maybe it would be better if you could show an example, say what would it need in Geany and in the plugin for the plugin to replace Geany's autoindent [functionality](https://github.com/geany/geany/blob/master/src/editor.c#L1504) or just to get the indent [size](https://github.com/geany/geany/blob/master/src/editor.c#L1468) "}],"action":{"name":"View Issue","url":"https://github.com/geany/geany/issues/1458#issuecomment-294350891"}}}</script>