aboutsummaryrefslogtreecommitdiff
path: root/plugins/language_go.lua
blob: 199dc0aacd41441ceef29b00ca4e47b02a442532 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
-- mod-version:2 -- lite-xl 2.0
local syntax = require "core.syntax"

syntax.add {
  name = "Go",
  files = { "%.go$" },
  comment = "//",
  patterns = {
    { pattern = "//.-\n",                            type = "comment"  },
    { pattern = { "/%*", "%*/" },                    type = "comment"  },
    { pattern = { '"', '"', '\\' },                  type = "string"   },
    { pattern = { "`", "`", '\\' },                  type = "string"   },
    { pattern = { "'", "'", '\\' },                  type = "string"   },
    { pattern = "0[oO_][0-7]+",                      type = "number"   },
    { pattern = "-?0x[%x_]+",                        type = "number"   },
    { pattern = "-?%d+_%d",                          type = "number"   },
    { pattern = "-?%d+[%d%.eE]*f?",                  type = "number"   },
    { pattern = "-?%.?%d+f?",                        type = "number"   },
    { pattern = "[%+%-=/%*%^%%<>!~|&]",              type = "operator" },
    { pattern = ":=",                                type = "operator" },
    { pattern = "[%a_][%w_]*%f[(]",                  type = "function" }, -- function call
    { pattern = "func()[%s].*[%a_][%w_]*()%f[%[(]",  type = {"keyword", "function", "normal"} }, -- function statement
    { pattern = "[%a_][%w_]*",                       type = "symbol"   },
  },
  symbols = {
    ["if"]          = "keyword",
    ["else"]        = "keyword",
    ["elseif"]      = "keyword",
    ["for"]         = "keyword",
    ["continue"]    = "keyword",
    ["return"]      = "keyword",
    ["struct"]      = "keyword",
    ["switch"]      = "keyword",
    ["case"]        = "keyword",
    ["default"]     = "keyword",
    ["const"]       = "keyword",
    ["package"]     = "keyword",
    ["import"]      = "keyword",
    ["func"]        = "keyword",
    ["var"]         = "keyword",
    ["type"]        = "keyword",
    ["interface"]   = "keyword",
    ["select"]      = "keyword",
    ["break"]       = "keyword",
    ["range"]       = "keyword",
    ["chan"]        = "keyword",
    ["defer"]       = "keyword",
    ["go"]          = "keyword",
    ["fallthrough"] = "keyword",
    ["goto"]        = "keyword",
    ["int"]         = "keyword2",
    ["int64"]       = "keyword2",
    ["int32"]       = "keyword2",
    ["int16"]       = "keyword2",
    ["int8"]        = "keyword2",
    ["uint"]        = "keyword2",
    ["uint64"]      = "keyword2",
    ["uint32"]      = "keyword2",
    ["uint16"]      = "keyword2",
    ["uint8"]       = "keyword2",
    ["uintptr"]     = "keyword2",
    ["float64"]     = "keyword2",
    ["float32"]     = "keyword2",
    ["map"]         = "keyword2",
    ["string"]      = "keyword2",
    ["rune"]        = "keyword2",
    ["bool"]        = "keyword2",
    ["byte"]        = "keyword2",
    ["error"]       = "keyword2",
    ["complex64"]   = "keyword2",
    ["complex128"]  = "keyword2",
    ["true"]        = "literal",
    ["false"]       = "literal",
    ["nil"]         = "literal",
  },
}