romgrk / barbar.nvim

The neovim tabline plugin.
2.23k stars 83 forks source link

Barbar does not create new tabs. Tab is always one #353

Closed illia-piskurov closed 1 year ago

illia-piskurov commented 1 year ago

Barbar does not create new tabs. Tab is always one

To Reproduce

init.lua:

-- Base
require('base/editor')
require('base/tabs')
require('base/search')

-- Packer (Plugin Manager) 
require('plugins/plugins')

-- Plugins
require('plugins/lualine')
require('plugins/barbar')
require('plugins/nvim-tree')

-- Plugins for LSP support and auto completion
require('plugins/nvim-cmp')
require('plugins/mason')

-- Colorscheme
require('plugins/gruvbox')

-- Keys
require('keys/barbar')
require('keys/nvim-tree')

barbar.lua:

-- Set barbar's options
require'bufferline'.setup {
    -- Enable/disable animations
    animation = true,

    -- Enable/disable auto-hiding the tab bar when there is a single buffer
    auto_hide = false,

    -- Enable/disable current/total tabpages indicator (top right corner)
    tabpages = true,

    -- Enable/disable close button
    closable = true,

    -- Enables/disable clickable tabs
    --  - left-click: go to buffer
    --  - middle-click: delete buffer
    clickable = true,

    -- Enables / disables diagnostic symbols
    diagnostics = {
        -- you can use a list
        {enabled = true, icon = 'ff'}, -- ERROR
        {enabled = false}, -- WARN
        {enabled = false}, -- INFO
        {enabled = true},  -- HINT

        -- OR `vim.diagnostic.severity`
        [vim.diagnostic.severity.ERROR] = {enabled = true, icon = 'ff'},
        [vim.diagnostic.severity.WARN] =  {enabled = false},
        [vim.diagnostic.severity.INFO] =  {enabled = false},
        [vim.diagnostic.severity.HINT] =  {enabled = true},
    },

    -- Excludes buffers from the tabline
    exclude_ft = {'javascript'},
    exclude_name = {'package.json'},

    -- Hide inactive buffers and file extensions. Other options are `alternate`, `current`, and `visible`.
    hide = {extensions = true, inactive = true},

    -- Disable highlighting alternate buffers
    highlight_alternate = false,

    -- Enable highlighting visible buffers
    highlight_visible = true,

    -- Enable/disable icons
    -- if set to 'numbers', will show buffer index in the tabline
    -- if set to 'both', will show buffer index and icons in the tabline
    icons = true,

    -- If set, the icon color will follow its corresponding buffer
    -- highlight group. By default, the Buffer*Icon group is linked to the
    -- Buffer* group (see Highlighting below). Otherwise, it will take its
    -- default value as defined by devicons.
    icon_custom_colors = false,

    -- Configure icons on the bufferline.
    icon_separator_active = '▎',
    icon_separator_inactive = '▎',
    icon_close_tab = '',
    icon_close_tab_modified = '●',
    icon_pinned = '車',

    -- If true, new buffers will be inserted at the start/end of the list.
    -- Default is to insert after current buffer.
    insert_at_end = false,
    insert_at_start = false,

    -- Sets the maximum padding width with which to surround each tab
    maximum_padding = 1,

    -- Sets the minimum padding width with which to surround each tab
    minimum_padding = 1,

    -- Sets the maximum buffer name length.
    maximum_length = 30,

    -- If set, the letters for each buffer in buffer-pick mode will be
    -- assigned based on their name. Otherwise or in case all letters are
    -- already assigned, the behavior is to assign letters in order of
    -- usability (see order below)
    semantic_letters = true,

    -- New buffer letters are assigned in this order. This order is
    -- optimal for the qwerty keyboard layout but might need adjustement
    -- for other layouts.
    letters = 'asdfjkl;ghnmxcvbziowerutyqpASDFJKLGHNMXCVBZIOWERUTYQP',

    -- Sets the name of unnamed buffers. By default format is "[Buffer X]"
    -- where X is the buffer number. But only a static string is accepted here.
    no_name_title = nil,
}

local nvim_tree_events = require('nvim-tree.events')
local bufferline_api   = require('bufferline.api')

local function get_tree_size()
    return require'nvim-tree.view'.View.width
end

nvim_tree_events.subscribe('TreeOpen', function()
    bufferline_api.set_offset(get_tree_size())
end)

nvim_tree_events.subscribe('Resize', function()
    bufferline_api.set_offset(get_tree_size())
end)

nvim_tree_events.subscribe('TreeClose', function()
    bufferline_api.set_offset(0)
end)

Steps to reproduce the behavior:

  1. Create a new buffer.
  2. See error

Screenshots 2023-01-08 03-09-33

Informations Neovim version: NVIM v0.8.2 Build type: RelWithDebInfo LuaJIT 2.1.0-beta3

pixeljae commented 1 year ago

I just set hide = {extensions = true, inactive = true}, to hide = {extensions = false, inactive = false}, to show all the tabs.

Iron-E commented 1 year ago

I watched the video, and tabs are being created. See https://github.com/romgrk/barbar.nvim/issues/279#issuecomment-1217969825

In addition to what @pixeljae said (which should help reduce visual confusion), the configuration in the README is not intended as a copy-paste solution. It just shows the options that are possible.

For example, the diagnostics field has comments in the README stating to use one syntax or the other, but in the config from this issue both are present. I would read about all of the options and what they do, and then decide if you want to change them. For most people, the defaults are fine except for a few modifications.

Let us know if you have any other questions :)