akinsho / bufferline.nvim

A snazzy bufferline for Neovim

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug]: E5108: Error executing lua: attempt to get length of field 'text' (a nil value)

superNWHG opened this issue · comments

Is there an existing issue for this?

  • I have searched the existing issues

What happened?

When I use neovim, sometimes I get this error: E5108: Error executing lua ...al/share/nvim/lazy/bufferline.nvim/lua/bufferline/ui.lua:497: attempt to get length of field 'text' (a nil va lue) stack traceback: ...al/share/nvim/lazy/bufferline.nvim/lua/bufferline/ui.lua:497: in function <...al/share/nvim/lazy/bufferline.nvim/lua/bufferline/ ui.lua:461> vim/shared.lua: in function 'get_components' ...local/share/nvim/lazy/bufferline.nvim/lua/bufferline.lua:56: in function <...local/share/nvim/lazy/bufferline.nvim/lua/bufferlin e.lua:54> and bufferline just stops working.

I don't know exactly when it happens but it's mostly after using neovim for a couple of minutes.

What did you expect to happen?

Bufferline just working fine without any errors

Config

return {
	"akinsho/bufferline.nvim",
	dependencies = "nvim-tree/nvim-web-devicons",
	opts = {
		options = {
			mode = "buffers", -- set to "tabs" to only show tabpages instead
			style_preset = "default", -- or bufferline.style_preset.minimal,
			themable = true, -- allows highlight groups to be overriden i.e. sets highlights as default
			numbers = "ordinal",
			close_command = "bdelete! %d", -- can be a string | function, | false see "Mouse actions"
			right_mouse_command = "bdelete! %d", -- can be a string | function | false, see "Mouse actions"
			left_mouse_command = "buffer %d", -- can be a string | function, | false see "Mouse actions"
			middle_mouse_command = nil, -- can be a string | function, | false see "Mouse actions"
			indicator = {
				icon = "", -- this should be omitted if indicator style is not 'icon'
				style = "icon",
			},
			buffer_close_icon = "󰅖",
			modified_icon = "",
			close_icon = "",
			left_trunc_marker = "",
			right_trunc_marker = "",
			--- name_formatter can be used to change the buffer's label in the bufferline.
			--- Please note some names can/will break the
			--- bufferline so use this at your discretion knowing that it has
			--- some limitations that will *NOT* be fixed.
			-- name_formatter = function(buf)  -- buf contains:
			-- name                | str        | the basename of the active file
			-- path                | str        | the full path of the active file
			-- bufnr (buffer only) | int        | the number of the active buffer
			-- buffers (tabs only) | table(int) | the numbers of the buffers in the tab
			-- tabnr (tabs only)   | int        | the "handle" of the tab, can be converted to its ordinal number using: `vim.api.nvim_tabpage_get_number(buf.tabnr)`
			-- end,
			max_name_length = 18,
			max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
			truncate_names = true, -- whether or not tab names should be truncated
			tab_size = 18,
			diagnostics = "nvim_lsp",
			diagnostics_update_in_insert = false,
			-- The diagnostics indicator can be set to nil to keep the buffer name highlight but delete the highlighting
			diagnostics_indicator = function(count, level, diagnostics_dict, context)
				-- return "("..count..")"
				diagnostics_indicator = function(count, level, diagnostics_dict, context)
					local s = " "
					for e, n in pairs(diagnostics_dict) do
						local sym = e == "error" and "" or (e == "warning" and "" or "")
						s = s .. n .. sym
					end
					return s
				end
			end,
			-- NOTE: this will be called a lot so don't do any heavy processing here
			-- custom_filter = function(buf_number, buf_numbers)
			-- filter out filetypes you don't want to see
			-- if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
			--     return true
			-- end
			-- filter out by buffer name
			-- if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
			--     return true
			-- end
			-- filter out based on arbitrary rules
			-- e.g. filter out vim wiki buffer from tabline in your work repo
			-- if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
			--     return true
			-- end
			-- filter out by it's index number in list (don't show first buffer)
			-- if buf_numbers[1] ~= buf_number then
			--     return true
			-- end,
			offsets = {
				{
					filetype = "NvimTree",
					text = "File Explorer",
					text_align = "left",
					separator = true,
				},
			},
			color_icons = true, -- whether or not to add the filetype icon highlights
			get_element_icon = function(element)
				-- element consists of {filetype: string, path: string, extension: string, directory: string}
				-- This can be used to change how bufferline fetches the icon
				-- for an element e.g. a buffer or a tab.
				-- e.g.
				local icon, hl =
					require("nvim-web-devicons").get_icon_by_filetype(element.filetype, { default = false })
				return icon, hl
				-- or
				-- local custom_map = {my_thing_ft: {icon = "my_thing_icon", hl}}
				-- return custom_map[element.filetype]
			end,
			show_buffer_icons = true, -- disable filetype icons for buffers
			show_buffer_close_icons = true,
			show_close_icon = true,
			show_tab_indicators = true,
			show_duplicate_prefix = false, -- whether to show duplicate buffer prefix
			persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
			move_wraps_at_ends = false, -- whether or not the move command "wraps" at the first or last position
			-- can also be a table containing 2 custom separators
			-- [focused and unfocused]. eg: { '|', '|' }
			separator_style = "slope",
			enforce_regular_tabs = false, -- check later
			always_show_bufferline = true,
			hover = {
				enabled = true,
				delay = 200,
				reveal = { "close" },
			},
			-- sort_by = 'id'
			-- add custom logic
			--    return buffer_a.modified > buffer_b.modified
		},
	},
}

Additional Information

No response

commit

b15c6da (latest)

commented

@superNWHG the config you've provided should definitely not be what your config looks like. It appears you've copy pasted the example from the README which is explicitly called out as not for copy pasting. It wouldn't surprise me if there is some issue in there that shouldn't be. This isn't occurring in main for other so it's almost certainly configuration related

@superNWHG the config you've provided should definitely not be what your config looks like. It appears you've copy pasted the example from the README which is explicitly called out as not for copy pasting. It wouldn't surprise me if there is some issue in there that shouldn't be. This isn't occurring in main for other so it's almost certainly configuration related

Okay thank you for the response, I will look at my config and try to fix the issue:)