Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nvimdev/galaxyline.nvim
neovim statusline plugin written in lua
https://github.com/nvimdev/galaxyline.nvim
Last synced: 7 days ago
JSON representation
neovim statusline plugin written in lua
- Host: GitHub
- URL: https://github.com/nvimdev/galaxyline.nvim
- Owner: nvimdev
- License: mit
- Created: 2020-10-14T14:43:10.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-07-25T07:07:21.000Z (4 months ago)
- Last Synced: 2024-10-31T11:36:59.087Z (13 days ago)
- Language: Lua
- Size: 175 KB
- Stars: 870
- Watchers: 6
- Forks: 113
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
🌌 galaxyline.nvim
## 💭 About
Galaxyline is a light-weight and **Super Fast** statusline plugin. Galaxyline
componentizes Vim's statusline by having a provider for each text area.This means you can use the api provided by galaxyline to create the statusline
that you want, easily.## 🧩 Requires
- [neovim 0.5.0+](https://github.com/neovim/neovim/releases/tag/v0.5.0)
## ⚙️ Setup
- [vim-plug](https://github.com/junegunn/vim-plug)
```vim
Plug 'glepnir/galaxyline.nvim' , { 'branch': 'main' }" If you want to display icons, then use one of these plugins:
Plug 'nvim-tree/nvim-web-devicons' " lua
Plug 'ryanoasis/vim-devicons' " vimscript
```- [packer.nvim](https://github.com/wbthomason/packer.nvim)
```lua
use({
'glepnir/galaxyline.nvim',
branch = 'main',
-- your statusline
config = function()
require('my_statusline')
end,
-- some optional icons
requires = { 'nvim-tree/nvim-web-devicons', opt = true },
})
```## 🧭 Api
### Section Variables
The type of all of these section variables:
- `require('galaxyline').short_line_list` some special filetypes that show a
short statusline like `LuaTree defx coc-explorer vista` etc.- `require('galaxyline').section.left` the statusline left section.
- `require('galaxyline').section.mid` the statusline mid section.
- `require('galaxyline').section.right` the statusline right section.
- `require('galaxyline').section.short_line_left` the statusline left section
when filetype is in `short_line_list` and for inactive window.- `require('galaxyline').section.short_line_right` statusline right section when
filetype is in `short_line_list` and for inactive window.### Component Keyword
Example of a FileSize component in the left section:
```lua
require('galaxyline').section.left[1] = {
FileSize = {
provider = 'FileSize',
condition = function()
if vim.fn.empty(vim.fn.expand('%:t')) ~= 1 then
return true
end
return false
end,
icon = ' ',
highlight = { colors.green, colors.purple },
separator = '',
separator_highlight = { colors.purple, colors.darkblue },
},
}
````provider` can be a string, function or table. When it's a string, it will match
the default provider group. If it doesn't match an existing group you will get
an error. You can also use multiple default providers in `provider`. If you are
using multiple then you must provide an array table for `provider`.#### Default Provider Groups:
```lua
-- source provider function
local diagnostic = require('galaxyline.provider_diagnostic')
local vcs = require('galaxyline.provider_vcs')
local fileinfo = require('galaxyline.provider_fileinfo')
local extension = require('galaxyline.provider_extensions')
local colors = require('galaxyline.colors')
local buffer = require('galaxyline.provider_buffer')
local whitespace = require('galaxyline.provider_whitespace')
local lspclient = require('galaxyline.provider_lsp')-- provider
BufferIcon = buffer.get_buffer_type_icon,
BufferNumber = buffer.get_buffer_number,
FileTypeName = buffer.get_buffer_filetype,
-- Git Provider
GitBranch = vcs.get_git_branch,
DiffAdd = vcs.diff_add, -- support vim-gitgutter vim-signify gitsigns
DiffModified = vcs.diff_modified, -- support vim-gitgutter vim-signify gitsigns
DiffRemove = vcs.diff_remove, -- support vim-gitgutter vim-signify gitsigns
-- File Provider
LineColumn = fileinfo.line_column,
FileFormat = fileinfo.get_file_format,
FileEncode = fileinfo.get_file_encode,
FileSize = fileinfo.get_file_size,
FileIcon = fileinfo.get_file_icon,
FileName = fileinfo.get_current_file_name,
FilePath = fileinfo.get_current_file_path,
LinePercent = fileinfo.current_line_percent,
ScrollBar = extension.scrollbar_instance,
VistaPlugin = extension.vista_nearest,
-- Whitespace
Whitespace = whitespace.get_item,
-- Diagnostic Provider
DiagnosticError = diagnostic.get_diagnostic_error,
DiagnosticWarn = diagnostic.get_diagnostic_warn,
DiagnosticHint = diagnostic.get_diagnostic_hint,
DiagnosticInfo = diagnostic.get_diagnostic_info,
-- LSP
GetLspClient = lspclient.get_lsp_client,-- public libs
require('galaxyline.provider_fileinfo').get_file_icon_color -- get file icon color
-- custom file icon with color
local my_icons = require('galaxyline.provider_fileinfo').define_file_icon() -- get file icon color
my_icons['your file type here'] = { color code, icon}
-- if your filetype does is not defined in neovim you can use file extensions
my_icons['your file ext in here'] = { color code, icon}-- built-in condition
local condition = require('galaxyline.condition')
condition.buffer_not_empty -- if buffer not empty return true else false
condition.hide_in_width -- if winwidth(0)/ 2 > 40 true else false
-- find git root, you can use this to check if the project is a git workspace
condition.check_git_workspace()-- built-in theme
local colors = require('galaxyline.theme').defaultbg = '#202328',
fg = '#bbc2cf',
yellow = '#ecbe7b',
cyan = '#008080',
darkblue = '#081633',
green = '#98be65',
orange = '#ff8800',
violet = '#a9a1e1',
magenta = '#c678dd',
blue = '#51afef';
red = '#ec5f67';
```You can also use the source of the provider function.
- `condition` is a function that must return a boolean. If it returns true then
it will load the component.- `icon` is a string that will be added to the head of the provider result.
It can also be a function that returns a string.- `highlight` is a string, function or table that can be used in two ways. The
first is to pass three elements: the first element is `fg`, the second is
`bg`, and the third is `gui`. The second method is to pass a highlight group
as a string (such as `IncSearch`) that galaxyline will link to.- `separator` is a string, function or table. notice that table type only work
in mid section, It is not just a separator. Any statusline item can be defined
here, like `%<`,`%{}`,`%n`, and so on.- `separator_highlight` same as highlight.
- `event` type is string. You configure a plugin's event that will reload the
statusline.## 🎉 Awesome Show
- Author: [glepnir](https://github.com/glepnir)
![eviline](https://user-images.githubusercontent.com/41671631/110282770-05d0b100-801a-11eb-91b1-e30eacec9a1c.png)
- Author: [Christian Chiarulli](https://github.com/ChristianChiarulli)
![galaxyline](https://user-images.githubusercontent.com/29136904/97791654-2b9d0380-1bab-11eb-8133-d8160d3f72cd.png)
- Author: [BenoitPingris](https://github.com/bpingris)
![galaxyline](https://user-images.githubusercontent.com/29386109/98808605-b3d99f00-241c-11eb-81dc-0caa852fe478.png)
- Author: [Th3Whit3Wolf](https://github.com/Th3Whit3Wolf)
![galaxyline](https://user-images.githubusercontent.com/48275422/101280897-c51b8e80-37c3-11eb-8bc3-be52fb4b6465.png)
- Author: [voitd](https://github.com/voitd)
![galaxyline](https://user-images.githubusercontent.com/60138143/103373409-8d131d00-4add-11eb-8dfc-40a37422f430.png)
You can find more custom galaxyline examples [here](https://github.com/glepnir/galaxyline.nvim/issues/12).
Copyright © 2020-present
Raphael