92 lines
3.2 KiB
Markdown
92 lines
3.2 KiB
Markdown
# nvim-hardline
|
|
|
|
A statusline / bufferline for Neovim written in Lua. It is inspired by
|
|
[vim-airline](https://github.com/vim-airline/vim-airline) but aims to
|
|
be as light and simple as possible.
|
|
|
|
_**Note**: this plugin is mainly for my own use. 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:
|
|
```lua
|
|
cmd 'packadd packer.nvim'
|
|
return require('packer').startup(function()
|
|
use {'ojroques/nvim-hardline'}
|
|
end)
|
|
```
|
|
|
|
#### With Plug
|
|
```vim
|
|
call plug#begin()
|
|
Plug 'ojroques/nvim-hardline'
|
|
call plug#end()
|
|
```
|
|
|
|
## Usage
|
|
In your *init.lua*:
|
|
```lua
|
|
require('hardline').setup {}
|
|
```
|
|
|
|
If you're using a *.vimrc* or *init.vim*:
|
|
```vim
|
|
lua require('hardline').setup {}
|
|
```
|
|
|
|
## Configuration
|
|
You can pass options to the `setup()` function. Here are all available options
|
|
with their default settings:
|
|
```lua
|
|
require('hardline').setup {
|
|
bufferline = false, -- enable 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 = 80},
|
|
'%<',
|
|
{class = 'med', item = require('hardline.parts.filename').get_item},
|
|
{class = 'med', item ='%='},
|
|
{class = 'low', item = require('hardline.parts.wordcount').get_item, hide = 80},
|
|
{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 = 80},
|
|
{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 |
|
|
|------|-------------|
|
|
| `filename` | Filename and file status (readonly, modified, ...) |
|
|
| `filetype` | Filetype |
|
|
| `git` | Git hunks (requires [vim-gitgutter](https://github.com/airblade/vim-gitgutter)) and Git branch (requires [vim-fugitive](https://github.com/tpope/vim-fugitive)) |
|
|
| `line` | Line and column positions |
|
|
| `lsp` | Diagnostics from Neovim LSP client |
|
|
| `mode` | Current mode |
|
|
| `whitespace` | Trailing whitespaces, mixed indent and Git conflict markers warnings |
|
|
| `wordcount` | Current word count (enabled only for [some filetypes](https://github.com/ojroques/nvim-hardline/blob/5fc738bb7991f7d7890be14e7a74a50e21f0bd81/lua/hardline/parts/wordcount.lua#L8-L19)) |
|
|
|
|
## License
|
|
[LICENSE](./LICENSE)
|