diff --git a/runtime/themes/noctis.toml b/runtime/themes/noctis.toml new file mode 100644 index 000000000..fe598cf41 --- /dev/null +++ b/runtime/themes/noctis.toml @@ -0,0 +1,197 @@ +# Author : 0rphee <0rph3e@proton.me> + +# Template written with the help of https://github.com/n0s4/helix-theme-template +# Keep in mind that I made this to fit Haskell and Python syntax, it may not work so well with other languages. + +## GENERAL ============================== + +"warning" = { fg ="yellow", modifiers = ["bold"] } # Editor warnings. +"error" = { fg = "red", modifiers = ["bold"] } # Editor errors, like mis-typing a command. +"info" = { fg = "mid-blue", bg = "mid-green" } # Code diagnostic info in gutter (LSP). +# ? Difference between info and hint ? +"hint" = { fg = "light-green", modifiers = ["bold"] } # Code diagnostics hint in gutter (LSP). +"diagnostic" = { modifiers = ["underlined"] } # Code diagnostics in editing area (LSP). + +# UI ============================== +# For styling helix itself. + +'ui.background' = { bg = "dark-green"} # Default background color. +'ui.window' = { fg = "mid-green" } # Window border between splits. + +'ui.gutter' = { } # Left gutter for diagnostics and breakpoints. + +'ui.text' = { fg = "white" } # Default text color. +'ui.text.focus' = { fg = "white", bg = "mid-green", modifiers = ["bold"] } # Selection highlight in buffer-picker or file-picker. +'ui.text.info' = { } # Info popup contents (space mode menu). + +'ui.cursor' = { fg = "light-blue", modifiers = ["reversed"] } # Fallback cursor colour, non-primary cursors when there are multiple (shift-c). +'ui.cursor.primary' = { fg = "light-blue", modifiers = ["reversed"] } # The primary cursor when there are multiple (shift-c). +'ui.cursor.insert' = { fg = "light-blue" } # The cursor in insert mode (i). +'ui.cursor.select' = { fg = "light-blue" } # The cursor in select mode (v). +'ui.cursor.match' = { fg = "red", modifiers = ["bold", "reversed"] } # The matching parentheses of that under the cursor. + +'ui.selection' = { bg = "mid-green" } # All currently selected text. +'ui.selection.primary' = { bg = "mid-green" } # The primary selection when there are multiple. +'ui.cursorline.primary' = { bg = 'mid-green' } + +'ui.linenr' = { bg = "dark-green", fg = "gray" } # Line numbers. +'ui.linenr.selected' = { bg = "mid-green", fg = "light-green", modifiers = [ "bold" ] } # Current line number. + +'ui.virtual' = { fg = "mid-green" } # Namespace for additions to the editing area. +'ui.virtual.ruler' = { bg = "mid-green" } # Vertical rulers (colored columns in editing area). +'ui.virtual.whitespace' = { fg = "gray"} # Whitespace markers in editing area. +'ui.virtual.indent-guide' = { fg = "gray" } # Indentation guides. + +'ui.statusline' = { fg = "white", bg = "autocomp-green"} # Status line. +'ui.statusline.inactive' = { fg = "white", bg = "mid-green"} # Status line in unfocused windows. + +'ui.help' = { bg = "mid-green", fg = "white"} # `:command` descriptions above the command line. + +'ui.highlight' = { bg = "mid-green"} # selected contents of symbol pickers (spc-s, spc-S) and current line in buffer picker (spc-b). + +'ui.menu' = { fg = "gray", bg = "mid-green" } # Autocomplete menu. +'ui.menu.selected' = { fg = "white", bg = "autocomp-green" } # Selected autocomplete item. + +'ui.popup' = { bg = "mid-green" } # Documentation popups (space-k). +# 'ui.ppopup.info' = { bg = "midgreen", fg = "gray", modifiers = ["bold"] } # Info popups box (space mode menu). + +# SYNTAX HIGHLIGHTING ============================== +# All the keys here are Treesitter scopes. + +'property' = { fg = "red" } # Regex group names. +'special' = { fg = "mid-blue"} # Special symbols e.g `?` in Rust, `...` in Hare. +'attribute' = { fg = "yellow" } # Class attributes, html tag attributes. + +'type' = { fg = "orange"} # Variable type, like integer or string, including program defined classes, structs etc.. +#'type.builtin' = { } # Primitive types of the language (string, int, float). +#'type.enum.variant' = { } # A variant of an enum. + +'constructor' = { fg = "mid-blue", modifiers = ["bold"]} # Constructor method for a class or struct. And in some cases applies to module names + +'constant' = { fg = "light-blue" } # Constant value +'constant.builtin' = { fg = "mid-blue", modifiers = ["bold"] } # Special constants like `true`, `false`, `none`, etc. +'constant.builtin.boolean' = { } # True or False. +'constant.character' = { fg = "light-green"} # Constant of character type. +'constant.character.escape' = { fg = "purple", modifiers = ["bold"] } # escape codes like \n. +'constant.numeric' = { fg = "purple"} # constant integer or float value. +# 'constant.numeric.integer' = { } # constant integer value. +# 'constant.numeric.float' = { } # constant float value. + +'string' = { fg = "light-green" } # String literal. +'string.regexp' = { } # Regular expression literal. +'string.special' = { fg = "light-blue" } # Strings containing a path, URL, etc. +'string.special.path' = { } # String containing a file path. +'string.special.url' = { } # String containing a web URL. +'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords. + +'comment' = { fg = "gray", modifiers = ["italic"] } # This is a comment. +'comment.line' = { } # Line comments, like this. +'comment.block' = { } # Block comments, like /* this */ in some languages. +'comment.block.documentation' = { } # Doc comments, e.g '///' in rust. + +'variable' = { fg = "white" } # Variable names. +'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc. +'variable.parameter' = { } # Funtion parameters. +'variable.other.member' = { } # Fields of composite data types (e.g. structs, unions). +'variable.function' = { } # ? + +'label' = { fg = "purple" } # Loop labels in rust. + +'punctuation' = { fg = "yellow", modifiers = ["bold"] } # (){}[]:;,. +# 'punctuation.delimeter' = { fg = "yellow" } # Commas and colons. +# 'punctuation.bracket' = { fg = "yellow" } # Parentheses, angle brackets, etc. + +'keyword' = { fg = "pink", modifiers = ["bold"] } # Language reserved keywords. +'keyword.control' = { fg = "pink", modifiers = ["bold"] } # Control keywords. +'keyword.control.conditional' = { fg = "pink", modifiers = ["bold"] } # 'if', 'else', 'elif'. +'keyword.control.repeat' = { } # 'for', 'while', 'loop'. +'keyword.control.import' = { fg = "pink", modifiers = ["italic"] } # 'import', 'export' ('use'?). +'keyword.control.return' = { } # 'return' in most languages. +'keyword.control.exception' = {fg = "pink", modifiers = ["bold"] } # 'raise' in python. +'keyword.operator' = { } # 'or', 'and', 'in'. +'keyword.directive' = { fg = "purple" } # Preprocessor directives (#if in C). +'keyword.function' = { } # The keyword to define a funtion: 'def', 'fun', 'fn'. + +'operator' = { fg = "pink", modifiers = ["bold"] } # Logical (&&, ||) and - I assume - Mathematical (+, %) operators + +'function' = { fg = "dark-blue"} +'function.builtin' = { fg = "dark-blue" } +'function.method' = { fg = "dark-blue" } # Class / Struct methods. +'function.macro' = { fg = "purple" } # Like macros in rust. +# 'function.special' = { fg = "yellow" } # Preprocessor in C. + +'tag' = { fg = "yellow"} # As in for html. + +'namespace' = { fg = "mid-blue" } # * Namespace keyword in java, C#, etc. + + +# Markup ============================== +# Colors for markup languages, like Markdown or XML. + +'markup.heading' = { } # Markdown headings +'markup.heading.1' = { } # Markdown heading 1 color. +'markup.heading.2' = { } # Markdown heading 2 color. +'markup.heading.3' = { } # Markdown heading 3 color. +'markup.heading.4' = { } # Markdown heading 4 color. +'markup.heading.5' = { } # Markdown heading 5 color. +'markup.heading.6' = { } # Markdown heading 6 color. +'markup.heading.marker' = { fg = "red" } # Hashtag color on Markdown headings. + +'markup.list' = { fg = "red" } +'markup.list.numbered' = { } # Numbered list. +'markup.list.unnumbered' = { } # Bullet point list. + +'markup.bold' = { modifiers = ["bold"] } # Bold text. +'markup.italic' = { modifiers = ["italic"] } # Italicised text. + +'markup.link' = { fg = "light-blue", modifiers = ["underlined"] } +'markup.link.url' = { } # Urls pointed to by links. +'markup.link.label' = { } # Non-URL link references. +'markup.link.text' = { fg = "purple"} # URL and image descriptions in links. + +'markup.quote' = { } # `> Quotes` in Markdown. + + +# Markup - Interface ============================== +# "These scopes are used for theming the editor interface." + +'markup.normal' = { } +'markup.normal.completion' = { } # For completion doc popup ui. +'markup.normal.raw' = { } # For hover popup ui. + +'markup.heading.completion' = { } # Headings for completion doc popup ui. +'markup.heading.raw' = { } # Headings for hover popup ui. + +'markup.raw' = { } # Code block in Markdown. +'markup.raw.block' = { } # Multiline (```) codeblock in Markdown. +'markup.raw.inline' = { } # `Inline code block` in Markdown. +'markup.raw.inline.completion' = { } # ? +'markup.raw.inline.hover' = { } # ? + +# Diff ============================== +# Version control changes. + +'diff.plus' = "light-green" # { } # Additions. +'diff.minus' = "yelllow" # { } # Deletions. +'diff.delta' = "red" # { } # Modifications. +'diff.delta.moved' = { } # Renamed or moved files / changes. + + +[palette] # Define your custom colors here. +dark-green = "#00262a" # backgrounds +mid-green = "#073a40" # highlights +autocomp-green = "#0d6772" # lighter than mid-green +light-green = "#48e9a7" # strings + +pink = "#df769b" +yellow = "#ffd800" +purple = "#6f60ea" +white = "#b1cace" +orange = "#e4b782" +gray = "#5b858b" # mainly for comments/background text +red = "#e34e1b" + +dark-blue = "#19a2b7" +mid-blue = "#47ace8" +light-blue = "#87efff" +