GithubHelp home page GithubHelp logo

wh1tevs / galaxyline.nvim Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nvimdev/galaxyline.nvim

0.0 0.0 0.0 199 KB

neovim statusline plugin written in lua

License: MIT License

Lua 98.08% Vim Script 1.92%

galaxyline.nvim's Introduction

galaxyline.nvim

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+

Install

  • vim-plug
Plug 'glepnir/galaxyline.nvim' , {'branch': 'main'}

" If you want to display icons, then use one of these plugins:
Plug 'kyazdani42/nvim-web-devicons' " lua
Plug 'ryanoasis/vim-devicons' " vimscript
  • packer.nvim
use {
  'glepnir/galaxyline.nvim',
    branch = 'main',
    -- your statusline
    config = function() require'my_statusline' end,
    -- some optional icons
    requires = {'kyazdani42/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 stautsline 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:

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:

-- 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,
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').default

bg = '#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

eviline

  • author: ChristianChiarulli

  • author: BenoitPingris

  • author: Th3Whit3Wolf

  • author: voitd

You can find more custom galaxyline examples here

License

MIT

galaxyline.nvim's People

Contributors

66ring avatar arpangreat avatar botbotty avatar cantoromc avatar ckipp01 avatar claidler avatar davidsu avatar dianeofthemoon avatar disrupted avatar farkal avatar fenriuz avatar glepnir avatar iron-e avatar joshuachp avatar kraftwerk28 avatar kunzaatko avatar kyoh86 avatar l-kershaw avatar mr-oliva avatar mrkish avatar nxvu699134 avatar p00f avatar reptarsrage avatar richin13 avatar salkin-mada avatar sindrets avatar wren avatar yamatsum avatar zereb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.