-- Simple winbar/statusline plugin that shows your current code context -- https://github.com/SmiteshP/nvim-navic vim.api.nvim_set_hl(0, "NavicIconsFile", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsModule", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsNamespace", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsPackage", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsClass", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsMethod", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsProperty", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsField", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsConstructor", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsEnum", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsInterface", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsFunction", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsVariable", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsConstant", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsString", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsNumber", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsBoolean", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsArray", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsObject", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsKey", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsNull", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsEnumMember", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsStruct", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsEvent", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsOperator", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicIconsTypeParameter", { default = true, bg = "#000000", fg = "#977D9E" }) vim.api.nvim_set_hl(0, "NavicText", { default = true, bg = "#000000", fg = "#ffffff" }) vim.api.nvim_set_hl(0, "NavicSeparator", { default = true, bg = "#000000", fg = "#073642" }) local attach_keymaps = function(client, bufnr) vim.keymap.set( "n", "lgD", vim.lsp.buf.declaration, { buffer = bufnr, noremap = true, silent = true, desc = "Go to declaration" } ) vim.keymap.set( "n", "lgd", vim.lsp.buf.definition, { buffer = bufnr, noremap = true, silent = true, desc = "Go to definition" } ) vim.keymap.set( "n", "lgt", vim.lsp.buf.type_definition, { buffer = bufnr, noremap = true, silent = true, desc = "Go to type" } ) vim.keymap.set( "n", "lgi", vim.lsp.buf.implementation, { buffer = bufnr, noremap = true, silent = true, desc = "List implementations" } ) vim.keymap.set( "n", "lgr", vim.lsp.buf.references, { buffer = bufnr, noremap = true, silent = true, desc = "List references" } ) vim.keymap.set( "n", "lgn", vim.diagnostic.goto_next, { buffer = bufnr, noremap = true, silent = true, desc = "Go to next diagnostic" } ) vim.keymap.set( "n", "lgp", vim.diagnostic.goto_prev, { buffer = bufnr, noremap = true, silent = true, desc = "Go to previous diagnostic" } ) vim.keymap.set( "n", "le", vim.diagnostic.open_float, { buffer = bufnr, noremap = true, silent = true, desc = "Open diagnostic float" } ) vim.keymap.set( "n", "lH", vim.lsp.buf.document_highlight, { buffer = bufnr, noremap = true, silent = true, desc = "Document highlight" } ) vim.keymap.set( "n", "lS", vim.lsp.buf.document_symbol, { buffer = bufnr, noremap = true, silent = true, desc = "List document symbols" } ) vim.keymap.set( "n", "lwa", vim.lsp.buf.add_workspace_folder, { buffer = bufnr, noremap = true, silent = true, desc = "Add workspace folder" } ) vim.keymap.set( "n", "lwr", vim.lsp.buf.remove_workspace_folder, { buffer = bufnr, noremap = true, silent = true, desc = "Remove workspace folder" } ) vim.keymap.set("n", "lwl", function() vim.notify(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, { buffer = bufnr, noremap = true, silent = true, desc = "List workspace folders" }) vim.keymap.set( "n", "lws", vim.lsp.buf.workspace_symbol, { buffer = bufnr, noremap = true, silent = true, desc = "List workspace symbols" } ) vim.keymap.set( "n", "lh", vim.lsp.buf.hover, { buffer = bufnr, noremap = true, silent = true, desc = "Trigger hover" } ) vim.keymap.set( "n", "ls", vim.lsp.buf.signature_help, { buffer = bufnr, noremap = true, silent = true, desc = "Signature help" } ) vim.keymap.set( "n", "ln", vim.lsp.buf.rename, { buffer = bufnr, noremap = true, silent = true, desc = "Rename symbol" } ) vim.keymap.set( "n", "la", vim.lsp.buf.code_action, { buffer = bufnr, noremap = true, silent = true, desc = "Code action" } ) vim.keymap.set( "n", "lf", vim.lsp.buf.format, { buffer = bufnr, noremap = true, silent = true, desc = "Format" } ) vim.keymap.set("n", "ltf", function() vim.b.disableFormatSave = not vim.b.disableFormatSave end, { buffer = bufnr, noremap = true, silent = true, desc = "Toggle format on save" }) end return { "nvim-navic", lazy = false, after = function() local navic = require("nvim-navic") navic.setup({ icons = { File = "󰈙 ", Module = " ", Namespace = "󰌗 ", Package = " ", Class = "󰌗 ", Method = "󰆧 ", Property = " ", Field = " ", Constructor = " ", Enum = "󰕘", Interface = "󰕘", Function = "󰊕 ", Variable = "󰆧 ", Constant = "󰏿 ", String = "󰀬 ", Number = "󰎠 ", Boolean = "◩ ", Array = "󰅪 ", Object = "󰅩 ", Key = "󰌋 ", Null = "󰟢 ", EnumMember = " ", Struct = "󰌗 ", Event = " ", Operator = "󰆕 ", TypeParameter = "󰊄 ", }, lsp = { auto_attach = false, preference = nil, }, highlight = true, separator = " > ", depth_limit = 0, depth_limit_indicator = "..", safe_output = true, lazy_update_context = true, click = true, format_text = function(text) return text end, }) local default_on_attach = function(client, bufnr) attach_keymaps(client, bufnr) -- let navic attach to buffers if client.server_capabilities.documentSymbolProvider then navic.attach(client, bufnr) end end vim.api.nvim_create_autocmd("LspAttach", { callback = function(event) local bufnr = event.buf local client = vim.lsp.get_client_by_id(event.data.client_id) default_on_attach(client, bufnr) end, desc = "Activate navic on LSP attach", group = vim.api.nvim_create_augroup("navic-lsp-attach", { clear = true }), }) -- Always show the winbar to avoid annoying scroll -- when showing nvim-navic and when not. vim.opt.winbar = " " end, }