diff options
author | listout <listout@protonmail.com> | 2023-04-02 11:21:33 +0530 |
---|---|---|
committer | listout <listout@protonmail.com> | 2023-04-02 11:21:33 +0530 |
commit | 5668fccf48c9a3faef6498af50ab921a731412d7 (patch) | |
tree | 7335f13f26ce3f7b7191755d78c1f6bf55cd3a70 | |
parent | ce6af2ae41e7a59d590eed4d352c1966e134f395 (diff) |
nvim: using lualine
Signed-off-by: listout <listout@protonmail.com>
-rw-r--r-- | lua/core/appearance.lua | 1 | ||||
-rw-r--r-- | lua/core/colorscheme.lua | 83 | ||||
-rw-r--r-- | lua/plugins/lsp-config.lua | 1 | ||||
-rw-r--r-- | lua/plugins/lualine.lua | 223 | ||||
-rw-r--r-- | lua/plugins/plugins.lua | 3 |
5 files changed, 293 insertions, 18 deletions
diff --git a/lua/core/appearance.lua b/lua/core/appearance.lua index f6c9d3b..ba73502 100644 --- a/lua/core/appearance.lua +++ b/lua/core/appearance.lua @@ -49,3 +49,4 @@ vim.cmd [[ highlight Indentifier cterm=none gui=italic highlight Comment cterm=italic gui=italic ]] +vim.cmd[[ "syntax sync fromstart" ]] diff --git a/lua/core/colorscheme.lua b/lua/core/colorscheme.lua index 80d6f1a..38745c3 100644 --- a/lua/core/colorscheme.lua +++ b/lua/core/colorscheme.lua @@ -1,20 +1,67 @@ -- Default options: -require('kanagawa').setup({ - undercurl = true, -- enable undercurls - commentStyle = { italic = true }, - functionStyle = {}, - keywordStyle = { italic = true}, - statementStyle = { bold = true }, - typeStyle = {}, - variablebuiltinStyle = { italic = true}, - specialReturn = true, -- special highlight for the return keyword - specialException = true, -- special highlight for exception handling keywords - transparent = false, -- do not set background color - dimInactive = false, -- dim inactive window `:h hl-NormalNC` - globalStatus = false, -- adjust window separators highlight for laststatus=3 - terminalColors = true, -- define vim.g.terminal_color_{0,17} - colors = {}, - overrides = {}, - theme = "default" -- Load "default" theme or the experimental "light" theme +require("catppuccin").setup({ + flavour = "macchiato", -- latte, frappe, macchiato, mocha + background = { -- :h background + light = "latte", + dark = "macchiato", + }, + transparent_background = false, + show_end_of_buffer = false, -- show the '~' characters after the end of buffers + term_colors = true, + dim_inactive = { + enabled = false, + shade = "dark", + percentage = 0.15, + }, + no_italic = false, -- Force no italic + no_bold = false, -- Force no bold + styles = { + comments = { "italic" }, + conditionals = { "italic" }, + loops = {}, + functions = {}, + keywords = {}, + strings = {}, + variables = {}, + numbers = {}, + booleans = {}, + properties = {}, + types = {}, + operators = {}, + }, + color_overrides = {}, + custom_highlights = {}, + integrations = { + cmp = true, + gitsigns = true, + nvimtree = true, + telescope = true, + treesitter = true, + markdown = true, + gitsigns = true, + notify = false, + mini = false, + -- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations) + native_lsp = { + enabled = true, + virtual_text = { + errors = { "italic" }, + hints = { "italic" }, + warnings = { "italic" }, + information = { "italic" }, + }, + underlines = { + errors = { "underline" }, + hints = { "underline" }, + warnings = { "underline" }, + information = { "underline" }, + }, + }, + }, }) -vim.cmd[[colorscheme kanagawa]] +vim.api.nvim_create_autocmd('ColorScheme', { + callback = function () + vim.api.nvim_set_hl(0, '@lsp.type.comment.c', {fg='Grey'}) + end +}) +vim.cmd[[colorscheme catppuccin]] diff --git a/lua/plugins/lsp-config.lua b/lua/plugins/lsp-config.lua index 32f7c53..5ba3cac 100644 --- a/lua/plugins/lsp-config.lua +++ b/lua/plugins/lsp-config.lua @@ -12,6 +12,7 @@ vim.diagnostic.config({ }, }) + local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } for type, icon in pairs(signs) do local hl = "DiagnosticSign" .. type diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua new file mode 100644 index 0000000..e41bc8c --- /dev/null +++ b/lua/plugins/lualine.lua @@ -0,0 +1,223 @@ +-- Eviline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +local lualine = require('lualine') +local C = require("catppuccin.palettes").get_palette() +local O = require("catppuccin").options + +-- Color table for highlights +-- stylua: ignore +local colors = { + bg = C.surface3, + fg = C.blue, + yellow = '#ECBE7B', + cyan = '#008080', + darkblue = '#081633', + green = '#98be65', + orange = '#FF8800', + violet = '#a9a1e1', + magenta = '#c678dd', + blue = '#51afef', + red = '#ec5f67', +} + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} + +-- Config +local config = { + options = { + -- Disable sections and component separators + component_separators = '', + section_separators = '', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, +} + +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x ot right section +local function ins_right(component) + table.insert(config.sections.lualine_x, component) +end + +ins_left { + function() + return '▊' + end, + color = { fg = colors.blue }, -- Sets highlighting of component + padding = { left = 0, right = 1 }, -- We don't need space before this +} + +ins_left { + -- mode component + function() + return '' + end, + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.red, + i = colors.green, + v = colors.blue, + [''] = colors.blue, + V = colors.blue, + c = colors.magenta, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.violet, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { right = 1 }, +} + +--ins_left { + -- filesize component + --'filesize', + --cond = conditions.buffer_not_empty, +--} + +ins_left { + 'filename', + cond = conditions.buffer_not_empty, + color = { fg = colors.magenta, gui = 'bold' }, +} + +ins_right { 'location' } + +--ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } + +ins_left { + 'diagnostics', + sources = { 'nvim_diagnostic' }, + symbols = { error = ' ', warn = ' ', info = ' ' }, + diagnostics_color = { + color_error = { fg = colors.red }, + color_warn = { fg = colors.yellow }, + color_info = { fg = colors.cyan }, + }, +} + +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left { + function() + return '%=' + end, +} + +ins_left { + -- Lsp server name . + function() + local msg = 'No Active Lsp' + local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') + local clients = vim.lsp.get_active_clients() + if next(clients) == nil then + return msg + end + for _, client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then + return client.name + end + end + return msg + end, + icon = ' LSP:', + color = { fg = '#ffffff', gui = 'bold' }, +} + +-- Add components to right sections +ins_right { + 'o:encoding', -- option component same as &encoding in viml + fmt = string.upper, -- I'm not sure why it's upper case either ;) + cond = conditions.hide_in_width, + color = { fg = colors.green, gui = 'bold' }, +} + +ins_right { + 'fileformat', + fmt = string.upper, + icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh + color = { fg = colors.green, gui = 'bold' }, +} + +ins_right { + 'branch', + icon = '', + color = { fg = colors.violet, gui = 'bold' }, +} + +ins_right { + 'diff', + -- Is it me or the symbol for modified us really weird + symbols = { added = ' ', modified = '柳 ', removed = ' ' }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.orange }, + removed = { fg = colors.red }, + }, + cond = conditions.hide_in_width, +} + +ins_right { + function() + return '▊' + end, + color = { fg = colors.blue }, + padding = { left = 1 }, +} + +-- Now don't forget to initialize lualine +lualine.setup(config) diff --git a/lua/plugins/plugins.lua b/lua/plugins/plugins.lua index ec30d0e..e3728e9 100644 --- a/lua/plugins/plugins.lua +++ b/lua/plugins/plugins.lua @@ -52,6 +52,7 @@ return packer.startup(function(use) use {'saadparwaiz1/cmp_luasnip'} -- Snippets source for nvim-cmp use {'L3MON4D3/LuaSnip'} -- Snippets plugin use {"rafamadriz/friendly-snippets"} + use({"petertriho/cmp-git", requires = "nvim-lua/plenary.nvim"}) -- Show color under hex codes use {'norcalli/nvim-colorizer.lua'} @@ -87,6 +88,8 @@ return packer.startup(function(use) -- Show git signs and stage hunks use { 'lewis6991/gitsigns.nvim' } + use { 'nvim-lualine/lualine.nvim' } + -- Automatically set up your configuration after cloning packer.nvim -- Put this at the end after all plugins if packer_bootstrap then |