|
<?xml version="1.0" encoding="UTF-8"?> |
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
<plist version="1.0"> |
|
<dict> |
|
<key>fileTypes</key> |
|
<array> |
|
<string>stp</string> |
|
</array> |
|
<key>firstLineMatch</key> |
|
<string>^#!\s+(/.+)*\s*stap</string> |
|
<key>name</key> |
|
<string>SystemTap</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>#comments</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string><<<|[=+\-*/!&|^?:<>]</string> |
|
<key>name</key> |
|
<string>keyword.operator.stp</string> |
|
</dict> |
|
<dict> |
|
<key>begin</key> |
|
<string>"</string> |
|
<key>beginCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.string.begin.stp</string> |
|
</dict> |
|
</dict> |
|
<key>end</key> |
|
<string>"</string> |
|
<key>endCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.string.end.stp</string> |
|
</dict> |
|
</dict> |
|
<key>name</key> |
|
<string>string.quoted.double.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>#string_escaped_char</string> |
|
</dict> |
|
<dict> |
|
<key>include</key> |
|
<string>#string_placeholder</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<dict> |
|
<key>begin</key> |
|
<string>'</string> |
|
<key>beginCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.string.begin.stp</string> |
|
</dict> |
|
</dict> |
|
<key>end</key> |
|
<string>'</string> |
|
<key>endCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.string.end.stp</string> |
|
</dict> |
|
</dict> |
|
<key>name</key> |
|
<string>string.quoted.single.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>#string_escaped_char</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\b(if|else|foreach|in|limit|while|delete)\b</string> |
|
<key>name</key> |
|
<string>keyword.control.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>@([A-Za-z0-9_]*)</string> |
|
<key>name</key> |
|
<string>support.function.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\b(tid|pid|printf?|gettimeofday_u?s|ctime|(user|kernel)_(char|short|long|int|string(_n)?)|target|execname)\b</string> |
|
<key>name</key> |
|
<string>support.function.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string> |
|
<key>name</key> |
|
<string>constant.numeric.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\$([A-Za-z][A-Za-z0-9_]*)</string> |
|
<key>name</key> |
|
<string>support.variable.stp</string> |
|
</dict> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>storage.modifier.stp</string> |
|
</dict> |
|
<key>3</key> |
|
<dict> |
|
<key>name</key> |
|
<string>variable.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>(global)\s+(([A-Za-z][A-Za-z0-9_]*),?)+</string> |
|
<key>name</key> |
|
<string>meta.variable.stp</string> |
|
</dict> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>storage.type.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>^\s*(probe)</string> |
|
<key>name</key> |
|
<string>meta.entity.function.stp</string> |
|
</dict> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>storage.type.stp</string> |
|
</dict> |
|
<key>2</key> |
|
<dict> |
|
<key>name</key> |
|
<string>entity.function.name.stp</string> |
|
</dict> |
|
<key>4</key> |
|
<dict> |
|
<key>name</key> |
|
<string>storage.type.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>^\s*(function)\s+([a-zA-Z0-9_]+)(:([a-z]+))?</string> |
|
<key>name</key> |
|
<string>meta.entity.function.stp</string> |
|
</dict> |
|
<dict> |
|
<key>include</key> |
|
<string>#block</string> |
|
</dict> |
|
</array> |
|
<key>repository</key> |
|
<dict> |
|
<key>access</key> |
|
<dict> |
|
<key>match</key> |
|
<string>\.[a-zA-Z_][a-zA-Z_0-9]*\b(?!\s*\()</string> |
|
<key>name</key> |
|
<string>variable.other.dot-access.stp</string> |
|
</dict> |
|
<key>block</key> |
|
<dict> |
|
<key>begin</key> |
|
<string>\{</string> |
|
<key>end</key> |
|
<string>\}</string> |
|
<key>name</key> |
|
<string>meta.block.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>#block_innards</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<key>block_innards</key> |
|
<dict> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>#access</string> |
|
</dict> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>variable.other.c</string> |
|
</dict> |
|
<key>2</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.parameters.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>(?x) |
|
(?x) |
|
(?: |
|
(?: (?= \s ) (?<!else|new|return) (?<=\w)\s+ # or word + space before name |
|
) |
|
) |
|
( |
|
(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name |
|
(?: (?<=operator) (?: [-*&<>=+!]+ | \(\) | \[\] ) )? # if it is a C++ operator |
|
) |
|
\s*(\()</string> |
|
<key>name</key> |
|
<string>meta.initialization.stp</string> |
|
</dict> |
|
<dict> |
|
<key>include</key> |
|
<string>#block</string> |
|
</dict> |
|
<dict> |
|
<key>include</key> |
|
<string>$base</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<key>comments</key> |
|
<dict> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>meta.toc-list.banner.block.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>^/\* =(\s*.*?)\s*= \*/$\n?</string> |
|
<key>name</key> |
|
<string>comment.block.stp</string> |
|
</dict> |
|
<dict> |
|
<key>begin</key> |
|
<string>/\*</string> |
|
<key>captures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.comment.stp</string> |
|
</dict> |
|
</dict> |
|
<key>end</key> |
|
<string>\*/</string> |
|
<key>name</key> |
|
<string>comment.block.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\*/.*\n</string> |
|
<key>name</key> |
|
<string>invalid.illegal.stray-comment-end.stp</string> |
|
</dict> |
|
<dict> |
|
<key>captures</key> |
|
<dict> |
|
<key>1</key> |
|
<dict> |
|
<key>name</key> |
|
<string>meta.toc-list.banner.line.stp</string> |
|
</dict> |
|
</dict> |
|
<key>match</key> |
|
<string>^// =(\s*.*?)\s*=\s*$\n?</string> |
|
<key>name</key> |
|
<string>comment.line.banner.stp</string> |
|
</dict> |
|
<dict> |
|
<key>begin</key> |
|
<string>//</string> |
|
<key>beginCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.comment.stp</string> |
|
</dict> |
|
</dict> |
|
<key>end</key> |
|
<string>$\n?</string> |
|
<key>name</key> |
|
<string>comment.line.double-slash.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>match</key> |
|
<string>(?>\\\s*\n)</string> |
|
<key>name</key> |
|
<string>punctuation.separator.continuation.stp</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<dict> |
|
<key>begin</key> |
|
<string>#</string> |
|
<key>beginCaptures</key> |
|
<dict> |
|
<key>0</key> |
|
<dict> |
|
<key>name</key> |
|
<string>punctuation.definition.comment.stp</string> |
|
</dict> |
|
</dict> |
|
<key>end</key> |
|
<string>$\n?</string> |
|
<key>name</key> |
|
<string>comment.line.hash.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>match</key> |
|
<string>(?>\\\s*\n)</string> |
|
<key>name</key> |
|
<string>punctuation.separator.continuation.stp</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
</array> |
|
</dict> |
|
<key>parens</key> |
|
<dict> |
|
<key>begin</key> |
|
<string>\(</string> |
|
<key>end</key> |
|
<string>\)</string> |
|
<key>name</key> |
|
<string>meta.parens.stp</string> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>include</key> |
|
<string>$base</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<key>string_escaped_char</key> |
|
<dict> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>match</key> |
|
<string>\\(\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8})</string> |
|
<key>name</key> |
|
<string>constant.character.escape.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>\\.</string> |
|
<key>name</key> |
|
<string>invalid.illegal.unknown-escape.stp</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
<key>string_placeholder</key> |
|
<dict> |
|
<key>patterns</key> |
|
<array> |
|
<dict> |
|
<key>match</key> |
|
<string>(?x)% |
|
(\d+\$)? # field (argument #) |
|
[#0\- +']* # flags |
|
[,;:_]? # separator character (AltiVec) |
|
((-?\d+)|\*(-?\d+\$)?)? # minimum field width |
|
(\.((-?\d+)|\*(-?\d+\$)?)?)? # precision |
|
(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier |
|
[diouxXDOUeEfFgGaACcSspn%] # conversion type |
|
</string> |
|
<key>name</key> |
|
<string>constant.other.placeholder.stp</string> |
|
</dict> |
|
<dict> |
|
<key>match</key> |
|
<string>%</string> |
|
<key>name</key> |
|
<string>invalid.illegal.placeholder.stp</string> |
|
</dict> |
|
</array> |
|
</dict> |
|
</dict> |
|
<key>scopeName</key> |
|
<string>source.stp</string> |
|
<key>uuid</key> |
|
<string>472cfceb-6d0c-4d64-af70-d5b59ce45471</string> |
|
</dict> |
|
</plist> |