From e47fa485563a8a806c52f66a18471bbf012ac5c1 Mon Sep 17 00:00:00 2001 From: amelia squires Date: Thu, 24 Oct 2024 06:53:08 -0500 Subject: add stuff --- .gitignore | 4 +- fnl/opt.fnl | 7 ++ fnl/plugins/bufresize.fnl | 1 + fnl/plugins/gitsigns.fnl | 1 + fnl/plugins/startup.fnl | 2 + init.fnl | 11 ++ lua/lua/lualine.lua | 275 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 300 insertions(+), 1 deletion(-) create mode 100644 fnl/plugins/bufresize.fnl create mode 100644 fnl/plugins/gitsigns.fnl create mode 100644 fnl/plugins/startup.fnl create mode 100644 lua/lua/lualine.lua diff --git a/.gitignore b/.gitignore index c88cca0..fbf16c4 100644 --- a/.gitignore +++ b/.gitignore @@ -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}) diff --git a/init.fnl b/init.fnl index a21a454..3052fc1 100644 --- a/init.fnl +++ b/init.fnl @@ -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) -- cgit v1.2.3