neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

highlights.scm (4336B)


      1 ; Keywords
      2 "return" @keyword.return
      3 
      4 [
      5  "goto"
      6  "in"
      7  "local"
      8 ] @keyword
      9 
     10 (break_statement) @keyword
     11 
     12 (do_statement
     13  [
     14    "do"
     15    "end"
     16  ] @keyword)
     17 
     18 (while_statement
     19  [
     20    "while"
     21    "do"
     22    "end"
     23  ] @keyword.repeat)
     24 
     25 (repeat_statement
     26  [
     27    "repeat"
     28    "until"
     29  ] @keyword.repeat)
     30 
     31 (if_statement
     32  [
     33    "if"
     34    "elseif"
     35    "else"
     36    "then"
     37    "end"
     38  ] @keyword.conditional)
     39 
     40 (elseif_statement
     41  [
     42    "elseif"
     43    "then"
     44    "end"
     45  ] @keyword.conditional)
     46 
     47 (else_statement
     48  [
     49    "else"
     50    "end"
     51  ] @keyword.conditional)
     52 
     53 (for_statement
     54  [
     55    "for"
     56    "do"
     57    "end"
     58  ] @keyword.repeat)
     59 
     60 (function_declaration
     61  [
     62    "function"
     63    "end"
     64  ] @keyword.function)
     65 
     66 (function_definition
     67  [
     68    "function"
     69    "end"
     70  ] @keyword.function)
     71 
     72 ; Operators
     73 (binary_expression
     74  operator: _ @operator)
     75 
     76 (unary_expression
     77  operator: _ @operator)
     78 
     79 "=" @operator
     80 
     81 [
     82  "and"
     83  "not"
     84  "or"
     85 ] @keyword.operator
     86 
     87 ; Punctuations
     88 [
     89  ";"
     90  ":"
     91  "::"
     92  ","
     93  "."
     94 ] @punctuation.delimiter
     95 
     96 ; Brackets
     97 [
     98  "("
     99  ")"
    100  "["
    101  "]"
    102  "{"
    103  "}"
    104 ] @punctuation.bracket
    105 
    106 ; Variables
    107 (identifier) @variable
    108 
    109 ((identifier) @constant.builtin
    110  (#eq? @constant.builtin "_VERSION"))
    111 
    112 ((identifier) @variable.builtin
    113  (#eq? @variable.builtin "self"))
    114 
    115 ((identifier) @module.builtin
    116  (#any-of? @module.builtin "_G" "debug" "io" "jit" "math" "os" "package" "string" "table" "utf8"))
    117 
    118 ((identifier) @keyword.coroutine
    119  (#eq? @keyword.coroutine "coroutine"))
    120 
    121 (variable_list
    122  (attribute
    123    "<" @punctuation.bracket
    124    (identifier) @attribute
    125    ">" @punctuation.bracket))
    126 
    127 ; Labels
    128 (label_statement
    129  (identifier) @label)
    130 
    131 (goto_statement
    132  (identifier) @label)
    133 
    134 ; Constants
    135 ((identifier) @constant
    136  (#lua-match? @constant "^[A-Z][A-Z_0-9]*$"))
    137 
    138 (nil) @constant.builtin
    139 
    140 [
    141  (false)
    142  (true)
    143 ] @boolean
    144 
    145 ; Tables
    146 (field
    147  name: (identifier) @property)
    148 
    149 (dot_index_expression
    150  field: (identifier) @variable.member)
    151 
    152 (table_constructor
    153  [
    154    "{"
    155    "}"
    156  ] @constructor)
    157 
    158 ; Functions
    159 (parameters
    160  (identifier) @variable.parameter)
    161 
    162 (vararg_expression) @variable.parameter.builtin
    163 
    164 (function_declaration
    165  name: [
    166    (identifier) @function
    167    (dot_index_expression
    168      field: (identifier) @function)
    169  ])
    170 
    171 (function_declaration
    172  name: (method_index_expression
    173    method: (identifier) @function.method))
    174 
    175 (assignment_statement
    176  (variable_list
    177    .
    178    name: [
    179      (identifier) @function
    180      (dot_index_expression
    181        field: (identifier) @function)
    182    ])
    183  (expression_list
    184    .
    185    value: (function_definition)))
    186 
    187 (table_constructor
    188  (field
    189    name: (identifier) @function
    190    value: (function_definition)))
    191 
    192 (function_call
    193  name: [
    194    (identifier) @function.call
    195    (dot_index_expression
    196      field: (identifier) @function.call)
    197    (method_index_expression
    198      method: (identifier) @function.method.call)
    199  ])
    200 
    201 (function_call
    202  (identifier) @function.builtin
    203  (#any-of? @function.builtin
    204    ; built-in functions in Lua 5.1
    205    "assert" "collectgarbage" "dofile" "error" "getfenv" "getmetatable" "ipairs" "load" "loadfile"
    206    "loadstring" "module" "next" "pairs" "pcall" "print" "rawequal" "rawget" "rawlen" "rawset"
    207    "require" "select" "setfenv" "setmetatable" "tonumber" "tostring" "type" "unpack" "xpcall"
    208    "__add" "__band" "__bnot" "__bor" "__bxor" "__call" "__concat" "__div" "__eq" "__gc" "__idiv"
    209    "__index" "__le" "__len" "__lt" "__metatable" "__mod" "__mul" "__name" "__newindex" "__pairs"
    210    "__pow" "__shl" "__shr" "__sub" "__tostring" "__unm"))
    211 
    212 ; Others
    213 (comment) @comment @spell
    214 
    215 ((comment) @comment.documentation
    216  (#lua-match? @comment.documentation "^[-][-][-]"))
    217 
    218 ((comment) @comment.documentation
    219  (#lua-match? @comment.documentation "^[-][-](%s?)@"))
    220 
    221 (hash_bang_line) @keyword.directive
    222 
    223 (number) @number
    224 
    225 (string) @string
    226 
    227 (escape_sequence) @string.escape
    228 
    229 ; string.match("123", "%d+")
    230 (function_call
    231  (dot_index_expression
    232    field: (identifier) @_method
    233    (#any-of? @_method "find" "match" "gmatch" "gsub"))
    234  arguments: (arguments
    235    .
    236    (_)
    237    .
    238    (string
    239      content: (string_content) @string.regexp)))
    240 
    241 ;("123"):match("%d+")
    242 (function_call
    243  (method_index_expression
    244    method: (identifier) @_method
    245    (#any-of? @_method "find" "match" "gmatch" "gsub"))
    246  arguments: (arguments
    247    .
    248    (string
    249      content: (string_content) @string.regexp)))