@@ -0,0 +1,197 @@
1+# Author : 0rphee <0rph3e@proton.me>
2+
3+# Template written with the help of https://github.com/n0s4/helix-theme-template
4+# Keep in mind that I made this to fit Haskell and Python syntax, it may not work so well with other languages.
5+
6+## GENERAL ==============================
7+
8+"warning" = { fg ="yellow", modifiers = ["bold"] } # Editor warnings.
9+"error" = { fg = "red", modifiers = ["bold"] } # Editor errors, like mis-typing a command.
10+"info" = { fg = "mid-blue", bg = "mid-green" } # Code diagnostic info in gutter (LSP).
11+# ? Difference between info and hint ?
12+"hint" = { fg = "light-green", modifiers = ["bold"] } # Code diagnostics hint in gutter (LSP).
13+"diagnostic" = { modifiers = ["underlined"] } # Code diagnostics in editing area (LSP).
14+
15+# UI ==============================
16+# For styling helix itself.
17+
18+'ui.background' = { bg = "dark-green"} # Default background color.
19+'ui.window' = { fg = "mid-green" } # Window border between splits.
20+
21+'ui.gutter' = { } # Left gutter for diagnostics and breakpoints.
22+
23+'ui.text' = { fg = "white" } # Default text color.
24+'ui.text.focus' = { fg = "white", bg = "mid-green", modifiers = ["bold"] } # Selection highlight in buffer-picker or file-picker.
25+'ui.text.info' = { } # Info popup contents (space mode menu).
26+
27+'ui.cursor' = { fg = "light-blue", modifiers = ["reversed"] } # Fallback cursor colour, non-primary cursors when there are multiple (shift-c).
28+'ui.cursor.primary' = { fg = "light-blue", modifiers = ["reversed"] } # The primary cursor when there are multiple (shift-c).
29+'ui.cursor.insert' = { fg = "light-blue" } # The cursor in insert mode (i).
30+'ui.cursor.select' = { fg = "light-blue" } # The cursor in select mode (v).
31+'ui.cursor.match' = { fg = "red", modifiers = ["bold", "reversed"] } # The matching parentheses of that under the cursor.
32+
33+'ui.selection' = { bg = "mid-green" } # All currently selected text.
34+'ui.selection.primary' = { bg = "mid-green" } # The primary selection when there are multiple.
35+'ui.cursorline.primary' = { bg = 'mid-green' }
36+
37+'ui.linenr' = { bg = "dark-green", fg = "gray" } # Line numbers.
38+'ui.linenr.selected' = { bg = "mid-green", fg = "light-green", modifiers = [ "bold" ] } # Current line number.
39+
40+'ui.virtual' = { fg = "mid-green" } # Namespace for additions to the editing area.
41+'ui.virtual.ruler' = { bg = "mid-green" } # Vertical rulers (colored columns in editing area).
42+'ui.virtual.whitespace' = { fg = "gray"} # Whitespace markers in editing area.
43+'ui.virtual.indent-guide' = { fg = "gray" } # Indentation guides.
44+
45+'ui.statusline' = { fg = "white", bg = "autocomp-green"} # Status line.
46+'ui.statusline.inactive' = { fg = "white", bg = "mid-green"} # Status line in unfocused windows.
47+
48+'ui.help' = { bg = "mid-green", fg = "white"} # `:command` descriptions above the command line.
49+
50+'ui.highlight' = { bg = "mid-green"} # selected contents of symbol pickers (spc-s, spc-S) and current line in buffer picker (spc-b).
51+
52+'ui.menu' = { fg = "gray", bg = "mid-green" } # Autocomplete menu.
53+'ui.menu.selected' = { fg = "white", bg = "autocomp-green" } # Selected autocomplete item.
54+
55+'ui.popup' = { bg = "mid-green" } # Documentation popups (space-k).
56+# 'ui.ppopup.info' = { bg = "midgreen", fg = "gray", modifiers = ["bold"] } # Info popups box (space mode menu).
57+
58+# SYNTAX HIGHLIGHTING ==============================
59+# All the keys here are Treesitter scopes.
60+
61+'property' = { fg = "red" } # Regex group names.
62+'special' = { fg = "mid-blue"} # Special symbols e.g `?` in Rust, `...` in Hare.
63+'attribute' = { fg = "yellow" } # Class attributes, html tag attributes.
64+
65+'type' = { fg = "orange"} # Variable type, like integer or string, including program defined classes, structs etc..
66+#'type.builtin' = { } # Primitive types of the language (string, int, float).
67+#'type.enum.variant' = { } # A variant of an enum.
68+
69+'constructor' = { fg = "mid-blue", modifiers = ["bold"]} # Constructor method for a class or struct. And in some cases applies to module names
70+
71+'constant' = { fg = "light-blue" } # Constant value
72+'constant.builtin' = { fg = "mid-blue", modifiers = ["bold"] } # Special constants like `true`, `false`, `none`, etc.
73+'constant.builtin.boolean' = { } # True or False.
74+'constant.character' = { fg = "light-green"} # Constant of character type.
75+'constant.character.escape' = { fg = "purple", modifiers = ["bold"] } # escape codes like \n.
76+'constant.numeric' = { fg = "purple"} # constant integer or float value.
77+# 'constant.numeric.integer' = { } # constant integer value.
78+# 'constant.numeric.float' = { } # constant float value.
79+
80+'string' = { fg = "light-green" } # String literal.
81+'string.regexp' = { } # Regular expression literal.
82+'string.special' = { fg = "light-blue" } # Strings containing a path, URL, etc.
83+'string.special.path' = { } # String containing a file path.
84+'string.special.url' = { } # String containing a web URL.
85+'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords.
86+
87+'comment' = { fg = "gray", modifiers = ["italic"] } # This is a comment.
88+'comment.line' = { } # Line comments, like this.
89+'comment.block' = { } # Block comments, like /* this */ in some languages.
90+'comment.block.documentation' = { } # Doc comments, e.g '///' in rust.
91+
92+'variable' = { fg = "white" } # Variable names.
93+'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc.
94+'variable.parameter' = { } # Funtion parameters.
95+'variable.other.member' = { } # Fields of composite data types (e.g. structs, unions).
96+'variable.function' = { } # ?
97+
98+'label' = { fg = "purple" } # Loop labels in rust.
99+
100+'punctuation' = { fg = "yellow", modifiers = ["bold"] } # (){}[]:;,.
101+# 'punctuation.delimeter' = { fg = "yellow" } # Commas and colons.
102+# 'punctuation.bracket' = { fg = "yellow" } # Parentheses, angle brackets, etc.
103+
104+'keyword' = { fg = "pink", modifiers = ["bold"] } # Language reserved keywords.
105+'keyword.control' = { fg = "pink", modifiers = ["bold"] } # Control keywords.
106+'keyword.control.conditional' = { fg = "pink", modifiers = ["bold"] } # 'if', 'else', 'elif'.
107+'keyword.control.repeat' = { } # 'for', 'while', 'loop'.
108+'keyword.control.import' = { fg = "pink", modifiers = ["italic"] } # 'import', 'export' ('use'?).
109+'keyword.control.return' = { } # 'return' in most languages.
110+'keyword.control.exception' = {fg = "pink", modifiers = ["bold"] } # 'raise' in python.
111+'keyword.operator' = { } # 'or', 'and', 'in'.
112+'keyword.directive' = { fg = "purple" } # Preprocessor directives (#if in C).
113+'keyword.function' = { } # The keyword to define a funtion: 'def', 'fun', 'fn'.
114+
115+'operator' = { fg = "pink", modifiers = ["bold"] } # Logical (&&, ||) and - I assume - Mathematical (+, %) operators
116+
117+'function' = { fg = "dark-blue"}
118+'function.builtin' = { fg = "dark-blue" }
119+'function.method' = { fg = "dark-blue" } # Class / Struct methods.
120+'function.macro' = { fg = "purple" } # Like macros in rust.
121+# 'function.special' = { fg = "yellow" } # Preprocessor in C.
122+
123+'tag' = { fg = "yellow"} # As in <body> for html.
124+
125+'namespace' = { fg = "mid-blue" } # * Namespace keyword in java, C#, etc.
126+
127+
128+# Markup ==============================
129+# Colors for markup languages, like Markdown or XML.
130+
131+'markup.heading' = { } # Markdown headings
132+'markup.heading.1' = { } # Markdown heading 1 color.
133+'markup.heading.2' = { } # Markdown heading 2 color.
134+'markup.heading.3' = { } # Markdown heading 3 color.
135+'markup.heading.4' = { } # Markdown heading 4 color.
136+'markup.heading.5' = { } # Markdown heading 5 color.
137+'markup.heading.6' = { } # Markdown heading 6 color.
138+'markup.heading.marker' = { fg = "red" } # Hashtag color on Markdown headings.
139+
140+'markup.list' = { fg = "red" }
141+'markup.list.numbered' = { } # Numbered list.
142+'markup.list.unnumbered' = { } # Bullet point list.
143+
144+'markup.bold' = { modifiers = ["bold"] } # Bold text.
145+'markup.italic' = { modifiers = ["italic"] } # Italicised text.
146+
147+'markup.link' = { fg = "light-blue", modifiers = ["underlined"] }
148+'markup.link.url' = { } # Urls pointed to by links.
149+'markup.link.label' = { } # Non-URL link references.
150+'markup.link.text' = { fg = "purple"} # URL and image descriptions in links.
151+
152+'markup.quote' = { } # `> Quotes` in Markdown.
153+
154+
155+# Markup - Interface ==============================
156+# "These scopes are used for theming the editor interface."
157+
158+'markup.normal' = { }
159+'markup.normal.completion' = { } # For completion doc popup ui.
160+'markup.normal.raw' = { } # For hover popup ui.
161+
162+'markup.heading.completion' = { } # Headings for completion doc popup ui.
163+'markup.heading.raw' = { } # Headings for hover popup ui.
164+
165+'markup.raw' = { } # Code block in Markdown.
166+'markup.raw.block' = { } # Multiline (```) codeblock in Markdown.
167+'markup.raw.inline' = { } # `Inline code block` in Markdown.
168+'markup.raw.inline.completion' = { } # ?
169+'markup.raw.inline.hover' = { } # ?
170+
171+# Diff ==============================
172+# Version control changes.
173+
174+'diff.plus' = "light-green" # { } # Additions.
175+'diff.minus' = "yelllow" # { } # Deletions.
176+'diff.delta' = "red" # { } # Modifications.
177+'diff.delta.moved' = { } # Renamed or moved files / changes.
178+
179+
180+[palette] # Define your custom colors here.
181+dark-green = "#00262a" # backgrounds
182+mid-green = "#073a40" # highlights
183+autocomp-green = "#0d6772" # lighter than mid-green
184+light-green = "#48e9a7" # strings
185+
186+pink = "#df769b"
187+yellow = "#ffd800"
188+purple = "#6f60ea"
189+white = "#b1cace"
190+orange = "#e4b782"
191+gray = "#5b858b" # mainly for comments/background text
192+red = "#e34e1b"
193+
194+dark-blue = "#19a2b7"
195+mid-blue = "#47ace8"
196+light-blue = "#87efff"
197+