• Stars
    star
    180
  • Rank 213,097 (Top 5 %)
  • Language
    Lua
  • License
    BSD 2-Clause "Sim...
  • Created almost 4 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simple Neovim statusline

nvim-hardline

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.

screenshot

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)

License

LICENSE