Hi Matthew.
BTW, it sounds like you have the right idea WRT adding a parser.
Relieved to hear my C source reading skills have improved.
What would it show, just a flat sequence of Lists with a Symbol in the car position? Syntactically it should be the most trivial parser in CTags to write, but it might be more challenging to show a meaningful symbols tree for it (ex. should it handle quoting? show non-alpha symbols like !@#$%^&? functions in `cond` branches, etc).
I think that tagging functions and macros at global scope would be a start — I had a poke around the DocBook (of all things) parser and from a skim through the way it marks out chapters and sections using their id attributes it looks like a similar strategy would work for Common Lisp. If you have something at global scope like:
(defmacro my-cool-macro (...) (...))
it shouldn’t be too hard to write parsing functionality to gulp the next word as the name of the macro (or ‘the symbol to which the macro is bound’ to be pedantic) and create a tag reflecting it. Of course, things get a heck of a lot more complex with some Lisps (one of my current pet projects makes heavy use of CL’s packaging functionality, for instance) but it would be a decent place to start making meaningful contributions to Geany. :)
Take care,
James