Skip to content

Commit

Permalink
fix(nvimdev#1482): adds the ability to set a prefix to winbar
Browse files Browse the repository at this point in the history
  • Loading branch information
adriancmiranda committed Aug 21, 2024
1 parent 4ce44df commit e55e661
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
1 change: 1 addition & 0 deletions lua/lspsaga/highlight.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ local kind = require('lspsaga.lspkind').kind
local function hi_define()
return {
-- general
SagaPrefix = { link = 'Prefix' },
SagaTitle = { link = 'Title' },
SagaBorder = { link = 'FloatBorder' },
SagaNormal = { link = 'NormalFloat' },
Expand Down
12 changes: 9 additions & 3 deletions lua/lspsaga/symbol/winbar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,15 @@ local function path_in_bar(buf)

local bar = bar_prefix()
local items = {}

local winbar_prefix = type(ui.winbar_prefix) == 'string'
and #ui.winbar_prefix > 0
and '%#Prefix#' .. ui.winbar_prefix
or ''

local folder
if ui.foldericon then
folder = ui.winbar_prefix .. get_kind_icon(302)[2]
folder = get_kind_icon(302)[2]
end

for item in util.path_itera(buf) do
Expand All @@ -34,7 +40,7 @@ local function path_in_bar(buf)
and '%#' .. (hl or 'SagaFileIcon') .. '#' .. (icon and icon .. ' ' or '') .. '%*' .. bar.prefix .. 'FileName#' .. item
or bar.prefix
.. 'Folder#'
.. (folder and folder or ui.winbar_prefix)
.. (folder and folder or '')
.. '%*'
.. bar.prefix
.. 'FolderName#'
Expand All @@ -47,7 +53,7 @@ local function path_in_bar(buf)
end
end

local barstr = ''
local barstr = winbar_prefix .. ''
for i = #items, 1, -1 do
barstr = barstr .. items[i] .. (i > 1 and bar.sep or '')
end
Expand Down
28 changes: 28 additions & 0 deletions test/winbar_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
require('lspsaga').setup({})
local api = vim.api

describe('winbar', function()
before_each(function()
local buf = api.nvim_create_buf(false, true)
api.nvim_set_current_buf(buf)
api.nvim_command('vsplit')
api.nvim_set_current_win(api.nvim_get_current_win())
end)

it('should handle width limitation in winbar', function()
-- Inicialize o winbar
require('lspsaga.symbol.winbar').init_winbar(api.nvim_get_current_buf())

-- Simula uma situação onde há muitos itens na winbar
-- (Adapte conforme necessário para criar uma lista longa de símbolos)
api.nvim_set_option_value('winbar', string.rep('Item|', 50), {
scope = 'local',
win = api.nvim_get_current_win(),
})

-- Verifique se o winbar lida com a largura da janela corretamente
local winbar_value =
api.nvim_get_option_value('winbar', { scope = 'local', win = api.nvim_get_current_win() })
assert(winbar_value:match('...'), 'Winbar does not handle width limitation correctly')
end)
end)

0 comments on commit e55e661

Please sign in to comment.