Custom winbar setup with breadcrumbs (navic)
This commit is contained in:
parent
ebf3d7bbb5
commit
5e3e216ea1
10
init.lua
10
init.lua
|
|
@ -548,6 +548,7 @@ require('lazy').setup({
|
|||
-- That is to say, every time a new file is opened that is associated with
|
||||
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
|
||||
-- function will be executed to configure the current buffer
|
||||
--
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
|
||||
callback = function(event)
|
||||
|
|
@ -617,6 +618,11 @@ require('lazy').setup({
|
|||
--
|
||||
-- When you move your cursor, the highlights will be cleared (the second autocommand).
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
|
||||
if client and client.server_capabilities.documentSymbolProvider then
|
||||
require('nvim-navic').attach(client, event.buf)
|
||||
end
|
||||
|
||||
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
|
||||
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
|
||||
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||
|
|
@ -1046,3 +1052,7 @@ vim.o.foldexpr = "nvim_treesitter#foldexpr()"
|
|||
-- keep folds open by default
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldenable = true
|
||||
|
||||
-- winbar setup
|
||||
require('custom.winbar').setup()
|
||||
vim.o.winbar = "%{%v:lua.require('custom.winbar').setup()%}"
|
||||
|
|
|
|||
|
|
@ -1,30 +1,31 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
|
||||
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
|
||||
"conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "2cb5edb2dd6700a958a446b20bb2be04d318da9d" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
|
||||
"blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" },
|
||||
"conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "3f5475949679953af6d78654db29b944fa826e6a" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" },
|
||||
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
|
||||
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "7f0bf635082bb9b7d2b37766054526a6ccafdb85" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "e28ce52fc7ff79fcb76f0e79ee6fb6182fca90b9" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" },
|
||||
"mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" },
|
||||
"mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" },
|
||||
"mini.nvim": { "branch": "main", "commit": "0e9d1f972a91acf5a0513319099ba41f7c09c30a" },
|
||||
"neo-tree.nvim": { "branch": "main", "commit": "cea666ef965884414b1b71f6b39a537f9238bdb2" },
|
||||
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
|
||||
"mini.nvim": { "branch": "main", "commit": "8a7cf7eee8d89bd1b83f6d72f7f3b5598e7ae2cb" },
|
||||
"neo-tree.nvim": { "branch": "main", "commit": "c4c168e459395275c552179a1baf9c3d885d6a74" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-lint": { "branch": "master", "commit": "7ef127aaede2a4d5ad8df8321e2eb4e567f29594" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "45ff1914044de7dbd4cd85053dc09f47312a2f4d" },
|
||||
"nvim-lint": { "branch": "master", "commit": "9da1fb942dd0668d5182f9c8dee801b9c190e2bb" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "ac98db2f9f06a56498ec890a96928774eae412c3" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "19d461ddd543e938eb22505fb03fa878800270b6" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "d14614cbfc63b6037bfccd48bb982d2ad2003352" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||
"which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,5 +63,11 @@ return {
|
|||
harpoon:extend(harpoon_extensions.builtins.highlight_current_file())
|
||||
end,
|
||||
},
|
||||
|
||||
-- Breadcrumbs
|
||||
{
|
||||
"SmiteshP/nvim-navic",
|
||||
dependencies = 'neovim/nvim-lspconfig',
|
||||
},
|
||||
}
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
M = {}
|
||||
|
||||
M.setup = function()
|
||||
local function winbar_indent()
|
||||
local indent = 0
|
||||
|
||||
-- line numbers
|
||||
if vim.wo.number or vim.wo.relativenumber then
|
||||
local numberwidth = vim.wo.numberwidth
|
||||
if numberwidth == 0 then
|
||||
-- auto width: digits in max line number
|
||||
local max_lnum = vim.api.nvim_buf_line_count(0)
|
||||
indent = indent + tostring(max_lnum):len()
|
||||
else
|
||||
indent = indent + numberwidth
|
||||
end
|
||||
end
|
||||
|
||||
-- space between number + text
|
||||
indent = indent + 2
|
||||
|
||||
-- signcolumn
|
||||
if vim.wo.signcolumn ~= 'no' then
|
||||
indent = indent + 1
|
||||
end
|
||||
|
||||
return string.rep(' ', indent)
|
||||
end
|
||||
|
||||
local function winbar_icon(filepath)
|
||||
if filepath == 'Filesystem' then
|
||||
return ' '
|
||||
elseif filepath == 'Git' then
|
||||
return ' '
|
||||
elseif filepath == 'Nvim' then
|
||||
return ' '
|
||||
end
|
||||
return ' '
|
||||
end
|
||||
|
||||
-- file path
|
||||
local filepath = vim.fn.expand('%:~:.')
|
||||
-- override neo-tree default buffer name
|
||||
if filepath == 'neo-tree filesystem [1]' then
|
||||
filepath = 'Filesystem'
|
||||
-- override fugitive default buffer name
|
||||
elseif filepath:match('^fugitive://') then
|
||||
filepath = 'Git'
|
||||
elseif filepath == '' then
|
||||
filepath = 'Nvim'
|
||||
end
|
||||
|
||||
local navic = require('nvim-navic')
|
||||
local location = navic.is_available() and navic.get_location() or ''
|
||||
|
||||
local indent = winbar_indent()
|
||||
local icon = winbar_icon(filepath)
|
||||
|
||||
if location ~= '' then
|
||||
return indent .. icon .. filepath .. ' > ' .. location
|
||||
end
|
||||
|
||||
return indent .. icon .. filepath
|
||||
end
|
||||
|
||||
return M
|
||||
Loading…
Reference in New Issue