From 26b36f620011c032292a90f6f79559f801c39f38 Mon Sep 17 00:00:00 2001 From: Daryl Ronningen Date: Tue, 28 Jun 2022 23:40:34 +0800 Subject: [PATCH] setup neovim winbar --- .config/nvim/init.lua | 1 - .config/nvim/lua/user/lsp/handlers.lua | 5 ++ .config/nvim/lua/user/lualine.lua | 23 +++------ .config/nvim/lua/user/options.lua | 1 + .config/nvim/lua/user/plugins.lua | 4 +- .config/nvim/lua/user/winbar.lua | 64 +++++++++++++++++++++++++ .config/nvim/plugin/packer_compiled.lua | 10 ++-- 7 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 .config/nvim/lua/user/winbar.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 33dfafa..334c12a 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -20,5 +20,4 @@ require("user.alpha") require("user.whichkey") require("user.trouble") require("user.colorizer") -require("user.gps") require("user.discord") diff --git a/.config/nvim/lua/user/lsp/handlers.lua b/.config/nvim/lua/user/lsp/handlers.lua index 53cac8c..af72d1a 100644 --- a/.config/nvim/lua/user/lsp/handlers.lua +++ b/.config/nvim/lua/user/lsp/handlers.lua @@ -70,6 +70,11 @@ end M.on_attach = function(client, bufnr) lsp_keymaps(bufnr) lsp_highlight_document(client) + + if client.server_capabilities.documentSymbolProvider then + local navic = require("nvim-navic") + navic.attach(client, bufnr) + end end local capabilities = vim.lsp.protocol.make_client_capabilities() diff --git a/.config/nvim/lua/user/lualine.lua b/.config/nvim/lua/user/lualine.lua index 21bbc57..84d2335 100644 --- a/.config/nvim/lua/user/lualine.lua +++ b/.config/nvim/lua/user/lualine.lua @@ -3,20 +3,6 @@ if not status_ok then return end -local status_gps_ok, gps = pcall(require, "nvim-gps") -if not status_gps_ok then - return -end - -local nvim_gps = function() - local gps_location = gps.get_location() - if gps_location == "error" then - return "" - else - return gps.get_location() - end -end - lualine.setup({ options = { icons_enabled = true, @@ -29,7 +15,7 @@ lualine.setup({ sections = { lualine_a = { "mode" }, lualine_b = { "branch", "diff", "diagnostics" }, - lualine_c = { "filename", "filesize", nvim_gps }, + lualine_c = { "filename", "filesize" }, lualine_x = { "encoding", "fileformat", "filetype" }, lualine_y = { "progress" }, lualine_z = { "location" }, @@ -43,5 +29,10 @@ lualine.setup({ lualine_z = {}, }, tabline = {}, - extensions = {}, + extensions = { + "nvim-tree", + "toggleterm", + "fzf", + "quickfix", + }, }) diff --git a/.config/nvim/lua/user/options.lua b/.config/nvim/lua/user/options.lua index dad6ca3..a6eae2f 100644 --- a/.config/nvim/lua/user/options.lua +++ b/.config/nvim/lua/user/options.lua @@ -36,6 +36,7 @@ vim.opt.incsearch = true vim.opt.colorcolumn = "120" vim.opt.list = true vim.opt.listchars:append("lead:.") +vim.opt.winbar = "%{%v:lua.require'user.winbar'.get_winbar()%}" vim.cmd("set whichwrap+=<,>,[,],h,l") vim.cmd([[set iskeyword+=-]]) diff --git a/.config/nvim/lua/user/plugins.lua b/.config/nvim/lua/user/plugins.lua index 7bf878a..2b2efe5 100644 --- a/.config/nvim/lua/user/plugins.lua +++ b/.config/nvim/lua/user/plugins.lua @@ -131,8 +131,8 @@ return packer.startup(function(use) -- Colorizer use("norcalli/nvim-colorizer.lua") - -- GPS - use("SmiteshP/nvim-gps") + -- Navic + use("SmiteshP/nvim-navic") -- Wakatime use("wakatime/vim-wakatime") diff --git a/.config/nvim/lua/user/winbar.lua b/.config/nvim/lua/user/winbar.lua new file mode 100644 index 0000000..43ae000 --- /dev/null +++ b/.config/nvim/lua/user/winbar.lua @@ -0,0 +1,64 @@ +local M = {} + +local navic = require("nvim-navic") + +local function get_buf_option(opt) + local status_ok, buf_option = pcall(vim.api.nvim_buf_get_option, 0, opt) + if not status_ok then + return nil + else + return buf_option + end +end + +local function is_empty(s) + return s == nil or s == "" +end + +M.winbar_filetype_exclude = { + "help", + "startify", + "dashboard", + "packer", + "neogitstatus", + "NvimTree", + "Trouble", + "alpha", + "lir", + "Outline", + "spectre_panel", + "toggleterm", +} + +local excludes = function() + if vim.tbl_contains(M.winbar_filetype_exclude, vim.bo.filetype) then + vim.opt_local.winbar = nil + return true + end + return false +end + +local function get_filename() + return "%#WinBarFilename#" .. "%t" .. "%*" +end + +local function get_location() + local location = navic.get_location() + if not is_empty(location) then + return "%#WinBarContext#" .. " " .. ">" .. " " .. location .. "%*" + end + return "" +end + +function M.get_winbar() + if excludes() then + return "" + end + if navic.is_available() then + return get_filename() .. get_location() + else + return get_filename() + end +end + +return M diff --git a/.config/nvim/plugin/packer_compiled.lua b/.config/nvim/plugin/packer_compiled.lua index a22e66b..4e27041 100644 --- a/.config/nvim/plugin/packer_compiled.lua +++ b/.config/nvim/plugin/packer_compiled.lua @@ -194,11 +194,6 @@ _G.packer_plugins = { path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua", url = "https://github.com/norcalli/nvim-colorizer.lua" }, - ["nvim-gps"] = { - loaded = true, - path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-gps", - url = "https://github.com/SmiteshP/nvim-gps" - }, ["nvim-lsp-installer"] = { loaded = true, path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-lsp-installer", @@ -209,6 +204,11 @@ _G.packer_plugins = { path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", url = "https://github.com/neovim/nvim-lspconfig" }, + ["nvim-navic"] = { + loaded = true, + path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-navic", + url = "https://github.com/SmiteshP/nvim-navic" + }, ["nvim-tree.lua"] = { loaded = true, path = "/home/relms/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",