aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-07-06 16:08:01 -0500
committerToby Vincent <tobyv13@gmail.com>2022-07-06 16:08:01 -0500
commit1ca41ab99d3df956a901834b8765b9d8ea7fd863 (patch)
treede6beb1c78d0dbbda4fdfa346f023d214db63372
parent5ea26bce5c3689c6f5ab42798782c205914d92b8 (diff)
feat(nvim): improve statusline with location and lsp progress
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua4
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/init.lua7
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/symbol.lua9
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/utils.lua7
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins.lua17
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/cmp.lua13
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/lspkind.lua15
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/lspstatus.lua13
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua90
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/nvim-navic.lua15
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils.lua2
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" },