Please disregard my previous email... I think I've fixed it. Here's a patch:
This patch fixes the following:
- "#else" directives are now tagged with the proper scope - "#define" for things that are not functions do not get tagged as functions - Functions defined in multiple lines are tagged as functions.
Thanks,
-Oscar
Index: Bundles/C.tmbundle/Syntaxes/C.plist =================================================================== --- Bundles/C.tmbundle/Syntaxes/C.plist (revision 2567) +++ Bundles/C.tmbundle/Syntaxes/C.plist (working copy) @@ -10,9 +10,9 @@ <key>firstLineMatch</key> <string>-[*]-( Mode:)? C -[*]-</string> <key>foldingStartMarker</key> - <string>/**(?!*)|{\s*($|//|/*(?!.*?*/.*\S))|^@(interface| protocol|implementation)\b</string> + <string>(/**|{\s*(/*.**/\s*|//.*)?$)</string> <key>foldingStopMarker</key> - <string>(?<!*)**/|^\s*}|^@end\b</string> + <string>(**/|^\s*})</string> <key>keyEquivalent</key> <string>~^C</string> <key>name</key> @@ -141,7 +141,7 @@ </dict> <dict> <key>begin</key> - <string>^\s*#\s*(define)\s+([a-zA-Z_][a-zA-Z0-9_]*)(?:(((?:\s*[a- zA-Z_][a-zA-Z0-9_]*\s*,?)*))|\b)</string> + <string>^\s*#\s*(define)\s+([a-zA-Z_][a-zA-Z0-9_]*)(?:(((?:\s*[a- zA-Z_][a-zA-Z0-9_]*\s*,?)*)))</string> <key>captures</key> <dict> <key>1</key> @@ -239,7 +239,7 @@ </dict> <dict> <key>begin</key> - <string>^\s*#\s*(defined|elif|else|if|ifdef|ifndef|line|pragma| undef)\b</string> + <string>^\s*#\s*(define|defined|elif|else|if|ifdef|ifndef|line| pragma|undef)\b</string> <key>captures</key> <dict> <key>1</key> @@ -294,9 +294,9 @@ ) ) ([A-Za-z_][A-Za-z0-9_:]+) # actual name - \s*( (?=[^)]*) # match "(" and use look- ahead for ")" + \s*( ((?=[^)]*) # match "(" and use look- ahead for ")" (\s+const)?\s* # optional const modifier - ({|\n)) # start bracket or end-of- line + ({|\n))|\n) # start bracket or end-of-line </string> <key>beginCaptures</key> <dict> @@ -319,39 +319,6 @@ </array> </dict> <dict> - <key>begin</key> - <string>(?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 - (;)) # start bracket or end-of- line - </string> - <key>beginCaptures</key> - <dict> - <key>1</key> - <dict> - <key>name</key> - <string>entity.name.function.c</string> - </dict> - </dict> - <key>end</key> - <string>)</string> - <key>name</key> - <string>declaration.function.prototype.c</string> - <key>patterns</key> - <array> - <dict> - <key>include</key> - <string>$base</string> - </dict> - </array> - </dict> - <dict> <key>include</key> <string>source.open-gl</string> </dict> @@ -554,7 +521,7 @@ <key>preprocessor-rule-other</key> <dict> <key>begin</key> - <string>^\s*(#\s*(if(n?def)?)\b.*(?:(?=(?://|/*))|$))</string> + <string>^\s*(#\s*(if(n?def)?)\b)</string> <key>captures</key> <dict> <key>1</key> @@ -584,7 +551,7 @@ <array> <dict> <key>match</key> - <string>\(\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-zA-Z0-9]+) </string> + <string>\(\|[abefnrtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-zA-Z0-9]+) </string> <key>name</key> <string>constant.character.escape.c</string> </dict>
-- pgp fingerprint: BC64 2E7A CAEF 39E1 9544 80CA F7D5 784D FB46 16C1