summaryrefslogtreecommitdiff
path: root/context/data/scite/context/lexers/themes/scite-context-theme.lua
blob: b0c63fe39410687a24a6664b8483f97877e36c0a (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
local info = {
    version   = 1.002,
    comment   = "theme for scintilla lpeg lexer for context/metafun",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files",
}

-- context_path = string.split(os.resultof("mtxrun --find-file context.mkiv"))[1] or ""

-- What used to be proper Lua definitions are in 3.42 SciTE properties although
-- integration is still somewhat half. Also, the indexed style specification is
-- now a hash (which indeed makes more sense). However, the question is: am I
-- going to rewrite the style bit? It anyway makes more sense to keep this file
-- somewhat neutral as we no longer need to be compatible. However, we cannot be
-- sure of helpers being present yet when this file is loaded, so we are somewhat
-- crippled. On the other hand, I don't see other schemes being used with the
-- context lexers.

-- The next kludge is no longer needed which is good!
--
-- if GTK then -- WIN32 GTK OSX CURSES
--     font_name = '!' .. font_name
-- end

-- I need to play with these, some work ok:
--
-- eolfilled noteolfilled
-- characterset:u|l
-- visible notvisible
-- changeable notchangeable (this way we can protect styles, e.g. preamble?)
-- hotspot nothotspot

local font_name = 'Dejavu Sans Mono'
local font_size = '14'

local colors = {
    red       = { '7F', '00', '00' },
    green     = { '00', '7F', '00' },
    blue      = { '00', '00', '7F' },
    cyan      = { '00', '7F', '7F' },
    magenta   = { '7F', '00', '7F' },
    yellow    = { '7F', '7F', '00' },
    orange    = { 'B0', '7F', '00' },
    --
    white     = { 'FF', 'FF', 'FF' },
    light     = { 'CF', 'CF', 'CF' },
    grey      = { '80', '80', '80' },
    dark      = { '4F', '4F', '4F' },
    black     = { '00', '00', '00' },
    --
    selection = { 'F7', 'F7', 'F7' },
    logpanel  = { 'E7', 'E7', 'E7' },
    textpanel = { 'CF', 'CF', 'CF' },
    linepanel = { 'A7', 'A7', 'A7' },
    tippanel  = { '44', '44', '44' },
    --
    right     = { '00', '00', 'FF' },
    wrong     = { 'FF', '00', '00' },
}

local styles = {

    ["whitespace"]   = { },
    ["default"]      = { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel },
    ["default"]      = { font = font_name, size = font_size, fore = colors.black },
    ["number"]       = { fore = colors.cyan },
    ["comment"]      = { fore = colors.yellow },
    ["keyword"]      = { fore = colors.blue, bold = true },
    ["string"]       = { fore = colors.magenta },
 -- ["preproc"]      = { fore = colors.yellow, bold = true },
    ["error"]        = { fore = colors.red },
    ["label"]        = { fore = colors.red, bold = true  },

    ["nothing"]      = { },
    ["class"]        = { fore = colors.black, bold = true },
    ["function"]     = { fore = colors.black, bold = true },
    ["constant"]     = { fore = colors.cyan, bold = true },
    ["operator"]     = { fore = colors.blue },
    ["regex"]        = { fore = colors.magenta },
    ["preprocessor"] = { fore = colors.yellow, bold = true },
    ["tag"]          = { fore = colors.cyan },
    ["type"]         = { fore = colors.blue },
    ["variable"]     = { fore = colors.black },
    ["identifier"]   = { },

    ["linenumber"]   = { back = colors.linepanel },
    ["bracelight"]   = { fore = colors.orange, bold = true },
    ["bracebad"]     = { fore = colors.orange, bold = true },
    ["controlchar"]  = { },
    ["indentguide"]  = { fore = colors.linepanel, back = colors.white },
    ["calltip"]      = { fore = colors.white, back = colors.tippanel },

    ["invisible"]    = { back = colors.orange },
    ["quote"]        = { fore = colors.blue, bold = true },
    ["special"]      = { fore = colors.blue },
    ["extra"]        = { fore = colors.yellow },
    ["embedded"]     = { fore = colors.black, bold = true },
    ["char"]         = { fore = colors.magenta },
    ["reserved"]     = { fore = colors.magenta, bold = true },
    ["definition"]   = { fore = colors.black, bold = true },
    ["okay"]         = { fore = colors.dark },
    ["warning"]      = { fore = colors.orange },
    ["standout"]     = { fore = colors.orange, bold = true },
    ["command"]      = { fore = colors.green, bold = true },
    ["internal"]     = { fore = colors.orange, bold = true },
    ["preamble"]     = { fore = colors.yellow },
    ["grouping"]     = { fore = colors.red  },
    ["primitive"]    = { fore = colors.blue, bold = true },
    ["plain"]        = { fore = colors.dark, bold = true },
    ["user"]         = { fore = colors.green },
    ["data"]         = { fore = colors.cyan, bold = true },

    -- equal to default:

    ["text"]         = { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel },
    ["text"]         = { font = font_name, size = font_size, fore = colors.black },

}

local properties = {
    ["fold.by.parsing"]        = 1,
    ["fold.by.indentation"]    = 0,
    ["fold.by.line"]           = 0,
    ["fold.line.comments"]     = 0,
    --
    ["lexer.context.log"]      = 1, -- log errors and warnings
    ["lexer.context.trace"]    = 0, -- show loading, initializations etc
    ["lexer.context.detail"]   = 0, -- show more detail when tracing
    ["lexer.context.show"]     = 0, -- show result of lexing
    ["lexer.context.collapse"] = 0, -- make lexing results somewhat more efficient
    ["lexer.context.inspect"]  = 0, -- show some info about lexer (styles and so)
    --
--     ["lexer.context.log"]      = 1, -- log errors and warnings
--     ["lexer.context.trace"]    = 1, -- show loading, initializations etc
}

local lexer   = lexer or require("lexer")
local context = lexer.context

if context then
    context.inform("loading context (style) properties")
    if context.registerstyles then
        context.registerstyles(styles)
    end
    if context.registerproperties then
        context.registerproperties(properties)
    end
end