From d587a8ac3e0a13cc6b50717fdd13616567dd7dd7 Mon Sep 17 00:00:00 2001 From: ChrisHilborne Date: Sun, 22 Oct 2023 01:11:33 +0200 Subject: [PATCH] NvChad statusline workinggit add -Agit add -A --- init.lua | 5 +- lua/custom/init.lua | 1 + lua/custom/plugins/themes.lua | 38 ++-- lua/custom/statusline/init.lua | 16 ++ lua/custom/statusline/statusline.lua | 214 ++++++++++++++++++ lua/custom/statusline/theme.lua | 127 +++++++++++ lua/custom/statusline/themes/catppuccin.lua | 66 ++++++ lua/custom/statusline/themes/chadracula.lua | 67 ++++++ lua/custom/statusline/themes/github_dark.lua | 85 +++++++ lua/custom/statusline/themes/gruvbox.lua | 72 ++++++ lua/custom/statusline/themes/melange.lua | 84 +++++++ lua/custom/statusline/themes/nord.lua | 66 ++++++ lua/custom/statusline/themes/onedark.lua | 62 +++++ lua/custom/statusline/themes/onenord.lua | 62 +++++ .../statusline/themes/penumbra_dark.lua | 96 ++++++++ .../statusline/themes/solarized_dark.lua | 62 +++++ lua/custom/statusline/themes/tokyodark.lua | 61 +++++ lua/custom/statusline/themes/tokyonight.lua | 70 ++++++ lua/custom/statusline/themes/tundra.lua | 104 +++++++++ 19 files changed, 1338 insertions(+), 20 deletions(-) create mode 100644 lua/custom/statusline/init.lua create mode 100644 lua/custom/statusline/statusline.lua create mode 100644 lua/custom/statusline/theme.lua create mode 100644 lua/custom/statusline/themes/catppuccin.lua create mode 100644 lua/custom/statusline/themes/chadracula.lua create mode 100644 lua/custom/statusline/themes/github_dark.lua create mode 100644 lua/custom/statusline/themes/gruvbox.lua create mode 100644 lua/custom/statusline/themes/melange.lua create mode 100644 lua/custom/statusline/themes/nord.lua create mode 100644 lua/custom/statusline/themes/onedark.lua create mode 100644 lua/custom/statusline/themes/onenord.lua create mode 100644 lua/custom/statusline/themes/penumbra_dark.lua create mode 100644 lua/custom/statusline/themes/solarized_dark.lua create mode 100644 lua/custom/statusline/themes/tokyodark.lua create mode 100644 lua/custom/statusline/themes/tokyonight.lua create mode 100644 lua/custom/statusline/themes/tundra.lua diff --git a/init.lua b/init.lua index 6cbcdfa7..a594c0f7 100644 --- a/init.lua +++ b/init.lua @@ -40,7 +40,6 @@ P.S. You can delete this when you're done too. It's your config now :) -- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) -require("custom") vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' @@ -200,6 +199,7 @@ require('lazy').setup({ -- [[ Theme ]] vim.cmd [[colorscheme tokyonight]] +vim.g.theme = "tokyonight" -- [[ Setting options ]] -- See `:help vim.o` @@ -524,5 +524,8 @@ cmp.setup { -- [[NvimTree]] require("nvim-tree").setup {} +-- [[Other configs]] +require("custom") + -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/init.lua b/lua/custom/init.lua index b29be39a..87a0d132 100644 --- a/lua/custom/init.lua +++ b/lua/custom/init.lua @@ -1 +1,2 @@ require("custom.configs.set") +require("custom.statusline.init") diff --git a/lua/custom/plugins/themes.lua b/lua/custom/plugins/themes.lua index de0ec6a9..b724f728 100644 --- a/lua/custom/plugins/themes.lua +++ b/lua/custom/plugins/themes.lua @@ -7,25 +7,25 @@ return { style = "moon", }, }, - { - "catppuccin/nvim", - lazy = false, - priority = 1000, - }, - { - -- Set lualine as statusline - 'nvim-lualine/lualine.nvim', - -- See `:help lualine.txt` - opts = { - options = { - icons_enabled = true, - -- theme = 'catppuccin-mocha', - theme = 'tokyonight', - -- section_separators = { left = '', right = '' }, - -- component_separators = { left = '', right = '' } - }, - }, - }, + -- { + -- "catppuccin/nvim", + -- lazy = false, + -- priority = 1000, + -- }, + -- { + -- Set lualine as statusline + -- 'nvim-lualine/lualine.nvim', + -- See `:help lualine.txt` + -- opts = { + -- options = { + -- icons_enabled = true, + -- theme = 'catppuccin-mocha', + -- theme = 'tokyonight', + -- section_separators = { left = '', right = '' }, + -- component_separators = { left = '', right = '' } + -- }, + -- }, + -- }, { -- Add indentation guides even on blank lines 'lukas-reineke/indent-blankline.nvim', diff --git a/lua/custom/statusline/init.lua b/lua/custom/statusline/init.lua new file mode 100644 index 00000000..fd334ce4 --- /dev/null +++ b/lua/custom/statusline/init.lua @@ -0,0 +1,16 @@ +vim.opt.statusline = "%!v:lua.require('custom.statusline.statusline').run()" + +function SetColors(theme) + for hlgroupName, hlgroup_vals in pairs(theme) do + local hlname = hlgroupName + local opts = {} + + for optName, optVal in pairs(hlgroup_vals) do + opts[optName] = optVal + end + vim.api.nvim_set_hl(0, hlname, opts) + end +end + +Theme = require('custom.statusline.theme') +SetColors(Theme) diff --git a/lua/custom/statusline/statusline.lua b/lua/custom/statusline/statusline.lua new file mode 100644 index 00000000..9bb1dd6c --- /dev/null +++ b/lua/custom/statusline/statusline.lua @@ -0,0 +1,214 @@ +local fn = vim.fn +local sep_style = "default" + +local default_sep_icons = { + default = { left = "", right = "" }, + round = { left = "", right = "" }, + block = { left = "█", right = "█" }, + arrow = { left = "", right = "" }, +} + +local separators = (type(sep_style) == "table" and sep_style) or default_sep_icons[sep_style] + +local sep_l = separators["left"] +local sep_r = separators["right"] + +local function stbufnr() + return vim.api.nvim_win_get_buf(vim.g.statusline_winid) +end + +local function is_activewin() + return vim.api.nvim_get_current_win() == vim.g.statusline_winid +end + +local M = {} + +M.modes = { + ["n"] = { "NORMAL", "St_NormalMode" }, + ["no"] = { "NORMAL (no)", "St_NormalMode" }, + ["nov"] = { "NORMAL (nov)", "St_NormalMode" }, + ["noV"] = { "NORMAL (noV)", "St_NormalMode" }, + ["noCTRL-V"] = { "NORMAL", "St_NormalMode" }, + ["niI"] = { "NORMAL i", "St_NormalMode" }, + ["niR"] = { "NORMAL r", "St_NormalMode" }, + ["niV"] = { "NORMAL v", "St_NormalMode" }, + ["nt"] = { "NTERMINAL", "St_NTerminalMode" }, + ["ntT"] = { "NTERMINAL (ntT)", "St_NTerminalMode" }, + + ["v"] = { "VISUAL", "St_VisualMode" }, + ["vs"] = { "V-CHAR (Ctrl O)", "St_VisualMode" }, + ["V"] = { "V-LINE", "St_VisualMode" }, + ["Vs"] = { "V-LINE", "St_VisualMode" }, + [""] = { "V-BLOCK", "St_VisualMode" }, + + ["i"] = { "INSERT", "St_InsertMode" }, + ["ic"] = { "INSERT (completion)", "St_InsertMode" }, + ["ix"] = { "INSERT completion", "St_InsertMode" }, + + ["t"] = { "TERMINAL", "St_TerminalMode" }, + + ["R"] = { "REPLACE", "St_ReplaceMode" }, + ["Rc"] = { "REPLACE (Rc)", "St_ReplaceMode" }, + ["Rx"] = { "REPLACEa (Rx)", "St_ReplaceMode" }, + ["Rv"] = { "V-REPLACE", "St_ReplaceMode" }, + ["Rvc"] = { "V-REPLACE (Rvc)", "St_ReplaceMode" }, + ["Rvx"] = { "V-REPLACE (Rvx)", "St_ReplaceMode" }, + + ["s"] = { "SELECT", "St_SelectMode" }, + ["S"] = { "S-LINE", "St_SelectMode" }, + [""] = { "S-BLOCK", "St_SelectMode" }, + ["c"] = { "COMMAND", "St_CommandMode" }, + ["cv"] = { "COMMAND", "St_CommandMode" }, + ["ce"] = { "COMMAND", "St_CommandMode" }, + ["r"] = { "PROMPT", "St_ConfirmMode" }, + ["rm"] = { "MORE", "St_ConfirmMode" }, + ["r?"] = { "CONFIRM", "St_ConfirmMode" }, + ["x"] = { "CONFIRM", "St_ConfirmMode" }, + ["!"] = { "SHELL", "St_TerminalMode" }, +} + +M.mode = function() + if not is_activewin() then + return "" + end + + local m = vim.api.nvim_get_mode().mode + local current_mode = "%#" .. M.modes[m][2] .. "#" .. "  " .. M.modes[m][1] + local mode_sep1 = "%#" .. M.modes[m][2] .. "Sep" .. "#" .. sep_r + + return current_mode .. mode_sep1 .. "%#ST_EmptySpace#" .. sep_r +end + +-- credits to ii14 for str:match func +M.fileInfo = function() + local icon = " 󰈚 " + local path = vim.api.nvim_buf_get_name(stbufnr()) + local name = (path == "" and "Empty ") or path:match "([^/\\]+)[/\\]*$" + + if name ~= "Empty " then + local devicons_present, devicons = pcall(require, "nvim-web-devicons") + + if devicons_present then + local ft_icon = devicons.get_icon(name) + icon = (ft_icon ~= nil and " " .. ft_icon) or icon + end + + name = " " .. name .. " " + end + + return "%#St_file_info#" .. icon .. name .. "%#St_file_sep#" .. sep_r +end + +M.git = function() + if not vim.b[stbufnr()].gitsigns_head or vim.b[stbufnr()].gitsigns_git_status then + return "" + end + + local git_status = vim.b[stbufnr()].gitsigns_status_dict + + local added = (git_status.added and git_status.added ~= 0) and ("  " .. git_status.added) or "" + local changed = (git_status.changed and git_status.changed ~= 0) and ("  " .. git_status.changed) or "" + local removed = (git_status.removed and git_status.removed ~= 0) and ("  " .. git_status.removed) or "" + local branch_name = "  " .. git_status.head + + return "%#St_gitIcons#" .. branch_name .. added .. changed .. removed +end + +-- LSP STUFF +M.LSP_progress = function() + if not rawget(vim, "lsp") or vim.lsp.status or not is_activewin() then + return "" + end + + local Lsp = vim.lsp.util.get_progress_messages()[1] + + if vim.o.columns < 120 or not Lsp then + return "" + end + + if Lsp.done then + vim.defer_fn(function() + vim.cmd.redrawstatus() + end, 1000) + end + + local msg = Lsp.message or "" + local percentage = Lsp.percentage or 0 + local title = Lsp.title or "" + local spinners = { "", "󰪞", "󰪟", "󰪠", "󰪢", "󰪣", "󰪤", "󰪥" } + local ms = vim.loop.hrtime() / 1000000 + local frame = math.floor(ms / 120) % #spinners + local content = string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage) + + + return ("%#St_LspProgress#" .. content) or "" +end + +M.LSP_Diagnostics = function() + if not rawget(vim, "lsp") then + return "" + end + + local errors = #vim.diagnostic.get(stbufnr(), { severity = vim.diagnostic.severity.ERROR }) + local warnings = #vim.diagnostic.get(stbufnr(), { severity = vim.diagnostic.severity.WARN }) + local hints = #vim.diagnostic.get(stbufnr(), { severity = vim.diagnostic.severity.HINT }) + local info = #vim.diagnostic.get(stbufnr(), { severity = vim.diagnostic.severity.INFO }) + + errors = (errors and errors > 0) and ("%#St_lspError#" .. " " .. errors .. " ") or "" + warnings = (warnings and warnings > 0) and ("%#St_lspWarning#" .. " " .. warnings .. " ") or "" + hints = (hints and hints > 0) and ("%#St_lspHints#" .. "󰛩 " .. hints .. " ") or "" + info = (info and info > 0) and ("%#St_lspInfo#" .. "󰋼 " .. info .. " ") or "" + + return errors .. warnings .. hints .. info +end + +M.LSP_status = function() + if rawget(vim, "lsp") then + for _, client in ipairs(vim.lsp.get_active_clients()) do + if client.attached_buffers[stbufnr()] and client.name ~= "null-ls" then + return (vim.o.columns > 100 and "%#St_LspStatus#" .. "  LSP ~ " .. client.name .. " ") or "  LSP " + end + end + end +end + +M.cwd = function() + local dir_icon = "%#St_cwd_icon#" .. "󰉋 " + local dir_name = "%#St_cwd_text#" .. " " .. fn.fnamemodify(fn.getcwd(), ":t") .. " " + return (vim.o.columns > 85 and ("%#St_cwd_sep#" .. sep_l .. dir_icon .. dir_name)) or "" +end + +M.cursor_position = function() + local left_sep = "%#St_pos_sep#" .. sep_l .. "%#St_pos_icon#" .. " " + + local current_line = fn.line(".", vim.g.statusline_winid) + local total_line = fn.line("$", vim.g.statusline_winid) + local text = math.modf((current_line / total_line) * 100) .. tostring "%%" + text = string.format("%4s", text) + + text = (current_line == 1 and "Top") or text + text = (current_line == total_line and "Bot") or text + + return left_sep .. "%#St_pos_text#" .. " " .. text .. " " +end + +M.run = function() + local modules = { + M.mode(), + M.fileInfo(), + M.git(), + + "%=", + M.LSP_progress(), + "%=", + + M.LSP_Diagnostics(), + M.LSP_status() or "", + M.cwd(), + M.cursor_position(), + } + + return table.concat(modules) +end + +return M diff --git a/lua/custom/statusline/theme.lua b/lua/custom/statusline/theme.lua new file mode 100644 index 00000000..10b87e87 --- /dev/null +++ b/lua/custom/statusline/theme.lua @@ -0,0 +1,127 @@ +local statusline_bg = nil +local merge_tb = vim.tbl_deep_extend + +local theme = require('custom.statusline.themes.tokyodark') +local colors = theme.base_30 + +local Lsp_highlights = { + St_lspError = { + fg = colors.red, + bg = statusline_bg, + }, + + St_lspWarning = { + fg = colors.yellow, + bg = statusline_bg, + }, + + St_LspHints = { + fg = colors.purple, + bg = statusline_bg, + }, + + St_LspInfo = { + fg = colors.green, + bg = statusline_bg, + }, +} + +local M = {} + +M.theme = { + StatusLine = { + bg = statusline_bg, + }, + + St_gitIcons = { + fg = colors.light_grey, + bg = statusline_bg, + bold = true, + }, + + St_LspStatus = { + fg = colors.nord_blue, + bg = statusline_bg, + }, + + St_LspProgress = { + fg = colors.green, + bg = statusline_bg, + }, + + St_LspStatus_Icon = { + fg = colors.black, + bg = colors.nord_blue, + }, + + St_EmptySpace = { + fg = colors.grey, + bg = colors.lightbg, + }, + + St_EmptySpace2 = { + fg = colors.grey, + bg = statusline_bg, + }, + + St_file_info = { + bg = colors.lightbg, + fg = colors.white, + }, + + St_file_sep = { + bg = statusline_bg, + fg = colors.lightbg, + }, + + St_cwd_icon = { + fg = colors.one_bg, + bg = colors.red, + }, + + St_cwd_text = { + fg = colors.white, + bg = colors.lightbg, + }, + + St_cwd_sep = { + fg = colors.red, + bg = statusline_bg, + }, + + St_pos_sep = { + fg = colors.green, + bg = colors.lightbg, + }, + + St_pos_icon = { + fg = colors.black, + bg = colors.green, + }, + + St_pos_text = { + fg = colors.green, + bg = colors.lightbg, + }, +} + +M.theme = merge_tb("force", M.theme, Lsp_highlights) + +local function genModes_hl(modename, col) + M.theme["St_" .. modename .. "Mode"] = { fg = colors.black, bg = colors[col], bold = true } + M.theme["St_" .. modename .. "ModeSep"] = { fg = colors[col], bg = colors.grey } +end + +-- add mode highlights +genModes_hl("Normal", "nord_blue") + +genModes_hl("Visual", "cyan") +genModes_hl("Insert", "dark_purple") +genModes_hl("Terminal", "green") +genModes_hl("NTerminal", "yellow") +genModes_hl("Replace", "orange") +genModes_hl("Confirm", "teal") +genModes_hl("Command", "green") +genModes_hl("Select", "blue") + +return M.theme diff --git a/lua/custom/statusline/themes/catppuccin.lua b/lua/custom/statusline/themes/catppuccin.lua new file mode 100644 index 00000000..161fd1d9 --- /dev/null +++ b/lua/custom/statusline/themes/catppuccin.lua @@ -0,0 +1,66 @@ +local M = {} + +M.base_30 = { + white = "#D9E0EE", + darker_black = "#191828", + black = "#1E1D2D", -- nvim bg + black2 = "#252434", + one_bg = "#2d2c3c", -- real bg of onedark + one_bg2 = "#363545", + one_bg3 = "#3e3d4d", + grey = "#474656", + grey_fg = "#4e4d5d", + grey_fg2 = "#555464", + light_grey = "#605f6f", + red = "#F38BA8", + baby_pink = "#ffa5c3", + pink = "#F5C2E7", + line = "#383747", -- for lines like vertsplit + green = "#ABE9B3", + vibrant_green = "#b6f4be", + nord_blue = "#8bc2f0", + blue = "#89B4FA", + yellow = "#FAE3B0", + sun = "#ffe9b6", + purple = "#d0a9e5", + dark_purple = "#c7a0dc", + teal = "#B5E8E0", + orange = "#F8BD96", + cyan = "#89DCEB", + statusline_bg = "#232232", + lightbg = "#2f2e3e", + pmenu_bg = "#ABE9B3", + folder_bg = "#89B4FA", + lavender = "#c7d1ff", +} + +M.base_16 = { + base00 = "#1E1D2D", + base01 = "#282737", + base02 = "#2f2e3e", + base03 = "#383747", + base04 = "#414050", + base05 = "#bfc6d4", + base06 = "#ccd3e1", + base07 = "#D9E0EE", + base08 = "#F38BA8", + base09 = "#F8BD96", + base0A = "#FAE3B0", + base0B = "#ABE9B3", + base0C = "#89DCEB", + base0D = "#89B4FA", + base0E = "#CBA6F7", + base0F = "#F38BA8", +} + +M.polish_hl = { + ["@variable"] = { fg = M.base_30.lavender }, + ["@property"] = { fg = M.base_30.teal }, + ["@variable.builtin"] = { fg = M.base_30.red }, +} + +M.type = "dark" + +M = require("base46").override_theme(M, "catppuccin") + +return M diff --git a/lua/custom/statusline/themes/chadracula.lua b/lua/custom/statusline/themes/chadracula.lua new file mode 100644 index 00000000..cb581214 --- /dev/null +++ b/lua/custom/statusline/themes/chadracula.lua @@ -0,0 +1,67 @@ +-- Credits to original theme https://github.com/dracula/vim +-- This is a modified version + +local M = {} + +M.base_30 = { + white = "#F8F8F2", + darker_black = "#222430", + black = "#282A36", -- nvim bg + black2 = "#2d303e", + one_bg = "#373844", -- real bg of onedark + one_bg2 = "#44475a", + one_bg3 = "#565761", + grey = "#5e5f69", + grey_fg = "#666771", + grey_fg2 = "#6e6f79", + light_grey = "#73747e", + red = "#ff7070", + baby_pink = "#ff86d3", + pink = "#FF79C6", + line = "#3c3d49", -- for lines like vertsplit + green = "#50fa7b", + vibrant_green = "#5dff88", + nord_blue = "#8b9bcd", + blue = "#a1b1e3", + yellow = "#F1FA8C", + sun = "#FFFFA5", + purple = "#BD93F9", + dark_purple = "#BD93F9", + teal = "#92a2d4", + orange = "#FFB86C", + cyan = "#8BE9FD", + statusline_bg = "#2d2f3b", + lightbg = "#41434f", + pmenu_bg = "#b389ef", + folder_bg = "#BD93F9", +} + +M.base_16 = { + base00 = "#282936", + base01 = "#3a3c4e", + base02 = "#4d4f68", + base03 = "#626483", + base04 = "#62d6e8", + base05 = "#e9e9f4", + base06 = "#f1f2f8", + base07 = "#f7f7fb", + base08 = "#c197fd", + base09 = "#FFB86C", + base0A = "#62d6e8", + base0B = "#F1FA8C", + base0C = "#8BE9FD", + base0D = "#50fa7b", + base0E = "#ff86d3", + base0F = "#F8F8F2", +} + +M.polish_hl = { + ["@function.builtin"] = { fg = M.base_30.cyan }, + ["@number"] = { fg = M.base_30.purple }, +} + +M.type = "dark" + +M = require("base46").override_theme(M, "chadracula") + +return M diff --git a/lua/custom/statusline/themes/github_dark.lua b/lua/custom/statusline/themes/github_dark.lua new file mode 100644 index 00000000..0f2855bf --- /dev/null +++ b/lua/custom/statusline/themes/github_dark.lua @@ -0,0 +1,85 @@ +-- credits to original theme for existing https://github.com/primer/github-vscode-theme +-- This is a modified version of it + +local M = {} + +M.base_30 = { + white = "#d3dbe3", + darker_black = "#1F2428", + black = "#24292E", -- nvim bg + black2 = "#2e3338", + one_bg = "#33383d", + one_bg2 = "#383d42", -- StatusBar (filename) + one_bg3 = "#42474c", + grey = "#4c5156", -- Line numbers (shouldn't be base01?) + grey_fg = "#565b60", -- Why this affects comments? + grey_fg2 = "#60656a", + light_grey = "#6a6f74", + red = "#ff7f8d", -- StatusBar (username) + baby_pink = "#ffa198", + pink = "#ec6cb9", + line = "#33383d", -- for lines like vertsplit + green = "#56d364", -- StatusBar (file percentage) + vibrant_green = "#85e89d", + nord_blue = "#58a6ff", -- Mode indicator + blue = "#79c0ff", + yellow = "#ffdf5d", + sun = "#ffea7f", + purple = "#d2a8ff", + dark_purple = "#bc8cff", + teal = "#39c5cf", + orange = "#ffab70", + cyan = "#56d4dd", + statusline_bg = "#2b3035", + lightbg = "#383d42", + pmenu_bg = "#58a6ff", -- Command bar suggestions + folder_bg = "#58a6ff", +} + +M.base_16 = { + base00 = "#24292E", -- Default bg + base01 = "#33383d", -- Lighter bg (status bar, line number, folding mks) + base02 = "#383d42", -- Selection bg + base03 = "#42474c", -- Comments, invisibles, line hl + base04 = "#4c5156", -- Dark fg (status bars) + base05 = "#c9d1d9", -- Default fg (caret, delimiters, Operators) + base06 = "#d3dbe3", -- Light fg (not often used) + base07 = "#dde5ed", -- Light bg (not often used) + base08 = "#B392E9", -- Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted + base09 = "#ffab70", -- Integers, Boolean, Constants, XML Attributes, Markup Link Url + base0A = "#ffdf5d", -- Classes, Markup Bold, Search Text Background + base0B = "#a5d6ff", -- Strings, Inherited Class, Markup Code, Diff Inserted + base0C = "#83caff", -- Support, regex, escape chars + base0D = "#6AB1F0", -- Function, methods, headings + base0E = "#ff7f8d", -- Keywords + base0F = "#85e89d", -- Deprecated, open/close embedded tags +} + +M.type = "dark" + +M.polish_hl = { + ["@punctuation.bracket"] = { + fg = M.base_30.orange, + }, + + ["@string"] = { + fg = M.base_30.white, + }, + + ["@field.key"] = { + fg = M.base_30.white, + }, + + ["@constructor"] = { + fg = M.base_30.vibrant_green, + bold = true, + }, + + ["@tag.attribute"] = { + link = "@method", + }, +} + +M = require("base46").override_theme(M, "github_dark") + +return M diff --git a/lua/custom/statusline/themes/gruvbox.lua b/lua/custom/statusline/themes/gruvbox.lua new file mode 100644 index 00000000..098e79b5 --- /dev/null +++ b/lua/custom/statusline/themes/gruvbox.lua @@ -0,0 +1,72 @@ +-- Credits to original https://github.com/morhetz/gruvbox +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#ebdbb2", + darker_black = "#232323", + black = "#282828", -- nvim bg + black2 = "#2e2e2e", + one_bg = "#353535", + one_bg2 = "#3f3f3f", + one_bg3 = "#444444", + grey = "#4b4b4b", + grey_fg = "#4e4e4e", + grey_fg2 = "#505050", + light_grey = "#656565", + red = "#fb4934", + baby_pink = "#cc241d", + pink = "#ff75a0", + line = "#36393a", -- for lines like vertsplit + green = "#b8bb26", + vibrant_green = "#a9b665", + nord_blue = "#83a598", + blue = "#458588", + yellow = "#d79921", + sun = "#fabd2f", + purple = "#b4bbc8", + dark_purple = "#d3869b", + teal = "#749689", + orange = "#e78a4e", + cyan = "#82b3a8", + statusline_bg = "#2c2c2c", + lightbg = "#3d3d3d", + pmenu_bg = "#83a598", + folder_bg = "#749689", +} + +M.base_16 = { + base00 = "#282828", + base01 = "#3c3836", + base02 = "#423e3c", + base03 = "#484442", + base04 = "#bdae93", + base05 = "#d5c4a1", + base06 = "#ebdbb2", + base07 = "#fbf1c7", + base08 = "#fb4934", + base09 = "#fe8019", + base0A = "#fabd2f", + base0B = "#b8bb26", + base0C = "#8ec07c", + base0D = "#83a598", + base0E = "#d3869b", + base0F = "#d65d0e", +} + +M.type = "dark" + +M = require("base46").override_theme(M, "gruvbox") + +M.polish_hl = { + Operator = { + fg = M.base_30.nord_blue, + }, + + ["@operator"] = { + fg = M.base_30.nord_blue, + }, +} + +return M diff --git a/lua/custom/statusline/themes/melange.lua b/lua/custom/statusline/themes/melange.lua new file mode 100644 index 00000000..138af805 --- /dev/null +++ b/lua/custom/statusline/themes/melange.lua @@ -0,0 +1,84 @@ +-- Thanks to https://github.com/savq/melange for existing +-- This is a modified version of it + +local M = {} + +M.base_30 = { + white = "#ECE1D7", + darker_black = "#241f1a", + black = "#2A2520", -- nvim bg + black2 = "#342f2a", + one_bg = "#39342f", + one_bg2 = "#433e39", + one_bg3 = "#4d4843", + grey = "#57524d", + grey_fg = "#605b56", + grey_fg2 = "#6b6661", + light_grey = "#75706b", + red = "#B65C60", + baby_pink = "#CE9BCB", + pink = "#B65C60", + line = "#39342f", -- for lines like vertsplit + green = "#86A3A3", + vibrant_green = "#99D59D", + nord_blue = "#88B3B2", + blue = "#9AACCE", + yellow = "#e3b865", + sun = "#EBC06D", + purple = "#c47fd5", + dark_purple = "#b570c6", + teal = "#697893", + orange = "#E49B5D", + firered = "#F17C64", + cyan = "#bbcdef", + statusline_bg = "#312c27", + lightbg = "#433e39", + pmenu_bg = "#86A3A3", + folder_bg = "#697893", +} + +M.base_16 = { + base00 = "#2A2520", + base01 = "#39342f", + base02 = "#433e39", + base03 = "#4d4843", + base04 = "#57524d", + base05 = "#ECE1D7", + base06 = "#e3d8ce", + base07 = "#d8cdc3", + base08 = "#ECE1D7", + base09 = "#86A3A3", + base0A = "#99D59D", + base0B = "#9AACCE", + base0C = "#EBC06D", + base0D = "#EBC06D", + base0E = "#E49B5D", + base0F = "#8E733F", +} + +M.type = "dark" + +M.polish_hl = { + ["@field"] = { fg = M.base_30.white }, + ["@field.key"] = { fg = M.base_30.white }, + + ["@function.macro"] = { + fg = M.base_30.vibrant_green, + }, + + Include = { + fg = M.base_30.vibrant_green, + }, + + Operator = { + fg = M.base_30.firered, + }, + + Boolean = { + fg = M.base_30.purple + } +} + +M = require("base46").override_theme(M, "melange") + +return M diff --git a/lua/custom/statusline/themes/nord.lua b/lua/custom/statusline/themes/nord.lua new file mode 100644 index 00000000..977e486a --- /dev/null +++ b/lua/custom/statusline/themes/nord.lua @@ -0,0 +1,66 @@ +-- Credits to original https://github.com/arcticicestudio/nord-vim +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#abb2bf", + darker_black = "#2a303c", + black = "#2E3440", -- nvim bg + black2 = "#343a46", + one_bg = "#373d49", + one_bg2 = "#464c58", + one_bg3 = "#494f5b", + grey = "#4b515d", + grey_fg = "#565c68", + grey_fg2 = "#606672", + light_grey = "#646a76", + red = "#BF616A", + baby_pink = "#de878f", + pink = "#d57780", + line = "#414753", -- for lines like vertsplit + green = "#A3BE8C", + vibrant_green = "#afca98", + blue = "#7797b7", + nord_blue = "#81A1C1", + yellow = "#EBCB8B", + sun = "#e1c181", + purple = "#B48EAD", + dark_purple = "#a983a2", + teal = "#6484a4", + orange = "#e39a83", + cyan = "#9aafe6", + statusline_bg = "#333945", + lightbg = "#3f4551", + pmenu_bg = "#A3BE8C", + folder_bg = "#7797b7", +} + +M.base_16 = { + base00 = "#2E3440", + base01 = "#3B4252", + base02 = "#434C5E", + base03 = "#4C566A", + base04 = "#D8DEE9", + base05 = "#E5E9F0", + base06 = "#ECEFF4", + base07 = "#8FBCBB", + base08 = "#88C0D0", + base09 = "#81A1C1", + base0A = "#88C0D0", + base0B = "#A3BE8C", + base0C = "#81A1C1", + base0D = "#81A1C1", + base0E = "#81A1C1", + base0F = "#B48EAD", +} + +M.polish_hl = { + ["@punctuation.bracket"] = { fg = M.base_30.white }, + ["@punctuation.delimiter"] = { fg = M.base_30.white }, +} +M.type = "dark" + +M = require("base46").override_theme(M, "nord") + +return M diff --git a/lua/custom/statusline/themes/onedark.lua b/lua/custom/statusline/themes/onedark.lua new file mode 100644 index 00000000..128e113f --- /dev/null +++ b/lua/custom/statusline/themes/onedark.lua @@ -0,0 +1,62 @@ +-- Credits to original https://github.com/one-dark +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#abb2bf", + darker_black = "#1b1f27", + black = "#1e222a", -- nvim bg + black2 = "#252931", + one_bg = "#282c34", -- real bg of onedark + one_bg2 = "#353b45", + one_bg3 = "#373b43", + grey = "#42464e", + grey_fg = "#565c64", + grey_fg2 = "#6f737b", + light_grey = "#6f737b", + red = "#e06c75", + baby_pink = "#DE8C92", + pink = "#ff75a0", + line = "#31353d", -- for lines like vertsplit + green = "#98c379", + vibrant_green = "#7eca9c", + nord_blue = "#81A1C1", + blue = "#61afef", + yellow = "#e7c787", + sun = "#EBCB8B", + purple = "#de98fd", + dark_purple = "#c882e7", + teal = "#519ABA", + orange = "#fca2aa", + cyan = "#a3b8ef", + statusline_bg = "#22262e", + lightbg = "#2d3139", + pmenu_bg = "#61afef", + folder_bg = "#61afef", +} + +M.base_16 = { + base00 = "#1e222a", + base01 = "#353b45", + base02 = "#3e4451", + base03 = "#545862", + base04 = "#565c64", + base05 = "#abb2bf", + base06 = "#b6bdca", + base07 = "#c8ccd4", + base08 = "#e06c75", + base09 = "#d19a66", + base0A = "#e5c07b", + base0B = "#98c379", + base0C = "#56b6c2", + base0D = "#61afef", + base0E = "#c678dd", + base0F = "#be5046", +} + +M.type = "dark" + +M = require("base46").override_theme(M, "onedark") + +return M diff --git a/lua/custom/statusline/themes/onenord.lua b/lua/custom/statusline/themes/onenord.lua new file mode 100644 index 00000000..24af9667 --- /dev/null +++ b/lua/custom/statusline/themes/onenord.lua @@ -0,0 +1,62 @@ +-- Credits to original https://github.com/arcticicestudio/nord-vim +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#D8DEE9", + darker_black = "#252b37", + black = "#2a303c", -- nvim bg + black2 = "#2f3541", + one_bg = "#343a46", + one_bg2 = "#3e4450", + one_bg3 = "#484e5a", + grey = "#4d535f", + grey_fg = "#545a66", + grey_fg2 = "#595f6b", + light_grey = "#606672", + red = "#d57780", + baby_pink = "#de878f", + pink = "#da838b", + line = "#414753", -- for lines like vertsplit + green = "#A3BE8C", + vibrant_green = "#afca98", + blue = "#7797b7", + nord_blue = "#81A1C1", + yellow = "#EBCB8B", + sun = "#e1c181", + purple = "#aab1be", + dark_purple = "#B48EAD", + teal = "#6484a4", + orange = "#e39a83", + cyan = "#9aafe6", + statusline_bg = "#333945", + lightbg = "#3f4551", + pmenu_bg = "#A3BE8C", + folder_bg = "#7797b7", +} + +M.base_16 = { + base00 = "#2a303c", + base01 = "#3B4252", + base02 = "#434C5E", + base03 = "#4C566A", + base04 = "#566074", + base05 = "#bfc5d0", + base06 = "#c7cdd8", + base07 = "#ced4df", + base08 = "#d57780", + base09 = "#e39a83", + base0A = "#EBCB8B", + base0B = "#A3BE8C", + base0C = "#97b7d7", + base0D = "#81A1C1", + base0E = "#B48EAD", + base0F = "#d57780", +} + +M.type = "dark" + +M = require("base46").override_theme(M, "onenord") + +return M diff --git a/lua/custom/statusline/themes/penumbra_dark.lua b/lua/custom/statusline/themes/penumbra_dark.lua new file mode 100644 index 00000000..c0b19a32 --- /dev/null +++ b/lua/custom/statusline/themes/penumbra_dark.lua @@ -0,0 +1,96 @@ +-- credits to original theme for existing https://github.com/nealmckee/penumbra +-- This is a modified version of it + +local M = {} + +M.base_30 = { + white = "#FFFDFB", + darker_black = "#2b2e33", + black = "#303338", + black2 = "#3a3d42", + one_bg = "#3d4045", + one_bg2 = "#484b50", + one_bg3 = "#515459", + grey = "#5c5f64", + grey_fg = "#676a6f", + grey_fg2 = "#72757a", + light_grey = "#7d8085", + red = "#CA7081", + baby_pink = "#E18163", + pink = "#D07EBA", + green = "#4EB67F", + vibrant_green = "#50B584", + nord_blue = "#6e8dd5", + blue = "#8C96EC", + yellow = "#c1ad4b", + sun = "#9CA748", + purple = "#ac78bd", + dark_purple = "#8C96EC", + orange = "#CE9042", + teal = "#00a6c8", + cyan = "#00B3C2", + line = "#3E4044", + statusline_bg = "#34373c", + lightbg = "#484b50", + pmenu_bg = "#4EB67F", + folder_bg = "#8C96EC", +} + +M.base_16 = { + base00 = "#303338", + base01 = "#3a3d42", + base02 = "#3d4045", + base03 = "#484b50", + base04 = "#515459", + base05 = "#CECECE", + base06 = "#F2E6D4", + base07 = "#FFF7ED", + base08 = "#999999", + base09 = "#BE85D1", + base0A = "#CA7081", + base0B = "#4ec093", + base0C = "#D68B47", + base0D = "#7A9BEC", + base0E = "#BE85D1", + base0F = "#A1A641", +} + +M.polish_hl = { + ["@field.key"] = { + fg = M.base_30.red, + }, + + Constant = { + fg = M.base_30.red, + }, + + ["@punctuation.bracket"] = { + fg = M.base_16.base08, + }, + + ["@constructor"] = { + fg = M.base_30.orange, + }, + + ["@parameter"] = { + fg = M.base_30.orange, + }, + + Operator = { + fg = M.base_30.cyan, + }, + + ["@tag.delimiter"] = { + fg = M.base_16.base08, + }, + + ["@tag.attribute"] = { + link = "@annotation", + }, +} + +M.type = "dark" + +M = require("base46").override_theme(M, "penumbra_dark") + +return M diff --git a/lua/custom/statusline/themes/solarized_dark.lua b/lua/custom/statusline/themes/solarized_dark.lua new file mode 100644 index 00000000..f696a4ed --- /dev/null +++ b/lua/custom/statusline/themes/solarized_dark.lua @@ -0,0 +1,62 @@ +-- Credits to original https://github.com/altercation/solarized +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#abb2bf", + darker_black = "#002530", + black = "#002b36", -- nvim bg + black2 = "#06313c", + one_bg = "#0a3540", -- real bg of onedark + one_bg2 = "#133e49", + one_bg3 = "#1b4651", + grey = "#28535e", + grey_fg = "#325d68", + grey_fg2 = "#3c6772", + light_grey = "#446f7a", + red = "#dc322f", + baby_pink = "#eb413e", + pink = "#d33682", + line = "#0f3a45", -- for lines like vertsplit + green = "#859900", + vibrant_green = "#b2c62d", + nord_blue = "#197ec5", + blue = "#268bd2", + yellow = "#b58900", + sun = "#c4980f", + purple = "#6c71c4", + dark_purple = "#5d62b5", + teal = "#519ABA", + orange = "#cb4b16", + cyan = "#2aa198", + statusline_bg = "#042f3a", + lightbg = "#113c47", + pmenu_bg = "#268bd2", + folder_bg = "#268bd2", +} + +M.base_16 = { + base00 = "#002b36", + base01 = "#06313c", + base02 = "#0a3540", + base03 = "#133e49", + base04 = "#1b4651", + base05 = "#93a1a1", + base06 = "#eee8d5", + base07 = "#fdf6e3", + base08 = "#dc322f", + base09 = "#cb4b16", + base0A = "#b58900", + base0B = "#859900", + base0C = "#2aa198", + base0D = "#268bd2", + base0E = "#6c71c4", + base0F = "#d33682", +} + +M.type = "dark" + +M = require("base46").override_theme(M, "solarized_dark") + +return M diff --git a/lua/custom/statusline/themes/tokyodark.lua b/lua/custom/statusline/themes/tokyodark.lua new file mode 100644 index 00000000..8e4e9b7e --- /dev/null +++ b/lua/custom/statusline/themes/tokyodark.lua @@ -0,0 +1,61 @@ +-- Credits to original https://github.com/tiagovla/tokyodark.nvim +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#A0A8CD", + darker_black = "#0c0d18", + black = "#11121D", -- nvim bg + black2 = "#171823", + one_bg = "#1d1e29", + one_bg2 = "#252631", + one_bg3 = "#252631", + grey = "#474853", + grey_fg = "#474853", + grey_fg2 = "#4e4f5a", + light_grey = "#545560", + red = "#ee6d85", + baby_pink = "#fd7c94", + pink = "#fe6D85", + line = "#252631", + green = "#98c379", + vibrant_green = "#95c561", + nord_blue = "#648ce1", + blue = "#7199ee", + yellow = "#d7a65f", + sun = "#dfae67", + purple = "#a485dd", + dark_purple = "#9071c9", + teal = "#519aba", + orange = "#f6955b", + cyan = "#38a89d", + statusline_bg = "#161722", + lightbg = "#2a2b36", + pmenu_bg = "#ee6d85", + folder_bg = "#7199ee", +} + +M.base_16 = { + base00 = "#11121d", + base01 = "#1b1c27", + base02 = "#21222d", + base03 = "#282934", + base04 = "#30313c", + base05 = "#abb2bf", + base06 = "#b2b9c6", + base07 = "#A0A8CD", + base08 = "#ee6d85", + base09 = "#7199ee", + base0A = "#7199ee", + base0B = "#dfae67", + base0C = "#a485dd", + base0D = "#95c561", + base0E = "#a485dd", + base0F = "#f3627a", +} + +M.type = "dark" + + +return M diff --git a/lua/custom/statusline/themes/tokyonight.lua b/lua/custom/statusline/themes/tokyonight.lua new file mode 100644 index 00000000..b3484dad --- /dev/null +++ b/lua/custom/statusline/themes/tokyonight.lua @@ -0,0 +1,70 @@ +-- Credits to original https://github.com/tiagovla/tokyonight.nvim +-- This is modified version of it + +local M = {} + +M.base_30 = { + white = "#c0caf5", + darker_black = "#16161e", + black = "#1a1b26", -- nvim bg + black2 = "#1f2336", + one_bg = "#24283b", + one_bg2 = "#414868", + one_bg3 = "#353b45", + grey = "#40486a", + grey_fg = "#565f89", + grey_fg2 = "#4f5779", + light_grey = "#545c7e", + red = "#f7768e", + baby_pink = "#DE8C92", + pink = "#ff75a0", + line = "#32333e", -- for lines like vertsplit + green = "#9ece6a", + vibrant_green = "#73daca", + nord_blue = "#80a8fd", + blue = "#7aa2f7", + yellow = "#e0af68", + sun = "#EBCB8B", + purple = "#bb9af7", + dark_purple = "#9d7cd8", + teal = "#1abc9c", + orange = "#ff9e64", + cyan = "#7dcfff", + statusline_bg = "#1d1e29", + lightbg = "#32333e", + pmenu_bg = "#7aa2f7", + folder_bg = "#7aa2f7", +} + +M.base_16 = { + base00 = "#1a1b26", + base01 = "#16161e", + base02 = "#2f3549", + base03 = "#444b6a", + base04 = "#787c99", + base05 = "#a9b1d6", + base06 = "#cbccd1", + base07 = "#d5d6db", + base08 = "#73daca", + base09 = "#ff9e64", + base0A = "#0db9d7", + base0B = "#9ece6a", + base0C = "#b4f9f8", + base0D = "#2ac3de", + base0E = "#bb9af7", + base0F = "#f7768e", +} + +M.polish_hl = { + ["@variable"] = { fg = M.base_16.base05 }, + ["@punctuation.bracket"] = { fg = M.base_30.purple }, + ["@method.call"] = { fg = M.base_30.red }, + ["@function.call"] = { fg = M.base_30.blue }, + ["@constant"] = { fg = M.base_30.orange }, + ["@parameter"] = { fg = M.base_30.orange }, +} + +M.type = "dark" + + +return M diff --git a/lua/custom/statusline/themes/tundra.lua b/lua/custom/statusline/themes/tundra.lua new file mode 100644 index 00000000..a9999ca3 --- /dev/null +++ b/lua/custom/statusline/themes/tundra.lua @@ -0,0 +1,104 @@ +-- Thanks to original theme for existing https://github.com/sam4llis/nvim-tundra +-- this is a modified version of it + +local M = {} + +M.base_30 = { + white = "#FFFFFF", + darker_black = "#0b1221", + black = "#111827", -- nvim bg + black2 = "#1a2130", + one_bg = "#1e2534", + one_bg2 = "#282f3e", + one_bg3 = "#323948", + grey = "#3e4554", + grey_fg = "#4a5160", + grey_fg2 = "#545b6a", + light_grey = "#5f6675", + red = "#FCA5A5", + baby_pink = "#FECDD3", + pink = "#ff8e8e", + line = "#282f3e", -- for lines like vertsplit + green = "#B5E8B0", + vibrant_green = "#B5E8B0", + nord_blue = "#9baaf2", + blue = "#A5B4FC", + yellow = "#E8D4B0", + sun = "#f2deba", + purple = "#BDB0E4", + dark_purple = "#b3a6da", + teal = "#719bd3", + orange = "#FBC19D", + cyan = "#BAE6FD", + statusline_bg = "#171e2d", + lightbg = "#282f3e", + pmenu_bg = "#FCA5A5", + folder_bg = "#A5B4FC", +} + +M.base_16 = { + base00 = "#111827", + base01 = "#1e2534", + base02 = "#282f3e", + base03 = "#323948", + base04 = "#3e4554", + base05 = "#F3F4F6", + base06 = "#E5E7EB", + base07 = "#D1D5DB", + base08 = "#DDD6FE", + base09 = "#E8D4B0", + base0A = "#FBC19D", + base0B = "#B5E8B0", + base0C = "#BAE6FD", + base0D = "#BAE6FD", + base0E = "#FCA5A5", + base0F = "#9CA3AF", +} + +M.type = "dark" + +M.polish_hl = { + Constant = { + fg = M.base_30.orange, + }, + + ["@constructor"] = { + fg = M.base_30.cyan, + }, + + ["@keyword"] = { + fg = M.base_30.red, + }, + + ["@method.call"] = { + fg = M.base_30.cyan, + }, + + ["@function.call"] = { + fg = M.base_30.cyan, + }, + + ["@function.builtin"] = { + fg = M.base_30.orange, + }, + + Conditional = { + fg = M.base_30.baby_pink, + }, + + Repeat = { + fg = M.base_30.baby_pink, + }, + + Type = { + fg = M.base_30.baby_pink, + }, + + Operator = { + fg = M.base_30.baby_pink, + }, +} + +M = require("base46").override_theme(M, "tundra") + +return M