diff --git a/.chezmoiexternal.toml b/.chezmoiexternal.toml index d8d7ac9..aab16be 100644 --- a/.chezmoiexternal.toml +++ b/.chezmoiexternal.toml @@ -8,3 +8,10 @@ url = "https://github.com/prdlk/nvim.git" [".config/nvim".pull] args = ["--ff-only"] + +# bat syntax definition — upstream git repo, cloned when missing. +[".config/bat/syntaxes/sublime-purescript-syntax"] + type = "git-repo" + url = "https://github.com/tellnobody1/sublime-purescript-syntax.git" + [".config/bat/syntaxes/sublime-purescript-syntax".pull] + args = ["--ff-only"] diff --git a/.chezmoiignore.tmpl b/.chezmoiignore.tmpl index 26b02d0..10d43c7 100644 --- a/.chezmoiignore.tmpl +++ b/.chezmoiignore.tmpl @@ -7,7 +7,6 @@ AGENTS.md # Runtime/plugin state living inside managed trees — not managed .config/lazygit/.omc/** .config/yazi/plugins/** -.config/yazi/flavors/** .config/tmux/plugins/** .config/fish/fish_variables .config/nvim/lazy-lock.json diff --git a/dot_config/bat/config b/dot_config/bat/config new file mode 100644 index 0000000..2b62865 --- /dev/null +++ b/dot_config/bat/config @@ -0,0 +1,25 @@ +# This is `bat`s configuration file. Each line either contains a comment or +# a command-line option that you want to pass to `bat` by default. You can +# run `bat --help` to get a list of all possible configuration options. + +# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` +# for a list of all available themes +--theme="cyberdream" + +# Enable this to use italic text on the terminal. This is not supported on all +# terminal emulators (like tmux, by default): +#--italic-text=always + +# Uncomment the following line to disable automatic paging: +#--paging=never + +# Uncomment the following line if you are using less version >= 551 and want to +# enable mouse scrolling support in `bat` when running inside tmux. This might +# disable text selection, unless you press shift. +#--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse" + +# Syntax mappings: map a certain filename pattern to a language. +# Example 1: use the C++ syntax for Arduino .ino files +# Example 2: Use ".gitignore"-style highlighting for ".ignore" files +#--map-syntax "*.ino:C++" +#--map-syntax ".ignore:Git Ignore" diff --git a/dot_config/bat/themes/cyberdream.tmTheme b/dot_config/bat/themes/cyberdream.tmTheme new file mode 100644 index 0000000..71fb63c --- /dev/null +++ b/dot_config/bat/themes/cyberdream.tmTheme @@ -0,0 +1,937 @@ + + + + + name + Cyberdream + settings + + + settings + + background + #16181a + caret + #ffffff + block_caret + #7b8496 + foreground + #ffffff + invisibles + #16181a + lineHighlight + #3c4048 + selection + #3c4048 + findHighlight + #5ef1ff + findHighlightForeground + #1e2124 + selectionBorder + #16181a + activeGuide + #ffbd5e + bracketsForeground + #ff5ea0 + bracketsOptions + underline + bracketContentsForeground + #ffffff + bracketContentsOptions + underline + tagsOptions + stippled_underline + + + + name + Comment + scope + comment + settings + + foreground + #7b8496 + fontStyle + + + + + name + String + scope + string + settings + + foreground + #5eff6c + + + + name + Number + scope + constant.numeric + settings + + foreground + #ffffff + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #ffffff + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #ffffff + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + fontStyle + + foreground + #ffbd5e + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #ff5ef1 + + + + name + Ruby Regexp + scope + source.ruby string.regexp.classic.ruby,source.ruby string.regexp.mod-r.ruby + settings + + fontStyle + + foreground + #ff6e5e + + + + name + Keyword + scope + keyword + settings + + foreground + #ffbd5e + + + + name + Keyword Operator + scope + keyword.operator + settings + + foreground + #bd5eff + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #ff5ea0 + + + + name + Storage type + scope + storage.type + settings + + fontStyle + italic + foreground + #5ef1ff + + + + name + Storage Type Namespace + scope + storage.type.namespace + settings + + fontStyle + italic + foreground + #bd5eff + + + + name + Storage Type Class + scope + storage.type.class + settings + + fontStyle + italic + foreground + #bd5eff + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + underline + foreground + #bd5eff + + + + name + Meta Path + scope + meta.path + settings + + fontStyle + underline + foreground + #5ef1ff + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + foreground + #bd5eff + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #5ea1ff + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + foreground + #bd5eff + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #5ef1ff + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #5ef1ff + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #5ea1ff + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #ffffff + + + + name + Library class/type + scope + support.type, support.class + settings + + fontStyle + italic + foreground + #bd5eff + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Support Other Namespace + scope + support.other.namespace + settings + + fontStyle + italic + foreground + #bd5eff + + + + name + Invalid + scope + invalid + settings + + background + #ff5ea0 + fontStyle + + foreground + #ffffff + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + background + #bd5eff + foreground + #ffffff + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #ffffff + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #7b8496 + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #ff6e5e + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #5eff6c + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #5ef1ff + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #ff5ef1 + + + + scope + entity.name.filename + settings + + foreground + #5eff6c + + + + scope + message.error + settings + + foreground + #ff6e5e + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #ffffff + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #ffffff + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #ffffff + + + + name + JSON: 6 deep + scope + meta meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ff5ea0 + + + + name + JSON: 5 deep + scope + meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ff5ef1 + + + + name + JSON: 4 deep + scope + meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #bd5eff + + + + name + JSON: 3 deep + scope + meta meta meta meta.structure.dictionary.value string + settings + + foreground + #5ea1ff + + + + name + JSON: 2 deep + scope + meta meta meta.structure.dictionary.value string + settings + + foreground + #5ef1ff + + + + name + JSON: 1 deep + scope + meta meta.structure.dictionary.value string + settings + + foreground + #ffbd5e + + + + + + name + Markup: strike + scope + markup.strike + settings + + fontStyle + italic + foreground + #ffbd5e + + + + name + Markup: bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #ffbd5e + + + + name + Markup: italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #ffbd5e + + + + name + Markdown: heading + scope + markup.heading + settings + + foreground + #ffbd5e + + + + name + Markdown: List Items Punctuation + scope + punctuation.definition.list_item.markdown + settings + + foreground + #ff5ea0 + + + + name + Markdown: Blockquote + scope + markup.quote + settings + + fontStyle + italic + foreground + #ffffff + + + + name + Markdown: Blockquote Punctuation + scope + punctuation.definition.blockquote.markdown + settings + + fontStyle + italic + foreground + #ffffff + + + + name + Markdown: Separator + scope + meta.separator + settings + + foreground + #7b8496 + + + + name + Markup: raw inline + scope + text.html.markdown markup.raw.inline + settings + + foreground + #5eff6c + + + + name + Markup: underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #bd5eff + + + + name + Markup: Raw block + scope + markup.raw.block + settings + + foreground + #ffffff + + + + name + Markdown: Raw Block fenced source + scope + markup.raw.block.fenced.markdown source + settings + + foreground + #ffffff + + + + name + Markdown: Fenced Bode Block + scope + punctuation.definition.fenced.markdown, variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #7b8496 + + + + name + Markdown: Fenced Language + scope + variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #7b8496 + + + + name + Punctuation Accessor + scope + punctuation.accessor + settings + + foreground + #ff5ea0 + + + + name + Meta Function Return Type + scope + meta.function.return-type + settings + + foreground + #bd5eff + + + + name + Punctuation Section Block Begin + scope + punctuation.section.block.begin + settings + + foreground + #ffffff + + + + name + Punctuation Section Block End + scope + punctuation.section.block.end + settings + + foreground + #ffffff + + + + name + Punctuation Section Embedded Begin + scope + punctuation.section.embedded.begin + settings + + foreground + #ff5ea0 + + + + name + Punctuation Section Embedded End + scope + punctuation.section.embedded.end + settings + + foreground + #ff5ea0 + + + + name + Punctuation Separator Namespace + scope + punctuation.separator.namespace + settings + + foreground + #ff5ea0 + + + + name + Variable Function + scope + variable.function + settings + + foreground + #5ea1ff + + + + name + Variable Other + scope + variable.other + settings + + foreground + #ffffff + + + + name + Variable Language + scope + variable.language + settings + + foreground + #bd5eff + + + + name + Entity Name Module Ruby + scope + entity.name.module.ruby + settings + + foreground + #5ef1ff + + + + name + Entity Name Constant Ruby + scope + entity.name.constant.ruby + settings + + foreground + #5ea1ff + + + + name + Support Function Builtin Ruby + scope + support.function.builtin.ruby + settings + + foreground + #ffffff + + + + name + Storage Type Namespace CS + scope + storage.type.namespace.cs + settings + + foreground + #ff5ea0 + + + + name + Entity Name Namespace CS + scope + entity.name.namespace.cs + settings + + foreground + #5ef1ff + + + + uuid + 68394a4e-1404-4971-bdfc-81dd7f9d29f6 + colorSpaceName + sRGB + semanticClass + theme.cyberdream + author + Scott McKendry + + diff --git a/dot_config/yazi/flavors/cyberdream.yazi/flavor.toml b/dot_config/yazi/flavors/cyberdream.yazi/flavor.toml new file mode 100644 index 0000000..14313fe --- /dev/null +++ b/dot_config/yazi/flavors/cyberdream.yazi/flavor.toml @@ -0,0 +1,92 @@ +#:schema https://yazi-rs.github.io/schemas/theme.json + +[mgr] + +# tmTheme files can be found here: https://github.com/scottmckendry/cyberdream.nvim/tree/main/extras/textmate +syntect_theme = "~/.config/bat/themes/cyberdream.tmTheme" + +border_style = { fg = "#3c4048" } +cwd = { fg = "#5ef1ff" } +find_keyword = { bold = true, fg = "#5eff6c" } +find_position = { fg = "#ffffff" } +marker_copied = { bg = "#f1ff5e", fg = "#f1ff5e" } +marker_cut = { bg = "#ff6e5e", fg = "#ff6e5e" } +marker_selected = { bg = "#3c4048", fg = "#5eff6c" } +count_selected = { bg = "#5eff6c", fg = "#16181a" } +count_copied = { bg = "#f1ff5e", fg = "#16181a" } +count_cut = { bg = "#ff6e5e", fg = "#16181a" } + +[cmp] +active = { bg = "#7b8496", fg = "#bd5eff" } +border = { fg = "#5ea1ff" } +inactive = { fg = "#ffffff" } + +[tabs] +active = { bg = "#5ea1ff", fg = "#16181a" } +inactive = { bg = "#3c4048", fg = "#ffffff" } + +[filetype] +rules = [ + { fg = "#5ef1ff", mime = "image/*" }, + { fg = "#f1ff5e", mime = "video/*" }, + { fg = "#f1ff5e", mime = "audio/*" }, + { fg = "#bd5eff", mime = "application/zip" }, + { fg = "#bd5eff", mime = "application/gzip" }, + { fg = "#bd5eff", mime = "application/x-tar" }, + { fg = "#bd5eff", mime = "application/x-bzip" }, + { fg = "#bd5eff", mime = "application/x-bzip2" }, + { fg = "#bd5eff", mime = "application/x-7z-compressed" }, + { fg = "#bd5eff", mime = "application/x-rar" }, + { fg = "#bd5eff", mime = "application/xz" }, + { fg = "#5eff6c", mime = "application/doc" }, + { fg = "#5eff6c", mime = "application/pdf" }, + { fg = "#5eff6c", mime = "application/rtf" }, + { fg = "#5eff6c", mime = "application/vnd.*" }, + { bold = true, fg = "#5ea1ff", mime = "inode/directory" }, + { fg = "#ffffff", mime = "*" } +] + +[help] +desc = { fg = "#ffffff" } +footer = { fg = "#ffffff" } +hovered = { bg = "#7b8496", fg = "#ffffff" } +on = { fg = "#bd5eff" } +run = { fg = "#5ef1ff" } + +[input] +border = { fg = "#5ea1ff" } +selected = { bg = "#7b8496" } +title = { fg = "#ffffff" } +value = { fg = "#ffffff" } + +[pick] +active = { fg = "#bd5eff" } +border = { fg = "#5ea1ff" } +inactive = { fg = "#ffffff" } + +[mode] +normal_main = { bg = "#5ea1ff", bold = true, fg = "#16181a" } +select_main = { bg = "#5eff6c", bold = true, fg = "#16181a" } +unset_main = { bg = "#ff5ef1", bold = true, fg = "#16181a" } + +[status] +perm_sep = { fg = "#5ef1ff" } +perm_type = { fg = "#5ea1ff" } +perm_read = { fg = "#f1ff5e" } +perm_write = { fg = "#ff6e5e" } +perm_exec = { fg = "#5eff6c" } +progress_error = { bg = "#16181a", fg = "#ff6e5e" } +progress_label = { bg = "#16181a", fg = "#ffffff" } +progress_normal = { bg = "#16181a", fg = "#ffffff" } + +[tasks] +border = { fg = "#5ea1ff" } +hovered = { bg = "#7b8496", fg = "#ffffff" } +title = { fg = "#ffffff" } + +[which] +cand = { fg = "#5ef1ff" } +desc = { fg = "#ffffff" } +mask = { bg = "#3c4048" } +rest = { fg = "#ff5ef1" } +separator_style = { fg = "#7b8496" } diff --git a/run_onchange_after_build-bat-cache.sh.tmpl b/run_onchange_after_build-bat-cache.sh.tmpl new file mode 100755 index 0000000..05552a6 --- /dev/null +++ b/run_onchange_after_build-bat-cache.sh.tmpl @@ -0,0 +1,7 @@ +#!/bin/sh +# Rebuild bat's syntax/theme cache when managed inputs change. +# themes hash: {{ include "dot_config/bat/themes/cyberdream.tmTheme" | sha256sum }} +# config hash: {{ include "dot_config/bat/config" | sha256sum }} +set -eu +command -v bat >/dev/null 2>&1 || exit 0 +bat cache --build >/dev/null