diff --git a/lua/custom/default.lua b/lua/custom/default.lua index b0f7703..090b8c8 100644 --- a/lua/custom/default.lua +++ b/lua/custom/default.lua @@ -26,6 +26,10 @@ vim.g.pcode_colorscheme = "dracula" -- nightfox -- 0 =off 1= on vim.g.pcode_transparent_mode = 0 +-- rounded +-- square +-- default +vim.g.pcode_lualinetheme = "rounded" -- 0 disable progress -- 1 lualine lsp progress -- 2 fidget progress @@ -38,8 +42,8 @@ vim.g.pcode_format_on_save = 1 -- untuk referesi support language kunjungi link dibawah -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md vim.g.pcode_lsp_installer = { - -- "yamlls", - -- tambahkan di bawah sini setelah melakukan :masoninstall + -- "yamlls", + -- tambahkan di bawah sini setelah melakukan :masoninstall } -- use for lsp diagnostics virtual text @@ -51,49 +55,49 @@ vim.g.pcode_lspghost_text = false -- untuk referesi support language kunjungi link dibawah -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md vim.g.pcode_mason_ensure_installed = { -- sebelumnya register_lsp - -- "yamlls", - -- "intelephense", - -- "marksman", - -- "csharp_ls", - -- "clangd", - -- "dartls", - -- "kotlin_language_server", - -- tambahkan di bawah sini setelah melakukan :masoninstall + -- "yamlls", + -- "intelephense", + -- "marksman", + -- "csharp_ls", + -- "clangd", + -- "dartls", + -- "kotlin_language_server", + -- tambahkan di bawah sini setelah melakukan :masoninstall } vim.g.pcode_unregister_lsp = { - "jdtls", -- tambahkan di bawah ini + "jdtls", -- tambahkan di bawah ini } -- https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md vim.g.pcode_null_ls_ensure_installed = { - "stylua", + "stylua", } -- dap instal hanya support linux dan mac -- https://github.com/jay-babu/mason-nvim-dap.nvim/blob/main/lua/mason-nvim-dap/mappings/source.lua -- atau gunakan :MasonInstall vim.g.pcode_dap_ensure_installed = { - -- "python", + -- "python", } -- https://github.com/folke/which-key.nvim vim.g.pcode_whichkey = { - -- contoh penambahan - ["k"] = { - name = "Example", - k = { 'lua print("Testing")', "Example" }, - }, - ["r"] = { - name = "Run", - j = { "Jaq float", "Run With Jaq" }, - }, + -- contoh penambahan + ["k"] = { + name = "Example", + k = { 'lua print("Testing")', "Example" }, + }, + ["r"] = { + name = "Run", + j = { "Jaq float", "Run With Jaq" }, + }, } -- https://github.com/CRAG666/code_runner.nvim -- ready default java, python, typescript, javascript, rust, cpp, scss vim.g.pcode_coderunner = { - go = "go run $fileName", - html = "live-server $dir/$fileName", + go = "go run $fileName", + html = "live-server $dir/$fileName", } -- config for optional cmp diff --git a/lua/plugins/bufferline.lua b/lua/plugins/bufferline.lua index eba0f24..8f225c6 100644 --- a/lua/plugins/bufferline.lua +++ b/lua/plugins/bufferline.lua @@ -18,7 +18,7 @@ return { end local function diagnostics_indicator(num, _, diagnostics, _) - local result = {} + local result local symbols = { error = icons.diagnostics.Error, warning = icons.diagnostics.Warning, diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua index cbe0507..8899ce5 100644 --- a/lua/plugins/lualine.lua +++ b/lua/plugins/lualine.lua @@ -4,18 +4,6 @@ return { event = { "InsertEnter", "BufRead", "BufNewFile" }, config = function() local component = require "user.utils.lualine_component" - local treesitter = component.treesitter - local lsp_info = component.lsp_info - local diagnostics = component.diagnostics - local diff = component.diff - local spaces = component.spaces - local mode = component.mode - local get_branch = component.get_branch - local lsp_progress = {} - local data_ok, lspprogress = pcall(require, "lsp-progress") - if data_ok then - lsp_progress = lspprogress.progress - end local colors = component.colors -- check config for theme @@ -55,50 +43,22 @@ return { bubbles_theme = vim.fn.fnamemodify("auto", ":t") end + local gettheme = require "user.utils.lualine_template" + local theme_option = vim.g.pcode_lualinetheme or "rounded" + local theme = gettheme.rounded(bubbles_theme) + if theme_option == "rounded" then + theme = gettheme.rounded(bubbles_theme) + elseif theme_option == "square" then + theme = gettheme.square(bubbles_theme) + elseif theme_option == "default" then + theme = {} + end require("lualine").setup { - options = { - theme = bubbles_theme, - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { - "TelescopePrompt", - "packer", - "alpha", - "dashboard", - "NvimTree", - "Outline", - "DressingInput", - "toggleterm", - "lazy", - "mason", - "neo-tree", - "startuptime", - "crunner", - }, - always_divide_middle = true, - }, - sections = { - lualine_a = { - mode, - }, - lualine_b = { get_branch }, - lualine_c = { diff, lsp_info, lsp_progress }, - lualine_x = { diagnostics, spaces, treesitter, "filetype" }, - lualine_y = { "progress" }, - lualine_z = { - { "location", separator = { right = " " }, padding = 1 }, - }, - }, - inactive_sections = { - lualine_a = { "filename" }, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = { "location" }, - }, - tabline = {}, - extensions = {}, + options = theme.options, + sections = theme.sections, + inactive_sections = theme.inactive_sections, + tabline = theme.tabline, + extensions = theme.extensions, } end, }, diff --git a/lua/user/utils/lualine_component.lua b/lua/user/utils/lualine_component.lua index 52775ab..9fe3cb1 100644 --- a/lua/user/utils/lualine_component.lua +++ b/lua/user/utils/lualine_component.lua @@ -1,193 +1,202 @@ local hide_in_width = function() - return vim.fn.winwidth(0) > 75 + return vim.fn.winwidth(0) > 75 end -local icons = vim.g.pcode_icons -local formatter = require("user.utils.formatter") -local linter = require("user.utils.linter") +local icons = require "user.icons" +local formatter = require "user.utils.formatter" +local linter = require "user.utils.linter" local getLeftSubstring = function(word, length) - if #word > length then - return string.sub(word, 1, length) .. "..." - else - return word - end + if #word > length then + return string.sub(word, 1, length) .. "..." + else + return word + end end local unique_list = function(list) - local seen = {} - local result = {} + local seen = {} + local result = {} - for _, val in ipairs(list) do - if not seen[val] then - table.insert(result, val) - seen[val] = true - end - end + for _, val in ipairs(list) do + if not seen[val] then + table.insert(result, val) + seen[val] = true + end + end - return result + return result end return { - -- treesitter info - treesitter = { - function() - return icons.ui.Paint .. " TS" - end, - color = function() - local buf = vim.api.nvim_get_current_buf() - local ts = vim.treesitter.highlighter.active[buf] - return { fg = ts and not vim.tbl_isempty(ts) and "#50fa7b" or "#FF5555" } - end, - cond = hide_in_width, - }, + -- treesitter info + treesitter = { + function() + return icons.ui.Paint .. " TS" + end, + color = function() + local buf = vim.api.nvim_get_current_buf() + local ts = vim.treesitter.highlighter.active[buf] + return { fg = ts and not vim.tbl_isempty(ts) and "#50fa7b" or "#FF5555" } + end, + cond = hide_in_width, + }, - -- Lsp info - lsp_info = { - function() - local msg = "LSP Inactive" - local buf_ft = vim.bo.filetype - -- start register - local buf_clients = {} - buf_clients = vim.lsp.get_clients({ bufnr = 0 }) - local buf_client_names = {} - if next(buf_clients) == nil then - -- TODO: clean up this if statement - if type(msg) == "boolean" or #msg == 0 then - return "LSP Inactive" - end - return msg - end - -- add client - for _, client in pairs(buf_clients) do - if client.name ~= "null-ls" and client.name ~= "copilot" then - table.insert(buf_client_names, client.name) - end - end + -- Lsp info + lsp_info = { + function() + local msg = "LSP Inactive" + local buf_ft = vim.bo.filetype + -- start register + local buf_clients = {} + buf_clients = vim.lsp.get_clients { bufnr = 0 } + local buf_client_names = {} + if next(buf_clients) == nil then + -- TODO: clean up this if statement + if type(msg) == "boolean" or #msg == 0 then + return "LSP Inactive" + end + return msg + end + -- add client + for _, client in pairs(buf_clients) do + if client.name ~= "null-ls" and client.name ~= "copilot" then + table.insert(buf_client_names, client.name) + end + end - -- add formatter - local supported_formatters = formatter.list_registered(buf_ft) - vim.list_extend(buf_client_names, supported_formatters) + -- add formatter + local supported_formatters = formatter.list_registered(buf_ft) + vim.list_extend(buf_client_names, supported_formatters) - -- add linter - local supported_linters = linter.linter_list_registered(buf_ft) - vim.list_extend(buf_client_names, supported_linters) + -- add linter + local supported_linters = linter.linter_list_registered(buf_ft) + vim.list_extend(buf_client_names, supported_linters) - -- decomple - -- local unique_client_names = vim.fn.uniq(buf_client_names) - local unique_client_names = unique_list(buf_client_names) - msg = table.concat(unique_client_names, ", ") - return msg - end, - icon = icons.ui.Gear .. "", - padding = 1, - cond = hide_in_width, - }, + -- decomple + -- local unique_client_names = vim.fn.uniq(buf_client_names) + local unique_client_names = unique_list(buf_client_names) + msg = table.concat(unique_client_names, ", ") + return msg + end, + icon = icons.ui.Gear .. "", + padding = 1, + cond = hide_in_width, + }, - -- diagnostics info - diagnostics = { - "diagnostics", - sources = { "nvim_diagnostic" }, - sections = { "error", "warn" }, - symbols = { - error = icons.diagnostics.BoldError .. " ", - warn = icons.diagnostics.BoldWarning .. " ", - }, - colored = true, - update_in_insert = false, - always_visible = false, - }, + -- diagnostics info + diagnostics = { + "diagnostics", + sources = { "nvim_diagnostic" }, + sections = { "error", "warn" }, + symbols = { + error = icons.diagnostics.BoldError .. " ", + warn = icons.diagnostics.BoldWarning .. " ", + }, + colored = true, + update_in_insert = false, + always_visible = false, + }, - -- git info - diff = { - "diff", - colored = true, - symbols = { - added = icons.git.LineAdded .. " ", - modified = icons.git.LineModified .. " ", - removed = icons.git.LineRemoved .. " ", - }, - cond = hide_in_width, - }, + -- git info + diff = { + "diff", + colored = true, + symbols = { + added = icons.git.LineAdded .. " ", + modified = icons.git.LineModified .. " ", + removed = icons.git.LineRemoved .. " ", + }, + cond = hide_in_width, + }, - -- tab info - spaces = { - function() - -- local shiftwidth = vim.api.nvim_buf_get_option(0, "shiftwidth") - -- local shiftwidth = vim.api.nvim_get_option_value("shiftwidth", { scope = "buf", bufnr = 0 }) - local shiftwidth = vim.fn.shiftwidth() - return icons.ui.Tab .. " " .. shiftwidth - end, - padding = 1, - }, + -- tab info + spaces = { + function() + -- local shiftwidth = vim.api.nvim_buf_get_option(0, "shiftwidth") + -- local shiftwidth = vim.api.nvim_get_option_value("shiftwidth", { scope = "buf", bufnr = 0 }) + local shiftwidth = vim.fn.shiftwidth() + return icons.ui.Tab .. " " .. shiftwidth + end, + padding = 1, + }, - -- nvim mode info - mode = { - "mode", - padding = 1, - separator = { left = " " }, - fmt = function(str) - return icons.ui.Neovim .. " " .. str - end, - }, + -- nvim mode info + mode_rounded = { + "mode", + padding = 1, + separator = { left = " " }, + fmt = function(str) + return icons.ui.Neovim .. " " .. str + end, + }, - -- git branch info - get_branch = function() - if vim.b.gitsigns_head ~= nil then - return icons.git.Branch2 .. " " .. getLeftSubstring(vim.b.gitsigns_head, 6) - else - return icons.git.Branch2 .. vim.fn.fnamemodify("", ":t") - end - end, + mode_square = { + "mode", + padding = 1, + separator = { left = "" }, + fmt = function(str) + return icons.ui.Neovim .. " " .. str + end, + }, - -- default colorscheme - colors = { - blue = "#50fa7b", - cyan = "#f1fa8c", - black = "#1a1b26", - black_transparant = "none", - white = "#c6c6c6", - red = "#ff757f", - skyblue_1 = "#bd93f9", - grey = "#5f6a8e", - yellow = "#ffb86c", - fg_gutter = "#3b4261", - green1 = "#bd93f9", - }, + -- git branch info + get_branch = function() + if vim.b.gitsigns_head ~= nil then + return icons.git.Branch2 .. " " .. getLeftSubstring(vim.b.gitsigns_head, 6) + else + return icons.git.Branch2 .. vim.fn.fnamemodify("", ":t") + end + end, - -- default lualine theme - bubbles_theme = function(colors) - return { - normal = { - a = { fg = colors.black, bg = colors.skyblue_1 }, - b = { fg = colors.white, bg = colors.grey }, - c = { fg = colors.white, bg = colors.black_transparant }, - }, + -- default colorscheme + colors = { + blue = "#50fa7b", + cyan = "#f1fa8c", + black = "#1a1b26", + black_transparant = "none", + white = "#c6c6c6", + red = "#ff757f", + skyblue_1 = "#bd93f9", + grey = "#5f6a8e", + yellow = "#ffb86c", + fg_gutter = "#3b4261", + green1 = "#bd93f9", + }, - insert = { - a = { fg = colors.black, bg = colors.blue }, - b = { fg = colors.blue, bg = colors.grey }, - }, - visual = { - a = { fg = colors.black, bg = colors.cyan }, - b = { fg = colors.cyan, bg = colors.grey }, - }, - replace = { - a = { bg = colors.red, fg = colors.black }, - b = { bg = colors.fg_gutter, fg = colors.red }, - }, - command = { - a = { bg = colors.yellow, fg = colors.black }, - b = { bg = colors.fg_gutter, fg = colors.yellow }, - }, - terminal = { - a = { bg = colors.green1, fg = colors.black }, - b = { bg = colors.fg_gutter, fg = colors.green1 }, - }, - inactive = { - a = { fg = colors.white, bg = colors.black_transparant }, - b = { fg = colors.white, bg = colors.black_transparant }, - c = { fg = colors.black, bg = colors.black_transparant }, - }, - } - end, + -- default lualine theme + bubbles_theme = function(colors) + return { + normal = { + a = { fg = colors.black, bg = colors.skyblue_1 }, + b = { fg = colors.white, bg = colors.grey }, + c = { fg = colors.white, bg = colors.black_transparant }, + }, + + insert = { + a = { fg = colors.black, bg = colors.blue }, + b = { fg = colors.blue, bg = colors.grey }, + }, + visual = { + a = { fg = colors.black, bg = colors.cyan }, + b = { fg = colors.cyan, bg = colors.grey }, + }, + replace = { + a = { bg = colors.red, fg = colors.black }, + b = { bg = colors.fg_gutter, fg = colors.red }, + }, + command = { + a = { bg = colors.yellow, fg = colors.black }, + b = { bg = colors.fg_gutter, fg = colors.yellow }, + }, + terminal = { + a = { bg = colors.green1, fg = colors.black }, + b = { bg = colors.fg_gutter, fg = colors.green1 }, + }, + inactive = { + a = { fg = colors.white, bg = colors.black_transparant }, + b = { fg = colors.white, bg = colors.black_transparant }, + c = { fg = colors.black, bg = colors.black_transparant }, + }, + } + end, } diff --git a/lua/user/utils/lualine_template.lua b/lua/user/utils/lualine_template.lua new file mode 100644 index 0000000..ace23b7 --- /dev/null +++ b/lua/user/utils/lualine_template.lua @@ -0,0 +1,102 @@ +local M = {} + +local component = require "user.utils.lualine_component" +local treesitter = component.treesitter +local lsp_info = component.lsp_info +local diagnostics = component.diagnostics +local diff = component.diff +local spaces = component.spaces +local get_branch = component.get_branch +local lsp_progress = {} +local data_ok, lspprogress = pcall(require, "lsp-progress") +if data_ok then + lsp_progress = lspprogress.progress +end + +M.filetype = { + "TelescopePrompt", + "packer", + "alpha", + "dashboard", + "NvimTree", + "Outline", + "DressingInput", + "toggleterm", + "lazy", + "mason", + "neo-tree", + "startuptime", + "crunner", +} + +M.rounded = function(colorscheme) + local mode = component.mode_rounded + return { + options = { + theme = colorscheme, + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + disabled_filetypes = M.filetype, + always_divide_middle = true, + }, + sections = { + lualine_a = { + mode, + }, + lualine_b = { get_branch }, + lualine_c = { diff, lsp_info, lsp_progress }, + lualine_x = { diagnostics, spaces, treesitter, "filetype" }, + lualine_y = { "progress" }, + lualine_z = { + { "location", separator = { right = " " }, padding = 1 }, + }, + }, + inactive_sections = { + lualine_a = { "filename" }, + lualine_b = {}, + lualine_c = {}, + lualine_x = {}, + lualine_y = {}, + lualine_z = { "location" }, + }, + tabline = {}, + extensions = {}, + } +end + +M.square = function(colorscheme) + local mode = component.mode_square + return { + options = { + theme = colorscheme, + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + disabled_filetypes = M.filetype, + always_divide_middle = true, + }, + sections = { + lualine_a = { + mode, + }, + lualine_b = { get_branch }, + lualine_c = { diff, lsp_info, lsp_progress }, + lualine_x = { diagnostics, spaces, treesitter, "filetype" }, + lualine_y = { "progress" }, + lualine_z = { + { "location", separator = { right = "" }, padding = 1 }, + }, + }, + inactive_sections = { + lualine_a = { "filename" }, + lualine_b = {}, + lualine_c = {}, + lualine_x = {}, + lualine_y = {}, + lualine_z = { "location" }, + }, + tabline = {}, + extensions = {}, + } +end + +return M