<p>Since you asked nicely on IRC some suggestions <img class="emoji" title=":smile:" alt=":smile:" src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f604.png" height="20" width="20" align="absmiddle"> </p>

<p>The keybinding treeview in prefs is reloaded each time the dialog is shown, thats why previous state of expanders is lost.  You would need to ensure that you are informed of expand/contract occurrences (they may happen in GTK without Geany intervention, not sure), store that state somewhere and re-apply it after the treeview is re-loaded.</p>

<p>But the catch is that the number and order of sections can change as plugins are enabled and disabled (ok, the Geany part won't change, but the plugins part will).  Not sure how to handle that.</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/issues/645#issuecomment-152526918">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ4Cfpc7P2HA1NFxfhBekb0jnhP_Wks5pA2jEgaJpZM4F5YKT.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/645#issuecomment-152526918"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>