<p>In <a href="https://github.com/geany/geany/pull/889#discussion_r50981463">tagmanager/ctags/c.c</a>:</p>
<pre style='color:#555'>>      for (i = 0; i < st->tokenIndex; i++)
>    {
> +          const tokenInfo *const t = st->token[i];
> +
> +          /* stop if we find the token used to generate the tag name, or
> +           * a name token in the middle yet not preceded by a scope separator */
> +          if ((t == nameToken ||
> +               (t->type == nameToken->type &&
> +                t->keyword == nameToken->keyword &&
> +                t->lineNumber == nameToken->lineNumber &&
> +                strcmp(vStringValue(t->name), vStringValue(nameToken->name)) == 0)) ||
> +              (t->type == TOKEN_NAME && seenType &&
> +               (i > 0 && st->token[i - 1]->type != TOKEN_DOUBLE_COLON)))
</pre>
<p>ah, no, I was too quick :)  I picked it on the webpage so it ain't github's fault this time, but no I used the version with the space.</p>

<p>Your corrected example gives type <code>typename foo::a_type</code> (which looks more or less correct to my innocent eyes, except for the stripped <code><></code>, which I believe is an issue of what gets put in the statement's token list).</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/pull/889/files#r50981463">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJxpevxMSj6xVKt5cb1bzGp_DNN0qks5peLqbgaJpZM4HMkrH.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/889/files#r50981463"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>