A statusline / bufferline for Neovim written in Lua. It is inspired by vim-airline but aims to be as light and simple as possible.
Note: I won't add new features/parts/themes if I don't need them. Feel free to submit PRs or fork the plugin though.
With packer.nvim:
use {'ojroques/nvim-hardline'}
With paq-nvim:
paq {'ojroques/nvim-hardline'}
In your init.lua:
require('hardline').setup {}
If you're using a .vimrc or init.vim:
lua require('hardline').setup {}
You can pass options to the setup()
function. Here are all available options
with their default settings:
require('hardline').setup {
bufferline = false, -- enable bufferline
bufferline_settings = {
exclude_terminal = false, -- don't show terminal buffers in bufferline
show_index = false, -- show buffer indexes (not the actual buffer numbers) in bufferline
},
theme = 'default', -- change theme
sections = { -- define sections
{class = 'mode', item = require('hardline.parts.mode').get_item},
{class = 'high', item = require('hardline.parts.git').get_item, hide = 100},
{class = 'med', item = require('hardline.parts.filename').get_item},
'%<',
{class = 'med', item = '%='},
{class = 'low', item = require('hardline.parts.wordcount').get_item, hide = 100},
{class = 'error', item = require('hardline.parts.lsp').get_error},
{class = 'warning', item = require('hardline.parts.lsp').get_warning},
{class = 'warning', item = require('hardline.parts.whitespace').get_item},
{class = 'high', item = require('hardline.parts.filetype').get_item, hide = 60},
{class = 'mode', item = require('hardline.parts.line').get_item},
},
}
You can define your own sections using the sections
list. Each element of
that list is a table with the following attributes:
class
: the section colorscheme. The following classes are currently available:mode
: change color based on the current mode.low
,med
,high
: colors for different levels of importance.bufferline
: colors for the bufferline.error
,warning
: colors for the diagnostics of Neovim built-in LSP client.
item
: the actual text being displayed. Must be a string or a function returning a string.hide
: threshold (in number of characters) below which the section will be hidden.
Part | Description |
---|---|
cwd |
Current working directory |
filename |
Filename and file status (readonly, modified, ...) |
filetype |
Filetype |
git |
Git hunks (requires vim-gitgutter / vim-signify / gitsigns.nvim) and Git branch (requires vim-fugitive / gina.vim / vim-branchname / gitsigns.nvim) |
line |
Line and column positions |
lsp |
Diagnostics from Neovim LSP client |
mode |
Current mode |
treesitter-context |
Current treesitter node (requires nvim-gps) |
whitespace |
Trailing whitespaces, mixed indent and Git conflict markers warnings |
wordcount |
Current word count (enabled only for some filetypes) |