aboutsummaryrefslogtreecommitdiffstats
path: root/lua/config/native-colorscheme.lua
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2025-08-31 09:55:39 -0300
committerElvis Claros Castro <elvis@claros.ar>2025-08-31 09:55:39 -0300
commit0b4280dec8fec6ef2e2281ec3616918e7b78d275 (patch)
tree7d29fcbd561a75cdd4ad2ba3720c3681013e3aff /lua/config/native-colorscheme.lua
parentec011dd9c8d4372f4f8566b87981ecc178675adf (diff)
downloadnvim-conf-0b4280dec8fec6ef2e2281ec3616918e7b78d275.tar.gz
nvim-conf-0b4280dec8fec6ef2e2281ec3616918e7b78d275.zip
feat(ui): reemplaza solarized-osaka y lualine.nvim por esquema de color y barra de estado nativos
- Se eliminaron los plugins externos para el esquema de color (solarized-osaka) y la barra de estado (lualine.nvim). - Se agregó una implementación nativa inspirada en Solarized Osaka en `config.native-colorscheme`. - Se agregó una barra de estado nativa en `config.native-statusline` para mejorar el rendimiento y la personalización. - Se actualizó la configuración para cargar la interfaz nativa y establecer opciones relacionadas desde el inicio. - Motivación: Reducir dependencias de plugins, mejorar el tiempo de inicio y permitir una personalización más profunda de los elementos de la interfaz.
Diffstat (limited to 'lua/config/native-colorscheme.lua')
-rw-r--r--lua/config/native-colorscheme.lua209
1 files changed, 209 insertions, 0 deletions
diff --git a/lua/config/native-colorscheme.lua b/lua/config/native-colorscheme.lua
new file mode 100644
index 0000000..029cf43
--- /dev/null
+++ b/lua/config/native-colorscheme.lua
@@ -0,0 +1,209 @@
+-- =====================================================
+-- Native Solarized Osaka Colorscheme Implementation
+-- =====================================================
+
+local M = {}
+
+-- Color palette based on solarized-osaka
+local colors = {
+ -- Base colors
+ base03 = "#16161e",
+ base02 = "#1a1a23",
+ base01 = "#2e3c64",
+ base00 = "#414868",
+ base0 = "#565f89",
+ base1 = "#6183bb",
+ base2 = "#7aa2f7",
+ base3 = "#bb9af7",
+ base4 = "#c0caf5",
+
+ -- Background variants
+ bg_dark = "#16161e",
+ bg = "#1a1b26",
+ bg_highlight = "#292e42",
+ bg_popup = "#16161e",
+ bg_sidebar = "#16161e",
+ bg_statusline = "#16161e",
+ bg_float = "#1a1a23",
+
+ -- Foreground
+ fg = "#c0caf5",
+ fg_dark = "#a9b1d6",
+ fg_gutter = "#3b4261",
+
+ -- Accent colors
+ red = "#f7768e",
+ orange = "#ff9e64",
+ yellow = "#e0af68",
+ green = "#9ece6a",
+ cyan = "#73daca",
+ blue = "#7aa2f7",
+ purple = "#bb9af7",
+ magenta = "#bb9af7",
+
+ -- Enhanced versions
+ red100 = "#ff7a93",
+ orange100 = "#ffad7a",
+ yellow100 = "#e7c664",
+ green100 = "#b3d882",
+ cyan100 = "#7dd3c0",
+ blue100 = "#9bb3f7",
+ purple100 = "#d2a8ff",
+ magenta100 = "#d2a8ff",
+
+ red300 = "#f7768e",
+ orange300 = "#ff9e64",
+ yellow300 = "#e0af68",
+ green300 = "#9ece6a",
+ cyan300 = "#73daca",
+ blue300 = "#7aa2f7",
+ purple300 = "#bb9af7",
+ magenta300 = "#bb9af7",
+
+ -- Special
+ border = "#27a1b9",
+ comment = "#565f89",
+ none = "NONE",
+}
+
+-- Highlight groups
+local highlights = {
+ -- Editor
+ Normal = { fg = colors.fg, bg = colors.none },
+ NormalFloat = { fg = colors.fg, bg = colors.bg_float },
+ NormalNC = { fg = colors.fg, bg = colors.none },
+
+ -- Cursor
+ Cursor = { fg = colors.bg, bg = colors.fg },
+ CursorLine = { bg = "#1e202a" },
+ CursorLineNr = { fg = colors.orange, bold = true },
+ CursorColumn = { bg = colors.bg_highlight },
+
+ -- Line numbers
+ LineNr = { fg = colors.fg_gutter },
+ SignColumn = { fg = colors.fg_gutter, bg = colors.none },
+
+ -- Visual selection
+ Visual = { bg = "#33467c" },
+ VisualNOS = { bg = "#33467c" },
+
+ -- Search
+ Search = { bg = colors.yellow, fg = colors.bg_dark },
+ IncSearch = { bg = colors.orange, fg = colors.bg_dark },
+
+ -- Statusline
+ StatusLine = { fg = colors.fg, bg = colors.bg_statusline },
+ StatusLineNC = { fg = colors.comment, bg = colors.bg_statusline },
+
+ -- Tabs
+ TabLine = { fg = colors.comment, bg = colors.bg_statusline },
+ TabLineFill = { bg = colors.bg_statusline },
+ TabLineSel = { fg = colors.fg, bg = colors.bg_highlight },
+
+ -- Popup menu
+ Pmenu = { fg = colors.fg, bg = colors.bg_popup },
+ PmenuSel = { bg = colors.bg_highlight },
+ PmenuSbar = { bg = colors.bg_popup },
+ PmenuThumb = { bg = colors.fg_gutter },
+
+ -- Splits
+ VertSplit = { fg = colors.border },
+ WinSeparator = { fg = colors.border },
+
+ -- Diagnostics
+ DiagnosticError = { fg = colors.red },
+ DiagnosticWarn = { fg = colors.yellow },
+ DiagnosticInfo = { fg = colors.blue },
+ DiagnosticHint = { fg = colors.cyan },
+
+ -- Syntax highlighting
+ Comment = { fg = colors.comment, italic = true },
+
+ Constant = { fg = colors.orange, bold = true },
+ String = { fg = colors.green },
+ Character = { fg = colors.green },
+ Number = { fg = colors.orange },
+ Boolean = { fg = colors.orange },
+ Float = { fg = colors.orange },
+
+ Identifier = { fg = colors.red },
+ Function = { fg = colors.blue, bold = true },
+
+ Statement = { fg = colors.purple, italic = true },
+ Conditional = { fg = colors.purple, italic = true },
+ Repeat = { fg = colors.purple, italic = true },
+ Label = { fg = colors.purple },
+ Operator = { fg = colors.cyan },
+ Keyword = { fg = colors.purple, italic = true },
+ Exception = { fg = colors.purple },
+
+ PreProc = { fg = colors.cyan },
+ Include = { fg = colors.purple },
+ Define = { fg = colors.purple },
+ Macro = { fg = colors.purple },
+ PreCondit = { fg = colors.cyan },
+
+ Type = { fg = colors.yellow, bold = true },
+ StorageClass = { fg = colors.yellow },
+ Structure = { fg = colors.yellow },
+ Typedef = { fg = colors.yellow },
+
+ Special = { fg = colors.blue },
+ SpecialChar = { fg = colors.orange },
+ Tag = { fg = colors.red },
+ Delimiter = { fg = colors.fg },
+ SpecialComment = { fg = colors.comment },
+ Debug = { fg = colors.orange },
+
+ -- Git
+ GitSignsAdd = { fg = colors.green },
+ GitSignsChange = { fg = colors.yellow },
+ GitSignsDelete = { fg = colors.red },
+
+ -- Tree-sitter
+ ["@comment"] = { link = "Comment" },
+ ["@keyword"] = { link = "Keyword" },
+ ["@keyword.conditional"] = { link = "Conditional" },
+ ["@keyword.repeat"] = { link = "Repeat" },
+ ["@keyword.function"] = { fg = colors.purple, italic = true },
+ ["@function"] = { link = "Function" },
+ ["@function.builtin"] = { fg = colors.cyan, bold = true },
+ ["@variable"] = { fg = colors.fg },
+ ["@variable.builtin"] = { fg = colors.red },
+ ["@constant"] = { link = "Constant" },
+ ["@constant.builtin"] = { fg = colors.orange, bold = true },
+ ["@string"] = { link = "String" },
+ ["@number"] = { link = "Number" },
+ ["@boolean"] = { link = "Boolean" },
+ ["@type"] = { link = "Type" },
+ ["@type.builtin"] = { fg = colors.cyan, bold = true },
+}
+
+function M.setup()
+ -- Clear existing highlights
+ vim.cmd("highlight clear")
+ if vim.fn.exists("syntax_on") then
+ vim.cmd("syntax reset")
+ end
+
+ -- Set colorscheme name
+ vim.g.colors_name = "native-solarized-osaka"
+
+ -- Set terminal colors
+ if vim.fn.has("termguicolors") == 1 then
+ vim.opt.termguicolors = true
+ end
+
+ -- Apply highlights
+ for group, settings in pairs(highlights) do
+ vim.api.nvim_set_hl(0, group, settings)
+ end
+
+ -- Set background
+ vim.opt.background = "dark"
+end
+
+-- Export colors for use in statusline
+M.colors = colors
+
+return M