Support PREFIX* in ignore.tags

This commit is contained in:
Nick Treleaven 2012-04-25 15:54:56 +01:00
parent 000bd8547c
commit a56373cabd
3 changed files with 17 additions and 3 deletions

View File

@ -2106,6 +2106,10 @@ If two identifiers are separated with the '=' character, the first
identifiers is replaced by the second identifiers for parsing purposes.</blockquote>
<p>For even more detailed information please read the manual page of
Exuberant Ctags.</p>
<p>Geany extends Ctags with a '*' character suffix - this means use
prefix matching, e.g. G_GNUC_* will match G_GNUC_NULL_TERMINATED, etc.
Note that prefix match items should be put after other items to ensure
that items like G_GNUC_PRINTF+ get parsed correctly.</p>
</div>
</div>
<div class="section" id="preferences">
@ -6772,7 +6776,7 @@ USE OR PERFORMANCE OF THIS SOFTWARE.</p>
<div class="footer">
<hr class="footer" />
<a class="reference external" href="geany.txt">View document source</a>.
Generated on: 2012-04-24 15:38 UTC.
Generated on: 2012-04-25 14:39 UTC.
Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>

View File

@ -1704,6 +1704,11 @@ manual page:
For even more detailed information please read the manual page of
Exuberant Ctags.
Geany extends Ctags with a '*' character suffix - this means use
prefix matching, e.g. G_GNUC_* will match G_GNUC_NULL_TERMINATED, etc.
Note that prefix match items should be put after other items to ensure
that items like G_GNUC_PRINTF+ get parsed correctly.
Preferences
-----------

View File

@ -175,11 +175,16 @@ extern boolean isIgnoreToken (const char *const name,
for (i = 0 ; i < len ; ++i)
{
vString *token = vStringNewInit (c_tags_ignore[i]);
const size_t tokenLen = vStringLength (token);
if (tokenLen >= 2 && vStringChar (token, tokenLen - 1) == '*' &&
strncmp (vStringValue (token), name, tokenLen - 1) == 0)
{
result = TRUE;
break;
}
if (strncmp (vStringValue (token), name, nameLen) == 0)
{
const size_t tokenLen = vStringLength (token);
if (nameLen == tokenLen)
{
result = TRUE;