Jerry noticed that some symbols are missing with ctags, for example
C<mem_sys_free>.

This happens for me too with ctags 5.6 on Win32, but other versions or
platforms could suffer from the same problem.

$ ctags --version
Exuberant Ctags 5.6, Copyright (C) 1996-2004 Darren Hiebert
  Compiled: Jul 30 2006, 16:12:20
  Addresses: <[EMAIL PROTECTED]>, http://ctags.sourceforge.net
  Optional compiled features: +win32, +regex, +internal-sort

The issue is that ctags gets confused by definitions like these.

    ... foo(MACRO(...))

ctags indexes C<MACRO> instead of C<foo>.

Here's an example:

// test.c
void
f1(void *ptr)
{}

void
f2(NULLOK(void *ptr))
{}

void
f3(NULLOK(void *ptr1), NOTNULL(void *ptr2))
{}
// end

$ ctags -f- test.c
NOTNULL test.c  /^f3(NULLOK(void *ptr1), NOTNULL(void *ptr2))$/;"       f
NULLOK  test.c  /^f2(NULLOK(void *ptr))$/;"     f
f1      test.c  /^f1(void *ptr)$/;"     f


My current workaround for this is to grep tags directly for the symbol,
like so:

    $ grep mem_sys_free tags
    NULLOK  .\src\gc\memory.c       /^mem_sys_free(NULLOK(void
*from))$/;"  f

Ron

Reply via email to