<blockquote>
<p>Well, it depends if you want to implement the symbol tree all by yourself or not. If not, you'll either have to map libclang symbols to TMTags or come up with some substitute used by both.</p>
</blockquote>

<p>It's just a GtkTreeView. It could be as simple as Geany setting up the cell renderers and the model and then calling into a plugin to fill in the model.</p>

<blockquote>
<p>Also I'm not sure how you plan to handle cases where you open a single C file which by itself doesn't compile and which isn't part of any project. I guess libclang won't be able to parse it right? Then TM should be used instead.</p>
</blockquote>

<p>Indeed, there needs a way to inherit or fallback to basic (current) functionality.</p>

<blockquote>
<p>Again, I don't know which way you plan to implement it - as I said, I think ASTs are incompatible with the linear tag lists generated by ctags.</p>
</blockquote>

<p>I don't really see why. It wouldn't be hard to traverse the AST and generate a tags list, filling in the scope with the correct path/namespaces. IIUC Ctags and not TM is responsible for the broken scope support in Geany.</p>

<blockquote>
<p>My feeling is it will require lots of new code on Geany's side, not the plugins side which I indeed don't care about, to make something generic.</p>
</blockquote>

<p>The only thing that would need to be added to Geany is some hooks/callbacks/interfaces/whichever to get the plugin to provide the info. All of the complexity would be in the plugins (and not even since most language libraries make this stuff quite trivial to implement).</p>

<blockquote>
<p>Indeed, there's some code in tagmanager which has to be maintained but if we want to keep support of all the languages we have, it will have to stay this way.</p>
</blockquote>

<p>It doesn't have to stay in the core, it could become a core plugin, but it does have to be on by default and/or provide the baseline functionality. I only have an interest in augmenting the current functionality by plugins, I have no interest in making Geany not work as well out-of-the-box.</p>

<blockquote>
<p>And no, I don't think it would be a good idea splitting ctags into 30 different plugins and maintain them separately and require users to install all of them if they want multi-language support.</p>
</blockquote>

<p>Just one plugin, part of the core, and on by default.</p>

<blockquote>
<p>If plugins just install hooks for specific features like autocompletion, symbol tree, etc. that should be pretty trivial on Geany side and it shouldn't be any problem.</p>
</blockquote>

<p>That's the idea. The language support libraries already provide their own specific TM-like APIs, no point in re-inventing that generically when most of the needed features (filling in a treeview, filling in a listview, providing a location of declaration, etc) can be accomplished more easily on the plugin side if they have access to the actual language implementation libraries.</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/1187#issuecomment-242967309">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ0Wcek1Lx8e7IX9vTnMRWLrZjvOrks5qkWI1gaJpZM4JqVBL">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ70gjxrY5BvwjvQYj_GO6opALFBHks5qkWI1gaJpZM4JqVBL.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/1187#issuecomment-242967309"></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":"@codebrainz in #1187: \u003e Well, it depends if you want to implement the symbol tree all by yourself or not. If not, you'll either have to map libclang symbols to TMTags or come up with some substitute used by both.\r\n\r\nIt's just a GtkTreeView. It could be as simple as Geany setting up the cell renderers and the model and then calling into a plugin to fill in the model.\r\n\r\n\u003e Also I'm not sure how you plan to handle cases where you open a single C file which by itself doesn't compile and which isn't part of any project. I guess libclang won't be able to parse it right? Then TM should be used instead.\r\n\r\nIndeed, there needs a way to inherit or fallback to basic (current) functionality.\r\n\r\n\u003e Again, I don't know which way you plan to implement it - as I said, I think ASTs are incompatible with the linear tag lists generated by ctags.\r\n\r\nI don't really see why. It wouldn't be hard to traverse the AST and generate a tags list, filling in the scope with the correct path/namespaces. IIUC Ctags and not TM is responsible for the broken scope support in Geany.\r\n\r\n\u003e My feeling is it will require lots of new code on Geany's side, not the plugins side which I indeed don't care about, to make something generic.\r\n\r\nThe only thing that would need to be added to Geany is some hooks/callbacks/interfaces/whichever to get the plugin to provide the info. All of the complexity would be in the plugins (and not even since most language libraries make this stuff quite trivial to implement).\r\n\r\n\u003e Indeed, there's some code in tagmanager which has to be maintained but if we want to keep support of all the languages we have, it will have to stay this way.\r\n\r\nIt doesn't have to stay in the core, it could become a core plugin, but it does have to be on by default and/or provide the baseline functionality. I only have an interest in augmenting the current functionality by plugins, I have no interest in making Geany not work as well out-of-the-box.\r\n\r\n\u003e And no, I don't think it would be a good idea splitting ctags into 30 different plugins and maintain them separately and require users to install all of them if they want multi-language support.\r\n\r\nJust one plugin, part of the core, and on by default.\r\n\r\n\u003e If plugins just install hooks for specific features like autocompletion, symbol tree, etc. that should be pretty trivial on Geany side and it shouldn't be any problem.\r\n\r\nThat's the idea. The language support libraries already provide their own specific TM-like APIs, no point in re-inventing that generically when most of the needed features (filling in a treeview, filling in a listview, providing a location of declaration, etc) can be accomplished more easily on the plugin side if they have access to the actual language implementation libraries."}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1187#issuecomment-242967309"}}}</script>