I was looking at some C source with TextMate and it seems the C regexp for functions is broken when there is a new line in the middle of the argument list. What I mean is that if your functions are defined like this:
static int AliasCreate( Tcl_Interp *interp, /* Interp for error reporting. */ Tcl_Interp *slaveInterp, /* Interp where alias cmd will live or from * which alias will be deleted. */ Tcl_Interp *masterInterp, /* Interp in which target command will be * invoked. */ Tcl_Obj *namePtr, /* Name of alias cmd. */ Tcl_Obj *targetNamePtr, /* Name of target cmd. */ int objc, /* Additional arguments to store */ Tcl_Obj *CONST objv[]) /* with alias. */ {
Then TextMate will not see them as functions. I tried fixing the regexp, which is
{ name = 'declaration.function.c'; begin = '(?x) (?: ^ # begin-of-line | (?: (?<!else|new) (?<=\w)\s+ # or word + space before name | (?<!&&) (?<=[*&>])\s* # or type modifier before name ) ) ([A-Za-z_][A-Za-z0-9_:]+) # actual name \s*( (?=[^)]*) # match "(" and use look- ahead for ")" (\s+const)?\s* # optional const modifier ({|\n)) # start bracket or end-of- line '; end = ')'; beginCaptures = { 1 = { name = 'entity.name.function.c'; }; }; patterns = ( { include = '$base'; } ); },
But so far, I've been unable to make it ignore new lines in the argument list.
Does anyone have any ideas?
Thanks,
-Oscar
-- pgp fingerprint: BC64 2E7A CAEF 39E1 9544 80CA F7D5 784D FB46 16C1