<blockquote>
<p>That doesn't automatically make everything else strictly private, though. [...]. So these "private" members are in fact part of the ABI and in practice public.</p>
</blockquote>

<p>You keep confusing compiler with convention. When we say "public" or "private" we mean "plugins should/shouldn't use this stuff", not "plugins can/can't technically use this stuff". Once you grok the difference, it will become clear. Basically if you're thinking in terms of ABI, you're not getting it :) A better example <a href="https://github.com/b4n" class="user-mention">@b4n</a> eluded to is "private" fields/methods in Python. To make something "private" in a class, you append/prepend an underscore or some other convention. The members are still technically public, but the convention is that if there's an underscore like that, they're private and should not be used outside of the class, and there's no guarantee they won't change.</p>

<blockquote>
<p>I didn't actually start to document the members, their status is unchanged. I merely documented the <em>type</em></p>
</blockquote>

<p>You added new types to the "public" API (remember "public" by convention, nothing to do with compiler/ABI).</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/geany/geany/commit/302b40e9778ff49407902f3ef9f272ed202f4547#commitcomment-15068661">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ-MlkfKKnYIHvJOiUa1-Dx3s57n9ks5pRCJ8gaJpZM4G3NbP.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/commit/302b40e9778ff49407902f3ef9f272ed202f4547#commitcomment-15068661"></link>
  <meta itemprop="name" content="View Commit"></meta>
</div>
<meta itemprop="description" content="View this Commit on GitHub"></meta>
</div>