diff --git a/syntax_files/d.yaml b/syntax_files/d.yaml new file mode 100644 index 0000000..6d1d763 --- /dev/null +++ b/syntax_files/d.yaml @@ -0,0 +1,118 @@ +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: [] diff --git a/syntax_files/vi.yaml b/syntax_files/vi.yaml new file mode 100644 index 0000000..43fa54d --- /dev/null +++ b/syntax_files/vi.yaml @@ -0,0 +1,29 @@ +filetype: vi + +detect: + filename: "(^|/|\\.)(ex|vim)rc$|\\.vim" + +rules: + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[()]" + - statement: "\\b([nvxsoilc]?(nore|un)?map|[nvlx]n|[ico]?no|[cilovx][um]|s?unm)\\b" + - statement: "\\b(snor|nun|nm|set|if|endif|let|unlet)\\b" + - statement: "[!&=]" + - constant.number: "\\b[0-9]+\\b" + + - constant.string: + start: "\"" + end: "\"" + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + rules: + - constant.specialChar: "\\\\." + + - constant.comment: + start: "\"" + end: "$" + rules: [] +