<p dir="auto">This PR enables local variable (and function parameter) tags and fixes related problems:</p>
<ol dir="auto">
<li>Disables local variables for the symbol tree (it becomes too crowded when these are shown IMO).</li>
<li>Disables local variables for generated tag files - these aren't interesting for what we use global tags for. This however also means that unit tests don't cover local variables because they are generated in the same way as global tag files.</li>
<li>Update goto tag definition/declaration to ignore local tags from other functions than the current one and also ignoring local variables defined on a line which is behind the current line.</li>
<li>Update non-scope autocompletion ignoring local variables like in (3).</li>
<li>Update scope autocompletion ignoring local variables like in (3). In addition, when searching for applicable types for the variable for which we perform scope autocompletion, sort the candidate types so local variables from current function above the current line are preferred to global variables from the current file which are preferred to other variables.</li>
</ol>
<p dir="auto">This PR also improves the scope autocompletion a bit by</p>
<ol dir="auto">
<li>Removing some keywords like "const", "struct" from the type, also removing <code>&</code> and contents of <code><></code> braces and <code>[]</code> braces so we only get the "pure" type without additional garbage.</li>
<li>Supporting (multiple) inheritance and including members of parent classes in the result.</li>
</ol>
<p dir="auto">More details are in the individual commit messages.</p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/elextr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/elextr">@elextr</a> Your turn, bring your evil C++ code :-)</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/geany/geany/pull/3175'>https://github.com/geany/geany/pull/3175</a></p>

<h4>Commit Summary</h4>
<ul>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/e26cd137d48eeffa60084dd1339ac0e53167756b" class="commit-link">e26cd13</a>  Rename tm_tag_file_t to tm_tag_local_var_t</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/793505882773f128212d97c82a2e4ebe3c603bd5" class="commit-link">7935058</a>  Enable local tag generation for C/C++</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/81c3055035f6652ecb0cc1427c2949fc13088f3c" class="commit-link">81c3055</a>  Update goto symbol definitions to take into account local variables</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/f67aa1db6527c1ad4d725cf646a01597b4d8930e" class="commit-link">f67aa1d</a>  Update (non-scope) autocompletion to take into account local variables</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/1bd13065dfc495a90be57b0964dd1a898572db10" class="commit-link">1bd1306</a>  Update scope completion to take into account local variables</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/008844304b081f9d463bf697d3e7395d1e2358e3" class="commit-link">0088443</a>  Strip more things from variable type</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/e82d91a96a4cf577d35d11d75253bffb07b60b5a" class="commit-link">e82d91a</a>  Move strip_type() above find_scope_members_tags()</li>
  <li><a href="https://github.com/geany/geany/pull/3175/commits/d218ba5333f9d23ee4d5dc818bec12e01c202bb7" class="commit-link">d218ba5</a>  Support (multiple) inheritance by scope completion</li>
</ul>

<h4 style="display: inline-block">File Changes </h4> <p style="display: inline-block">(<a href="https://github.com/geany/geany/pull/3175/files">6 files</a>)</p>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-3fe5ce523684a7fca311fab0d09542552fbe3a28ddaa20ebc5a65c1904bc5e02">src/editor.c</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-57618d7b5e160a906f23885f8c59d06d88a517be568cbd428366e24b58c13fe5">src/symbols.c</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-52c3ba1a920ce03ae524e393cf4d0ff582b13d9eafef29393f9841c19adf31f8">src/tagmanager/tm_parser.c</a>
    (10)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-bf5ef327799b72933ceecfaa934a3b90ba5e983577974d2dc3a283fc4f6e8d60">src/tagmanager/tm_parser.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-b8f4ed334cc62ed2d9ce5ed4fc5f38de4476c2e4d46dc89b360fef1b62e4569c">src/tagmanager/tm_workspace.c</a>
    (307)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3175/files#diff-f6b0e635502217044b92fcbd74f7fa30c9325a866bd5aa67305fa1b3e93c0973">src/tagmanager/tm_workspace.h</a>
    (6)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/geany/geany/pull/3175.patch'>https://github.com/geany/geany/pull/3175.patch</a></li>
  <li><a href='https://github.com/geany/geany/pull/3175.diff'>https://github.com/geany/geany/pull/3175.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/3175">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJ7N2XUORHJL5LZOBCDVGBN3RANCNFSM5T5CX5RA">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AAIOWJYCRSQ4BL3VIYVKOX3VGBN3RA5CNFSM5T5CX5RKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4SBBKBLA.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><geany/geany/pull/3175</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/pull/3175",
"url": "https://github.com/geany/geany/pull/3175",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>