<p>Looks unnecessarily complex.  Shouldn't need all the changes to the internals.</p>

<p>Get any command is a good idea, yes.  To do that I suggest you modify <code>build_get_menu_item()</code> which is not in the API and not used in Geany.  Just add the field parameter, and the switch statement from <code>build_get_current_menu_item()</code> then add API_SYMBOL and fix the doxygen and there ya go, local changes only.</p>

<p>I'm not sure about <code>set_current</code>.  Sure its symmetric, but its modifying a menu item from an unknown source, which could include the defaults.  I don't think thats all that sensible, but I'm open to discussion if you can give a reasonable use-case, but at the moment I think the plugin should know what its modifying.</p>

<p>And don't forget you have to put the original values back in the plugin shutdown code, its hard to do that when you don't know what was modified.</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/pull/1225#issuecomment-246219258">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJzrdv0wkEqGtEwfOMnnAjnAzzYLfks5qpKqRgaJpZM4J6CEe">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ0_jUrwFlAMyldoJEwZghoCVCKZlks5qpKqRgaJpZM4J6CEe.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/1225#issuecomment-246219258"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request 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 #1225: Looks unnecessarily complex.  Shouldn't need all the changes to the internals.\r\n\r\nGet any command is a good idea, yes.  To do that I suggest you modify `build_get_menu_item()` which is not in the API and not used in Geany.  Just add the field parameter, and the switch statement from `build_get_current_menu_item()` then add API_SYMBOL and fix the doxygen and there ya go, local changes only.\r\n\r\nI'm not sure about `set_current`.  Sure its symmetric, but its modifying a menu item from an unknown source, which could include the defaults.  I don't think thats all that sensible, but I'm open to discussion if you can give a reasonable use-case, but at the moment I think the plugin should know what its modifying.\r\n\r\nAnd don't forget you have to put the original values back in the plugin shutdown code, its hard to do that when you don't know what was modified."}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1225#issuecomment-246219258"}}}</script>