*mini.tabline* Tabline

MIT License Copyright (c) 2021 Evgeni Chasnovski

------------------------------------------------------------------------------
                                                                   *MiniTabline*
Key idea: show all listed buffers in readable way with minimal total width.

Features:
- Buffers are listed in the order of their identifier (see |bufnr()|).

- Different highlight groups for "states" of buffer affecting 'buffer tabs'.

- Buffer names are made unique by extending paths to files or appending
  unique identifier to buffers without name.

- Current buffer is displayed "optimally centered" (in center of screen
  while maximizing the total number of buffers shown) when there are many
  buffers open.

- 'Buffer tabs' are clickable if Neovim allows it.

- Extra information section in case of multiple Neovim tabpages.

- Truncation symbols which show if there are tabs to the left and/or right.
  Exact characters are taken from 'listchars' global value (`precedes` and
  `extends` fields) and are shown only if 'list' option is enabled.

What it doesn't do:
- Custom buffer order is not supported.

# Dependencies ~

Suggested dependencies (provide extra functionality, will work without them):

- Enabled |mini.icons| module to show icons near file names.
  Falls back to [nvim-tree/nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons)
  or shows nothing.

# Setup ~

This module needs a setup with `require('mini.tabline').setup({})`
(replace `{}` with your `config` table). It will create global Lua table
`MiniTabline` which you can use for scripting or manually (with
`:lua MiniTabline.*`).

See |MiniTabline.config| for `config` structure and default values.

You can override runtime config settings locally to buffer inside
`vim.b.minitabline_config` which should have same structure as
`MiniTabline.config`. See |mini.nvim-buffer-local-config| for more details.

# Suggested option values ~

Some options are set automatically by |MiniTabline.setup()|:
- 'showtabline' is set to 2 to always show tabline.

# Highlight groups ~

- `MiniTablineCurrent` - buffer is current (has cursor in it).
- `MiniTablineVisible` - buffer is visible (displayed in some window).
- `MiniTablineHidden` - buffer is hidden (not displayed).
- `MiniTablineModifiedCurrent` - buffer is modified and current.
- `MiniTablineModifiedVisible` - buffer is modified and visible.
- `MiniTablineModifiedHidden` - buffer is modified and hidden.
- `MiniTablineFill` - unused right space of tabline.
- `MiniTablineTabpagesection` - section with tabpage information.
- `MiniTablineTrunc` - truncation symbols indicating more left/right tabs.

To change any highlight group, set it directly with |nvim_set_hl()|.

# Disabling ~

To disable (show empty tabline), set `vim.g.minitabline_disable` (globally) or
`vim.b.minitabline_disable` (for a buffer) to `true`. Considering high number
of different scenarios and customization intentions, writing exact rules
for disabling module's functionality is left to user. See
|mini.nvim-disabling-recipes| for common recipes.

------------------------------------------------------------------------------
                                                           *MiniTabline.setup()*
                         `MiniTabline.setup`({config})
Module setup

Parameters ~
{config} `(table|nil)` Module config table. See |MiniTabline.config|.

Usage ~
>lua
  require('mini.tabline').setup() -- use default config
  -- OR
  require('mini.tabline').setup({}) -- replace {} with your config table
<
------------------------------------------------------------------------------
                                                            *MiniTabline.config*
                              `MiniTabline.config`
Defaults ~
>lua
  MiniTabline.config = {
    -- Whether to show file icons (requires 'mini.icons')
    show_icons = true,

    -- Function which formats the tab label
    -- By default surrounds with space and possibly prepends with icon
    format = nil,

    -- Where to show tabpage section in case of multiple vim tabpages.
    -- One of 'left', 'right', 'none'.
    tabpage_section = 'left',
  }
<
# Format ~

`config.format` is a callable that takes buffer identifier and pre-computed
label as arguments and returns a string with formatted label. Output will be
treated strictly as text (i.e. no 'statusline' like constructs is allowed).
This function will be called for all displayable in tabline buffers.
Default: |MiniTabline.default_format()|.

Example of adding "+" suffix for modified buffers: >lua

  function(buf_id, label)
    local suffix = vim.bo[buf_id].modified and '+ ' or ''
    return MiniTabline.default_format(buf_id, label) .. suffix
  end
<
------------------------------------------------------------------------------
                                             *MiniTabline.make_tabline_string()*
                      `MiniTabline.make_tabline_string`()
Make string for |'tabline'|

------------------------------------------------------------------------------
                                                  *MiniTabline.default_format()*
                `MiniTabline.default_format`({buf_id}, {label})
Default tab format

Used by default as `config.format`.
Prepends label with padded icon based on buffer's name (if `show_icon`
in |MiniTabline.config| is `true`) and surrounds label with single space.
Note: it is meant to be used only as part of `format` in |MiniTabline.config|.

Parameters ~
{buf_id} `(number)` Buffer identifier.
{label} `(string)` Pre-computed label.

Return ~
`(string)` Formatted label.


 vim:tw=78:ts=8:noet:ft=help:norl: