* feat: add draw_empty option to always draw component event when it's empty
Closes#963
* tests: add test for component draw_empty option
* docs: add docs for component draw_empty option
---------
Co-authored-by: Carl Johnson <carl.darick.johnson@gmail.com>
* Refactor tests to use stubs for nvim-web-devicons
* Simplify getting icon
`get_icon` does not need the 2nd parameter (`ext`) as it will derive it
from the given `name` (1st argument) itself.
* fix component(filetype) proper icon based on filetype
With https://github.com/kyazdani42/nvim-web-devicons/pull/125 a filetype
based lookup was implemented upstream which can be used to get an icon
when a file doesn't have an extension.
fixes#578
Instead of shortening a path segment to just the dot, it is now always
using 2 characters.
E.g.
```
~/.config/nvim/lua/config/lualine.lua
```
is shortened to
```
~/.c/n/l/c/lualine.lua
```
This includes a rewrite of the shortening logic as it cannot be
expressed easily/readable using patterns. The current approach starts at
the beginning and replaces each segment by a shortened version and
keeping track of the overall length (basic book keeping on how many
characters were saved by the replacement).
* feat: allow lualine to ignore focus on specific filetypes.
closes#710
* fix: extensions on ingnored_focus
* perf: reuse api call results & use local variables instead of vim.g
* make location & progress components behave in ingnored filetypes
* fix: crash when last_focused win gets closed
* fix: location & progress related broken tests
* feat: add option to invert component icon alignment
Invert component status icon if variable is set `icon_right = true`.
* refactor: use string for icon alignment
Change conditional variable for icon left/right alignment from Boolean
to `icon_alignment = 'right'`.
* refactor: check icon table for alignment variable
Determine component status output from icon_alignment variable.
Provides alignment variables for generic component and filetype
devicons.
`component = { 'name', icon = {'*', align = 'right'} }`
`component = { 'filetype', icon_alignment = 'right' }`
* style: restore previous formatting on line 79
* refactor: set `self.option.icon` as table
* fix: forgot non-color icon alignment
* fix: remove redundant variable assignment
* docs: add README examples for icon alignment
Include configuration examples for icon alignment to README file.
* test: add test for filetype components icon align
Ensure testability for filetype icons being aligned to right side.
* refactor: moved loading to new module
* refactor: check_single_separator
* refactor: simplified separator fixing
* refactor: tests/ -> lua/tests/
* refactor: moved to nvim_err_writeln for errors
* feat: moved config parsing to config.lua
* feat: get config directly from config module
* feat: added load_all function
* tests: config parsing tests
* added assert to luacheck globals