diff options
Diffstat (limited to 'lua/lvim/core/builtins/breadcrumbs.lua')
-rw-r--r-- | lua/lvim/core/builtins/breadcrumbs.lua | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/lua/lvim/core/builtins/breadcrumbs.lua b/lua/lvim/core/builtins/breadcrumbs.lua deleted file mode 100644 index 2ed0937e..00000000 --- a/lua/lvim/core/builtins/breadcrumbs.lua +++ /dev/null @@ -1,233 +0,0 @@ -local M = {} - --- local Log = require "lvim.core.log" - -local icons = lvim.icons.kind - -M.config = function() - lvim.builtin.breadcrumbs = { - active = true, - winbar_filetype_exclude = { - "help", - "startify", - "dashboard", - "lazy", - "neo-tree", - "neogitstatus", - "NvimTree", - "Trouble", - "alpha", - "lir", - "Outline", - "spectre_panel", - "toggleterm", - "DressingSelect", - "Jaq", - "harpoon", - "dap-repl", - "dap-terminal", - "dapui_console", - "dapui_hover", - "lab", - "notify", - "noice", - "", - }, - options = { - icons = { - Array = icons.Array .. " ", - Boolean = icons.Boolean, - Class = icons.Class .. " ", - Color = icons.Color .. " ", - Constant = icons.Constant .. " ", - Constructor = icons.Constructor .. " ", - Enum = icons.Enum .. " ", - EnumMember = icons.EnumMember .. " ", - Event = icons.Event .. " ", - Field = icons.Field .. " ", - File = icons.File .. " ", - Folder = icons.Folder .. " ", - Function = icons.Function .. " ", - Interface = icons.Interface .. " ", - Key = icons.Key .. " ", - Keyword = icons.Keyword .. " ", - Method = icons.Method .. " ", - Module = icons.Module .. " ", - Namespace = icons.Namespace .. " ", - Null = icons.Null .. " ", - Number = icons.Number .. " ", - Object = icons.Object .. " ", - Operator = icons.Operator .. " ", - Package = icons.Package .. " ", - Property = icons.Property .. " ", - Reference = icons.Reference .. " ", - Snippet = icons.Snippet .. " ", - String = icons.String .. " ", - Struct = icons.Struct .. " ", - Text = icons.Text .. " ", - TypeParameter = icons.TypeParameter .. " ", - Unit = icons.Unit .. " ", - Value = icons.Value .. " ", - Variable = icons.Variable .. " ", - }, - highlight = true, - separator = " " .. lvim.icons.ui.ChevronRight .. " ", - depth_limit = 0, - depth_limit_indicator = "..", - }, - } -end - -M.setup = function() - local status_ok, navic = pcall(require, "nvim-navic") - if not status_ok then - return - end - - M.create_winbar() - navic.setup(lvim.builtin.breadcrumbs.options) - - return navic -end - -M.get_filename = function() - local filename = vim.fn.expand "%:t" - local extension = vim.fn.expand "%:e" - local f = require "lvim.utils.functions" - - if not f.isempty(filename) then - local file_icon, hl_group - local devicons_ok, devicons = pcall(require, "nvim-web-devicons") - if lvim.use_icons and devicons_ok then - file_icon, hl_group = devicons.get_icon(filename, extension, { default = true }) - - if f.isempty(file_icon) then - file_icon = lvim.icons.kind.File - end - else - file_icon = "" - hl_group = "Normal" - end - - local buf_ft = vim.bo.filetype - - if buf_ft == "dapui_breakpoints" then - file_icon = lvim.icons.ui.Bug - end - - if buf_ft == "dapui_stacks" then - file_icon = lvim.icons.ui.Stacks - end - - if buf_ft == "dapui_scopes" then - file_icon = lvim.icons.ui.Scopes - end - - if buf_ft == "dapui_watches" then - file_icon = lvim.icons.ui.Watches - end - - -- if buf_ft == "dapui_console" then - -- file_icon = lvim.icons.ui.DebugConsole - -- end - - local navic_text = vim.api.nvim_get_hl_by_name("Normal", true) - vim.api.nvim_set_hl(0, "Winbar", { fg = navic_text.foreground }) - - return " " .. "%#" .. hl_group .. "#" .. file_icon .. "%*" .. " " .. "%#Winbar#" .. filename .. "%*" - end -end - -local get_gps = function() - local status_gps_ok, gps = pcall(require, "nvim-navic") - if not status_gps_ok then - return "" - end - - local status_ok, gps_location = pcall(gps.get_location, {}) - if not status_ok then - return "" - end - - if not gps.is_available() or gps_location == "error" then - return "" - end - - if not require("lvim.utils.functions").isempty(gps_location) then - return "%#NavicSeparator#" .. lvim.icons.ui.ChevronRight .. "%* " .. gps_location - else - return "" - end -end - -local excludes = function() - return vim.tbl_contains(lvim.builtin.breadcrumbs.winbar_filetype_exclude or {}, vim.bo.filetype) -end - -M.get_winbar = function() - if excludes() then - return - end - local f = require "lvim.utils.functions" - local value = M.get_filename() - - local gps_added = false - if not f.isempty(value) then - local gps_value = get_gps() - value = value .. " " .. gps_value - if not f.isempty(gps_value) then - gps_added = true - end - end - - if not f.isempty(value) and f.get_buf_option "mod" then - -- TODO: replace with circle - local mod = "%#LspCodeLens#" .. lvim.icons.ui.Circle .. "%*" - if gps_added then - value = value .. " " .. mod - else - value = value .. mod - end - end - - local num_tabs = #vim.api.nvim_list_tabpages() - - if num_tabs > 1 and not f.isempty(value) then - local tabpage_number = tostring(vim.api.nvim_tabpage_get_number(0)) - value = value .. "%=" .. tabpage_number .. "/" .. tostring(num_tabs) - end - - local status_ok, _ = pcall(vim.api.nvim_set_option_value, "winbar", value, { scope = "local" }) - if not status_ok then - return - end -end - -M.create_winbar = function() - vim.api.nvim_create_augroup("_winbar", {}) - if vim.fn.has "nvim-0.8" == 1 then - vim.api.nvim_create_autocmd({ - "CursorHoldI", - "CursorHold", - "BufWinEnter", - "BufFilePost", - "InsertEnter", - "BufWritePost", - "TabClosed", - "TabEnter", - }, { - group = "_winbar", - callback = function() - if lvim.builtin.breadcrumbs.active then - local status_ok, _ = pcall(vim.api.nvim_buf_get_var, 0, "lsp_floating_window") - if not status_ok then - -- TODO: - M.get_winbar() - end - end - end, - }) - end -end - -return M |