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.
Installation
With packer.nvim:
use {'ojroques/nvim-hardline'}
With paq-nvim:
paq {'ojroques/nvim-hardline'}
With lazy.nvim:
-- init.lua: {'ojroques/nvim-hardline'}, -- plugins/hardline.lua: return { 'ojroques/nvim-hardline', }
Usage
In your init.lua:
require('hardline').setup {}
If you're using a .vimrc or init.vim:
lua require('hardline').setup {}
Configuration
You can pass options to the setup() function. Here are all available options
with their default settings:
require('hardline').setup { bufferline = false, -- disable 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.
Available section parts
| 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) |
