mirror of
https://github.com/halfdan/dotfiles.git
synced 2025-04-26 20:35:40 +00:00
59 lines
1.9 KiB
Lua
59 lines
1.9 KiB
Lua
local saga = require 'lspsaga'
|
|
saga.init_lsp_saga({
|
|
-- symbols in winbar
|
|
-- symbol_in_winbar = {
|
|
-- enable = true,
|
|
-- click_support = true,
|
|
-- show_file = true,
|
|
-- in_custom = true,
|
|
-- },
|
|
})
|
|
|
|
local function get_file_name(include_path)
|
|
local file_name = require('lspsaga.symbolwinbar').get_file_name()
|
|
if vim.fn.bufname '%' == '' then return '' end
|
|
if include_path == false then return file_name end
|
|
-- Else if include path: ./lsp/saga.lua -> lsp > saga.lua
|
|
local sep = vim.loop.os_uname().sysname == 'Windows' and '\\' or '/'
|
|
local path_list = vim.split(string.gsub(vim.fn.expand '%:~:.:h', '%%', ''), sep)
|
|
local file_path = ''
|
|
for _, cur in ipairs(path_list) do
|
|
file_path = (cur == '.' or cur == '~') and '' or
|
|
file_path .. cur .. ' ' .. '%#LspSagaWinbarSep#>%*' .. ' %*'
|
|
end
|
|
return file_path .. file_name
|
|
end
|
|
|
|
local function config_winbar()
|
|
local exclude = {
|
|
['teminal'] = true,
|
|
['toggleterm'] = true,
|
|
['prompt'] = true,
|
|
['NvimTree'] = true,
|
|
['help'] = true,
|
|
} -- Ignore float windows and exclude filetype
|
|
if vim.api.nvim_win_get_config(0).zindex or exclude[vim.bo.filetype] then
|
|
vim.wo.winbar = ''
|
|
else
|
|
local ok, lspsaga = pcall(require, 'lspsaga.symbolwinbar')
|
|
local sym
|
|
if ok then sym = lspsaga.get_symbol_node() end
|
|
local win_val = ''
|
|
win_val = get_file_name(true) -- set to true to include path
|
|
if sym ~= nil then win_val = win_val .. sym end
|
|
vim.wo.winbar = win_val
|
|
end
|
|
end
|
|
|
|
-- local events = { 'BufEnter', 'BufWinEnter', 'CursorMoved' }
|
|
--
|
|
-- vim.api.nvim_create_autocmd(events, {
|
|
-- pattern = '*',
|
|
-- callback = function() config_winbar() end,
|
|
-- })
|
|
--
|
|
-- vim.api.nvim_create_autocmd('User', {
|
|
-- pattern = 'LspsagaUpdateSymbol',
|
|
-- callback = function() config_winbar() end,
|
|
-- })
|