diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-07-06 16:08:01 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-07-06 16:08:01 -0500 |
commit | 1ca41ab99d3df956a901834b8765b9d8ea7fd863 (patch) | |
tree | de6beb1c78d0dbbda4fdfa346f023d214db63372 /nvim/.config | |
parent | 5ea26bce5c3689c6f5ab42798782c205914d92b8 (diff) |
feat(nvim): improve statusline with location and lsp progress
Diffstat (limited to 'nvim/.config')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua | 4 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/init.lua | 7 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/symbol.lua | 9 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/utils.lua | 7 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins.lua | 17 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua | 13 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua | 15 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/lspstatus.lua | 13 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua | 90 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/nvim-navic.lua | 15 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils.lua | 2 |
11 files changed, 120 insertions, 72 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua index ada5afc..3d7d403 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua @@ -8,9 +8,9 @@ M.setup = function() end if vim.tbl_islist(result) then - vim.lsp.util.jump_to_location(result[1], "utf-8") + vim.lsp.util.jump_to_location(result[1], "utf-8", true) else - vim.lsp.util.jump_to_location(result, "utf-8") + vim.lsp.util.jump_to_location(result, "utf-8", true) end end diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua index 48332e4..a1a12c3 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua @@ -24,9 +24,10 @@ M.on_attach = function(client, bufnr) nmap_goto("i", vim.lsp.buf.implementation, { desc = "Implementation" }) nmap_goto("r", vim.lsp.buf.references, { desc = "References" }) - -- disabled in favor of https://github.com/nvim-treesitter/nvim-treesitter-refactor#highlight-definitions + -- disabled in favor of https://github.com/nvim-treesitter/nvim-treesitter-refactor#highlight-definitions -- require("tobyvin.lsp.highlighting").on_attach(client, bufnr) require("tobyvin.lsp.formatting").on_attach(client, bufnr) + require("tobyvin.lsp.symbol").on_attach(client, bufnr) require("lsp_signature").on_attach() end @@ -35,10 +36,10 @@ M.config = function(config) capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) - return vim.tbl_deep_extend("force", { + return vim.tbl_deep_extend("keep", config or {}, { capabilities = capabilities, on_attach = M.on_attach, - }, config or {}) + }) end M.setup = function() diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/symbol.lua b/nvim/.config/nvim/lua/tobyvin/lsp/symbol.lua new file mode 100644 index 0000000..6eabea7 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/lsp/symbol.lua @@ -0,0 +1,9 @@ +local M = {} + +M.on_attach = function(client, bufnr) + if client.server_capabilities.documentSymbolProvider then + require("nvim-navic").attach(client, bufnr) + end +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/utils.lua b/nvim/.config/nvim/lua/tobyvin/lsp/utils.lua index 8b5f292..c56d657 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/utils.lua @@ -1,7 +1,6 @@ -local M = { - client_notifs = {}, - spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }, -} +local M = {} + +M.spinner_frames = { "⣷", "⣯", "⣟", "⡿", "⢿", "⣻", "⣽", "⣾" } M.get_notif_data = function(client_id, token) if not M.client_notifs[client_id] then diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index 7b11074..ee49319 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -48,6 +48,7 @@ M.plugins = function(use) requires = { "williamboman/nvim-lsp-installer", "ray-x/lsp_signature.nvim", + "SmiteshP/nvim-navic", }, config = [[require("tobyvin.plugins.lspconfig").setup()]], }) @@ -93,7 +94,6 @@ M.plugins = function(use) use({ "hrsh7th/nvim-cmp", requires = { - { "onsails/lspkind-nvim", config = [[require("tobyvin.plugins.lspkind")]] }, "ray-x/lsp_signature.nvim", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lua", @@ -106,6 +106,8 @@ M.plugins = function(use) config = [[require("tobyvin.plugins.cmp")]], }) + use({ "onsails/lspkind-nvim", config = [[require("tobyvin.plugins.lspkind").setup()]] }) + use({ "simrat39/symbols-outline.nvim", config = [[require("symbols-outline").setup()]] }) use({ @@ -185,9 +187,17 @@ M.plugins = function(use) use({ "nvim-lualine/lualine.nvim", requires = { - { "kyazdani42/nvim-web-devicons" }, + "kyazdani42/nvim-web-devicons", + "arkav/lualine-lsp-progress", + "SmiteshP/nvim-navic", }, - config = [[require("tobyvin.plugins.lualine")]], + config = [[require("tobyvin.plugins.lualine").setup()]], + }) + + use({ + "SmiteshP/nvim-navic", + requires = "onsails/lspkind-nvim", + config = [[require("tobyvin.plugins.lualine").setup()]], }) use({ @@ -319,6 +329,7 @@ M.setup = function() nmap("c", packer.compile, { desc = "Compile" }) nmap("C", packer.clean, { desc = "Clean" }) nmap("i", packer.install, { desc = "Install" }) + nmap("p", packer.profile_output, { desc = "Profile" }) nmap("s", packer.sync, { desc = "Sync" }) nmap("S", packer.status, { desc = "Status" }) nmap("u", packer.update, { desc = "Update" }) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua b/nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua index c998df3..5c353eb 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua @@ -45,19 +45,6 @@ cmp.setup({ select = true, }), }, - formatting = { - format = require("lspkind").cmp_format({ - mode = "symbol_text", - menu = { - nvim_lsp = "[LSP]", - luasnip = "[LuaSnip]", - nvim_lua = "[Lua]", - buffer = "[Buffer]", - path = "[Path]", - crates = "[Crates]", - }, - }), - }, sources = { { name = "nvim_lsp" }, { name = "nvim_lua" }, diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua index 8aac636..bf65dfa 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua @@ -1,8 +1,11 @@ -local status_ok, lspkind = pcall(require, "lspkind") -if not status_ok then - return +local M = {} + +M.setup = function() + local status_ok, lspkind = pcall(require, "lspkind") + if not status_ok then + return + end + lspkind.init() end -lspkind.init({ - symbol_map = { typeparameter = "" }, -}) +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lspstatus.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lspstatus.lua deleted file mode 100644 index 0afd134..0000000 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lspstatus.lua +++ /dev/null @@ -1,13 +0,0 @@ -local lsp_status = require("lsp-status") -lsp_status.status() -lsp_status.register_progress() -lsp_status.config({ - indicator_errors = "", - indicator_warnings = "", - indicator_info = "", - indicator_hint = "", - indicator_ok = "", - current_function = true, - update_interval = 100, - status_symbol = " 🇻", -}) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua index f94d1f8..9ea3d2f 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua @@ -1,37 +1,71 @@ -local status_ok, lualine = pcall(require, "lualine") -if not status_ok then - return -end +local utils = require("tobyvin.utils") +local M = {} -local to_char = function(str) +M.to_char = function(str) return str:sub(1, 1) end -local nvim_gps = function() - local status_gps_ok, gps = pcall(require, "nvim-gps") - if not status_gps_ok or gps.get_location() == "error" then - return "" - else - return gps.get_location() +M.diff_source = function() + local gitsigns = vim.b.gitsigns_status_dict + if gitsigns then + return { + added = gitsigns.added, + modified = gitsigns.changed, + removed = gitsigns.removed, + } end end -local hide_in_width = function() - return vim.fn.winwidth(0) > 80 -end +M.setup = function() + local status_ok, lualine = pcall(require, "lualine") + if not status_ok then + return + end + + local nvim_navic = require("nvim-navic") -lualine.setup({ - options = { - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { "alpha" }, - }, - sections = { - lualine_a = { { "mode", fmt = to_char } }, - lualine_c = { - { nvim_gps, cond = hide_in_width }, + lualine.setup({ + options = { + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + globalstatus = false, }, - }, - tabline = {}, - extensions = { "quickfix", "fzf", "fugitive", "toggleterm", "neo-tree" }, -}) + sections = { + lualine_a = { { "mode", fmt = M.to_char } }, + lualine_b = { + "branch", + { "diff", source = M.diff_source }, + { + "diagnostics", + sources = { "nvim_lsp" }, + symbols = { + error = utils.diagnostic_signs.error.text, + warn = utils.diagnostic_signs.warn.text, + info = utils.diagnostic_signs.info.text, + hint = utils.diagnostic_signs.hint.text, + }, + }, + }, + lualine_c = { + { "filetype", icon_only = true, colored = false }, + "filename", + { nvim_navic.get_location, cond = nvim_navic.is_available }, + }, + lualine_x = { + { + "lsp_progress", + display_components = { "lsp_client_name", "spinner", { "title", "percentage", "message" } }, + timer = { progress_enddelay = 500, spinner = 1000, lsp_client_name_enddelay = 1000 }, + spinner_symbols = utils.spinner_frames, + }, + "encoding", + "fileformat", + "filetype", + }, + }, + tabline = {}, + extensions = { "quickfix", "man", "fzf", "nvim-dap-ui" }, + }) +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/nvim-navic.lua b/nvim/.config/nvim/lua/tobyvin/plugins/nvim-navic.lua new file mode 100644 index 0000000..afd3c6e --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/nvim-navic.lua @@ -0,0 +1,15 @@ +local M = {} + +M.setup = function() + local status_ok, nvim_navic = pcall(require, "nvim-navic") + if not status_ok then + vim.notify("Failed to load module 'nvim-navic'", "error") + return + end + + nvim_navic.setup({ + icons = require("lspkind").symbol_map, + }) +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index 042a870..35c5f32 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -1,5 +1,7 @@ local M = {} +M.spinner_frames = { "⣷", "⣯", "⣟", "⡿", "⢿", "⣻", "⣽", "⣾" } + M.diagnostic_signs = { error = { text = " ", texthl = "DiagnosticSignError" }, warn = { text = " ", texthl = "DiagnosticSignWarn" }, |