2fcb40d5a9
This changes all the syntax files in the runtime directory and also changes how syntax highlighting is done from inside micro.
119 lines
4.2 KiB
YAML
119 lines
4.2 KiB
YAML
filetype: d
|
|
|
|
detect:
|
|
filename: "\\.(d(i|d)?)$"
|
|
|
|
rules:
|
|
# Operators and punctuation
|
|
- statement: "(\\*|/|%|\\+|-|>>|<<|>>>|&|\\^(\\^)?|\\||~)?="
|
|
- statement: "\\.\\.(\\.)?|!|\\*|&|~|\\(|\\)|\\[|\\]|\\\\|/|\\+|-|%|<|>|\\?|:|;"
|
|
# Octal integer literals are deprecated
|
|
- error: "(0[0-7_]*)(L[uU]?|[uU]L?)?"
|
|
# Decimal integer literals
|
|
- constant.number: "([0-9]|[1-9][0-9_]*)(L[uU]?|[uU]L?)?"
|
|
# Binary integer literals
|
|
- constant: "(0[bB][01_]*)(L[uU]?|[uU]L?)?"
|
|
# Decimal float literals
|
|
- constant.number: "[0-9][0-9_]*\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?"
|
|
- constant.number: "[0-9][0-9_]*([eE][+-]?([0-9][0-9_]*))[fFL]?i?"
|
|
- constant.number: "[^.]\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?"
|
|
- constant.number: "[0-9][0-9_]*([fFL]?i|[fF])"
|
|
# Hexadecimal integer literals
|
|
- constant.number: "(0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F]))(L[uU]?|[uU]L?)?"
|
|
# Hexadecimal float literals
|
|
- constant.number: "0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])(\\.[0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])?[pP][+-]?([0-9][0-9_]*)[fFL]?i?"
|
|
- constant.number: "0[xX]\\.([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])[pP][+-]?([0-9][0-9_]*)[fFL]?i?"
|
|
# Character literals
|
|
- constant.string:
|
|
start: "'"
|
|
end: "'"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# Keywords
|
|
# a-e
|
|
- statement: "\\b(abstract|alias|align|asm|assert|auto|body|break|case|cast|catch|class|const|continue|debug|default|delegate|do|else|enum|export|extern)\\b"
|
|
# f-l
|
|
- statement: "\\b(false|final|finally|for|foreach|foreach_reverse|function|goto|if|immutable|import|in|inout|interface|invariant|is|lazy)\\b"
|
|
# m-r
|
|
- statement: "\\b(macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|ref|return)\\b"
|
|
# s-w
|
|
- statement: "\\b(scope|shared|static|struct|super|switch|synchronized|template|this|throw|true|try|typeid|typeof|union|unittest|version|while|with)\\b"
|
|
# __
|
|
- statement: "\\b(__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)\\b"
|
|
# Deprecated keywords
|
|
- error: "\\b(delete|deprecated|typedef|volatile)\\b"
|
|
# Primitive types
|
|
- type: "\\b(bool|byte|cdouble|cent|cfloat|char|creal|dchar|double|float|idouble|ifloat|int|ireal|long|real|short|ubyte|ucent|uint|ulong|ushort|void|wchar)\\b"
|
|
# Globally defined symbols
|
|
- type: "\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b"
|
|
# Special tokens
|
|
- constant: "\\b(__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b"
|
|
# String literals
|
|
# DoubleQuotedString
|
|
- constant.string:
|
|
start: "\""
|
|
end: "\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# WysiwygString
|
|
- constant.string:
|
|
start: "r\""
|
|
end: "\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "`"
|
|
end: "`"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# HexString
|
|
- constant.string:
|
|
start: "x\""
|
|
end: "\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# DelimitedString
|
|
- constant.string:
|
|
start: "q\"\\("
|
|
end: "\\)\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"\\{"
|
|
end: "q\"\\}"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"\\["
|
|
end: "q\"\\]"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"<"
|
|
end: "q\">"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"[^({[<\"][^\"]*$"
|
|
end: "^[^\"]+\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"([^({[<\"])"
|
|
end: "\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# Comments
|
|
- comment:
|
|
start: "//"
|
|
end: "$"
|
|
rules: []
|
|
- comment:
|
|
start: "/\\*"
|
|
end: "\\*/"
|
|
rules: []
|
|
- comment:
|
|
start: "/\\+"
|
|
end: "\\+/"
|
|
rules: []
|