๐ซ Hyperextensible Statusline / Tabline / Winbar for Neovim ๐
:chocolate_bar: nougat.nvim
Hyperextensible plugin for Neovim's 'statusline', 'tabline' and 'winbar'.
:sparkles: Features
- :hammerandwrench: Hyperextensible.
- :rocket: Fast, Performance focused, Submillisecond evaluation time.
- :desktop_computer: Responsive Breakpoints, Smart Truncation.
- :art: Color Palette, Automatic and Adaptive.
- :package: Modular Design, only use what you need.
- :crystal_ball: Dynamic
statusline/tabline/winbar. - :pagewithcurl: Filetype Specific
statusline/winbar. - :nail_care: Fancy Separator.
- :computer_mouse: Mouse-Click.
- :briefcase: Caching out-of-the-box.
- :bar_chart: Built-in Profiler.
- :peanuts: Common Items included.
:spider_web: Requirements
- Neovim >= 0.7.0
:inbox_tray: Installation
Install with your preferred plugin manager. For example:
With lazy.nvim
{
"MunifTanjim/nougat.nvim",
},
With
packer.nvim
use({
"MunifTanjim/nougat.nvim",
})
With
vim-plug
Plug 'MunifTanjim/nougat.nvim'
Usage
nougat.nvim is at your disposal to build exactly what you want.
local nougat = require("nougat")
set_statusline
Signature: (bar: NougatBar | nougatbarselector, opts?: { filetype?: string }) -> nil
bar can be a NougatBar instance:
local stl = Bar("statusline")
nougat.set_statusline(stl)
Or a nougatbarselector function (ctx: nougatcoreexpression_context) -> NougatBar.
local stl = Bar("statusline")
local stl_inactive = Bar("statusline")
-- use separate statusline focused/unfocused window nougat.set_statusline(function(ctx) return ctx.isfocused and stl or stlinactive end)
opts is a table with the shape { filetype?: string }.
If filetype is given, the bar will only be used for that filetype.
local stl_fugitive = Bar("statusline")
local stl_help = Bar("statusline")
-- set filetype specific statusline for ft, stl_ft in pairs({ fugitive = stl_fugitive, help = stl_help, }) do nougat.setstatusline(stlft, { filetype = ft }) end
refresh_statusline
Signature: (force_all? boolean) -> nil
set_tabline
Signature: (bar: NougatBar | nougatbarselector) -> nil
bar can be a NougatBar instance or a nougatbarselector function.
refresh_tabline
Signature: () -> nil
set_winbar
Signature: (bar: NougatBar | nougatbarselector, opts?: { filetype: string }|{ global?: boolean }|{ winid: integer }) -> nil
bar can be a NougatBar instance or a nougatbarselector function.
opts is a table with one of the shapes { filetype: string } / { global?: boolean } / { winid: integer }.
If filetype is given, the bar will only be used for that filetype.
If global is true, the bar will be used for global 'winbar', otherwise the local 'winbar' is set whenever a new window is created.
If winid is present, the bar will be used for only that specific window.
refresh_winbar
Signature: (force_all?: boolean) -> nil
Examples
A handful of examples are available to get you started.
Bubbly
Source: bubbly.lua

Pointy
Source: pointy.lua

Slanty
Source: slanty.lua

:art: Color Palette
Check Detailed Documentation for nougat.color
:gear: NougatBar
The sweet NougatBar represents the statusline / tabline / winbar.
Check Detailed Documentation for nougat.bar
:gear: NougatItem
Each NougatBar is made of a bunch of NougatItem.
Check Detailed Documentation for nougat.item
:gear: Separator
Separator that goes between two NougatItems.
Check Detailed Documentation for nougat.separator
:gear: Cache
Check Detailed Documentation for nougat.cache
:gear: Store
Check Detailed Documentation for nougat.store
:peanuts: Nuts
Commonly used NougatItems for your NougatBar are available inside nougat.nut.* module.
:bar_chart: Profiler
The built-in profiler can be used with the :Nougat profile command.
:notebook: Links
- Discussion: MunifTanjim/nougat.nvim/discussions
- Wiki: MunifTanjim/nougat.nvim/wiki
:scroll: License
Licensed under the MIT License. Check the LICENSE file for details.