diff options
| -rw-r--r-- | .gitignore | 4 | ||||
| -rw-r--r-- | fnl/opt.fnl | 7 | ||||
| -rw-r--r-- | fnl/plugins/bufresize.fnl | 1 | ||||
| -rw-r--r-- | fnl/plugins/gitsigns.fnl | 1 | ||||
| -rw-r--r-- | fnl/plugins/startup.fnl | 2 | ||||
| -rw-r--r-- | init.fnl | 11 | ||||
| -rw-r--r-- | lua/lua/lualine.lua | 275 | 
7 files changed, 300 insertions, 1 deletions
| @@ -1,3 +1,5 @@ -lua/ +lua/* +!lua/lua/ +  plugin/*  !plugin/0-tangerine.lua diff --git a/fnl/opt.fnl b/fnl/opt.fnl index e28645c..8b8981c 100644 --- a/fnl/opt.fnl +++ b/fnl/opt.fnl @@ -11,3 +11,10 @@  (tset vim.opt :termguicolors true)  ;--vim.opt.fillchars = { eob = ""}  (vim.cmd (.. "colorscheme " _G.settings.colorscheme)) + +(when (= (vim.fn.has :persistent_undo) 1)  +  (local target_path (vim.fn.expand "~/.undodir")) +  (when (not= (vim.fn.isdirectory target_path) 1) +    (vim.fn.mkdir target_path :p 0777)) +  (tset vim.o :undodir target_path) +  (tset vim.o :undofile true)) diff --git a/fnl/plugins/bufresize.fnl b/fnl/plugins/bufresize.fnl new file mode 100644 index 0000000..e495e26 --- /dev/null +++ b/fnl/plugins/bufresize.fnl @@ -0,0 +1 @@ +((. (require :bufresize) :setup)) diff --git a/fnl/plugins/gitsigns.fnl b/fnl/plugins/gitsigns.fnl new file mode 100644 index 0000000..9810906 --- /dev/null +++ b/fnl/plugins/gitsigns.fnl @@ -0,0 +1 @@ +((. (require :gitsigns) :setup)) diff --git a/fnl/plugins/startup.fnl b/fnl/plugins/startup.fnl new file mode 100644 index 0000000..dc601a4 --- /dev/null +++ b/fnl/plugins/startup.fnl @@ -0,0 +1,2 @@ +((. (require :startup) :setup) { +  :theme :evil}) @@ -22,6 +22,17 @@    (use! :sindrets/winshift.nvim :require :plugins.winshift)    (use! :rcarriga/nvim-notify :require :plugins.notify)    (use! :akinsho/toggleterm.nvim :require :plugins.toggleterm) +  +  ;i like this one, just has some issues and isnt that helpful +  ;(use! :wfxr/minimap.vim) +   +  ;make things pretty +  (use! :nvim-lualine/lualine.nvim :require :lua.lualine) +  (use! :max397574/startup.nvim :require :plugins.startup) +  (use! :lewis6991/gitsigns.nvim :require :plugins.gitsigns) +   +  ;figure out if i want this one +  (use! :kwkarlwang/bufresize.nvim :require :plugins.bufresize)    ;floating_mode    (use! :Iron-E/nvim-libmodal) diff --git a/lua/lua/lualine.lua b/lua/lua/lualine.lua new file mode 100644 index 0000000..db17d97 --- /dev/null +++ b/lua/lua/lualine.lua @@ -0,0 +1,275 @@ +-- Eviline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +local lualine = require('lualine') + +-- Color table for highlights +-- stylua: ignore +local colors = { +  bg       = '#202328', +  fg       = '#bbc2cf', +  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 +    disabled_filetypes = { +      'neo-tree', 'toggleterm' +    }, +    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_inactive(component) +  table.insert(config.inactive_sections.lualine_c, component) +end + +-- Inserts a component in lualine_x at right section +local function ins_right_inactive(component) +  table.insert(config.inactive_sections.lualine_x, component) +end + +-- 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 at right section +local function ins_right(component) +  table.insert(config.sections.lualine_x, component) +end + +local function ins_both_left(component) +  ins_left(component); ins_left_inactive(component); +end + +local function ins_both_right(component) +  ins_right(component); ins_right_inactive(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_inactive { +  -- 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 { +  -- 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_both_left { +  -- filesize component +  'filesize', +  cond = conditions.buffer_not_empty, +} + +ins_both_left { +  'filename', +  cond = conditions.buffer_not_empty, +  color = { fg = colors.magenta, gui = 'bold' }, +} + +ins_left { 'location' } + +ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } + +ins_left { +  'diagnostics', +  sources = { 'nvim_diagnostic' }, +  symbols = { error = ' ', warn = ' ', info = ' ' }, +  diagnostics_color = { +    error = { fg = colors.red }, +    warn = { fg = colors.yellow }, +    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) | 
