diff options
Diffstat (limited to 'lua')
-rw-r--r-- | lua/core/auto.lua | 79 | ||||
-rw-r--r-- | lua/core/init.lua | 5 | ||||
-rw-r--r-- | lua/core/maps.lua | 98 | ||||
-rw-r--r-- | lua/core/opts.lua | 167 | ||||
-rw-r--r-- | lua/core/overrides/cmp.lua | 122 | ||||
-rw-r--r-- | lua/core/overrides/cmpluasnipchoice.lua | 3 | ||||
-rw-r--r-- | lua/core/overrides/codewindow.lua | 16 | ||||
-rw-r--r-- | lua/core/overrides/colorizer.lua | 8 | ||||
-rw-r--r-- | lua/core/overrides/indentblankline.lua | 22 | ||||
-rw-r--r-- | lua/core/overrides/init.lua | 17 | ||||
-rw-r--r-- | lua/core/overrides/lspkind.lua | 1 | ||||
-rw-r--r-- | lua/core/overrides/lspzero.lua | 17 | ||||
-rw-r--r-- | lua/core/overrides/lualine.lua | 119 | ||||
-rw-r--r-- | lua/core/overrides/modicator.lua | 15 | ||||
-rw-r--r-- | lua/core/overrides/neoclip.lua | 9 | ||||
-rw-r--r-- | lua/core/overrides/neorg.lua | 17 | ||||
-rw-r--r-- | lua/core/overrides/smartsplits.lua | 7 | ||||
-rw-r--r-- | lua/core/overrides/telescope.lua | 33 | ||||
-rw-r--r-- | lua/core/overrides/treesitter.lua | 14 | ||||
-rw-r--r-- | lua/core/overrides/treesittercontext.lua | 9 | ||||
-rw-r--r-- | lua/core/overrides/trouble.lua | 11 | ||||
-rw-r--r-- | lua/core/overrides/whichkey.lua | 8 | ||||
-rw-r--r-- | lua/core/plugins.lua | 71 |
23 files changed, 868 insertions, 0 deletions
diff --git a/lua/core/auto.lua b/lua/core/auto.lua new file mode 100644 index 0000000..2733b59 --- /dev/null +++ b/lua/core/auto.lua @@ -0,0 +1,79 @@ +a.nvim_create_augroup('bufcheck', {clear = true}) + +-- highlight yanks +a.nvim_create_autocmd('TextYankPost', { + group = 'bufcheck', + pattern = '*', + callback = function() vim.highlight.on_yank{timeout = 250} end +}) + +-- start terminal in insert mode +a.nvim_create_autocmd('TermOpen', { + group = 'bufcheck', + pattern = '*', + command = 'startinsert | set winfixheight' +}) + +-- close terminal buffers after shell dies +a.nvim_create_autocmd('TermClose', { + group = 'bufcheck', + pattern = 'term://*', + command = 'call nvim_input("<CR>")' +}) + +-- start git messages in insert mode +a.nvim_create_autocmd('FileType', { + group = 'bufcheck', + pattern = { 'gitcommit', 'gitrebase', }, + command = 'startinsert | 1' +}) + +-- return to last place +a.nvim_create_autocmd('BufRead', { + pattern = '*', + command = [[call setpos(".", getpos("'\""))]] +}) + +-- disable color column in certain files +a.nvim_create_autocmd('FileType', { + pattern = { + 'netrw', + "help", + "term", + "gitcommit", + "packer", + "vim", + "Trouble", + "norg" + }, + command = 'set colorcolumn=0' +}) + +-- disable intent markers in certain files +a.nvim_create_autocmd('FileType', { + pattern = { + 'netrw', + "help", + "term", + "gitcommit", + "packer", + "vim", + "Trouble", + "norg" + }, + command = 'IndentBlanklineDisable' +}) + +-- source and compile lua conf when written +local packer_group = a.nvim_create_augroup('Packer', { clear = true }) +vim.api.nvim_create_autocmd('BufWritePost', { + command = 'source <afile> | PackerCompile', + group = packer_group, + pattern = vim.fn.expand '$MYVIMRC', +}) + +-- telescope preview opts +a.nvim_create_autocmd('User', { + pattern = 'TelescopePreviewerLoaded', + command = 'setlocal number', +}) diff --git a/lua/core/init.lua b/lua/core/init.lua new file mode 100644 index 0000000..1f484d2 --- /dev/null +++ b/lua/core/init.lua @@ -0,0 +1,5 @@ +require('core.plugins') +require('core.opts') +require('core.maps') +require('core.auto') +require('core.overrides.init') diff --git a/lua/core/maps.lua b/lua/core/maps.lua new file mode 100644 index 0000000..457ed98 --- /dev/null +++ b/lua/core/maps.lua @@ -0,0 +1,98 @@ +local opts = { noremap = true, silent = true } + +-- greatest remap ever +a.nvim_set_keymap("n", "<leader>p", "\"_dP", opts) + +-- open term buffer +a.nvim_set_keymap("n", "<leader>to", "<C-w>v<C-w>w:term<CR>", opts) + +-- esc to go to normal mode in term bufers +a.nvim_set_keymap("t", "<ESC>", "<C-\\><C-n>", opts) + +-- open Trouble buffer +a.nvim_set_keymap("n", "<leader>tt", "<cmd>:TroubleToggle<CR>", opts) + +-- open file viewer +a.nvim_set_keymap("n", "<leader>fo", ":Ex<CR>", opts) +a.nvim_set_keymap("n", "<leader>fs", ":Sex<CR>", opts) + +-- clear search +a.nvim_set_keymap("n", "<ESC>", ":nohlsearch<Bar>:echo<CR>", opts) + +-- move selected text +a.nvim_set_keymap("v", "<S-j>", ":m '>+1<CR>gv=gv", opts) +a.nvim_set_keymap("v", "<S-k>", ":m '<-2<CR>gv=gv", opts) + +-- keep cursor middle +a.nvim_set_keymap("n", "<S-j>", "mzJ`z", opts) -- when combining lines +a.nvim_set_keymap("n", "n", "nzzzv", opts) -- searching +a.nvim_set_keymap("n", "N", "Nzzzv", opts) +a.nvim_set_keymap("n", "<C-d>", "<C-d>zz", opts) -- half page jumping +a.nvim_set_keymap("n", "<C-u>", "<C-u>zz", opts) + +-- execute order 111 +a.nvim_set_keymap("n", "<leader>x", "<cmd>!chmod +x %<CR>", opts) + +-- resizing splits +a.nvim_set_keymap("n", '<C-h>', "<cmd>SmartResizeLeft<CR>", opts) +a.nvim_set_keymap("n", '<C-j>', "<cmd>SmartResizeDown<CR>", opts) +a.nvim_set_keymap("n", '<C-k>', "<cmd>SmartResizeUp<CR>", opts) +a.nvim_set_keymap("n", '<C-l>', "<cmd>SmartResizeRight<CR>", opts) + +-- don't blame me pls +a.nvim_set_keymap("n", "<C-g>", ":Gitsigns toggle_current_line_blame<CR>", opts) + +-- telescope +a.nvim_set_keymap('n', '<leader>sf', '<cmd>Telescope find_files<CR>', opts) +a.nvim_set_keymap('n', '<leader>sg', '<cmd>Telescope git_commits<CR>', opts) +a.nvim_set_keymap('n', '<leader>sb', + '<cmd>Telescope current_buffer_fuzzy_find<CR>', opts) +a.nvim_set_keymap('n', '<leader>so', '<cmd>Telescope oldfiles<CR>', opts) +a.nvim_set_keymap('n', '<leader>sc', '<cmd>Telescope neoclip unnamed<CR>', opts) +a.nvim_set_keymap('n', '<leader>su', '<cmd>Telescope undo<CR>', opts) +a.nvim_set_keymap('n', '<leader>sd', '<cmd>Telescope diagnostics<CR>', opts) + +-- auto comand keybinds +-- add some keybinds to the file view +a.nvim_create_autocmd('FileType', { + pattern = 'netrw', + callback = function() + local bind = function(lhs, rhs) + vim.keymap.set('n', lhs, rhs, {remap = true, buffer = true}) + end + bind('h', '-^') -- Go up a directory + bind('l', '<CR>') -- Go down a directory / open a file + bind('.', 'gh') -- Toggle dotfiles + bind('P', '<C-w>z') -- Close preview window + bind('<ESC>', '<cmd>q<CR>') -- Close netrw + end +}) + +-- vbox note taking +function _G.Toggle_venn() + local venn_enabled = vim.inspect(vim.b.venn_enabled) + if venn_enabled == "nil" then + vim.b.venn_enabled = true + cmd[[setlocal ve=all]] + + -- draw a line on HJKL keystokes + a.nvim_buf_set_keymap(0, "n", "J", "<C-v>j:VBox<CR>", {noremap = true}) + a.nvim_buf_set_keymap(0, "n", "K", "<C-v>k:VBox<CR>", {noremap = true}) + a.nvim_buf_set_keymap(0, "n", "L", "<C-v>l:VBox<CR>", {noremap = true}) + a.nvim_buf_set_keymap(0, "n", "H", "<C-v>h:VBox<CR>", {noremap = true}) + + -- draw a box by pressing "f" with visual selection + a.nvim_buf_set_keymap(0, "v", "f", ":VBox<CR>", {noremap = true}) + -- make easier to navigate + o.cursorcolumn = true + o.colorcolumn = { 0 } + else + cmd[[setlocal ve=]] + cmd[[mapclear <buffer>]] + vim.b.venn_enabled = nil + o.cursorcolumn = false + o.colorcolumn = { 80 } + end +end +-- toggle keymappings for venn using <leader>v +a.nvim_set_keymap('n', '<leader>v', ":lua Toggle_venn()<CR>", { noremap = true}) diff --git a/lua/core/opts.lua b/lua/core/opts.lua new file mode 100644 index 0000000..5f491e1 --- /dev/null +++ b/lua/core/opts.lua @@ -0,0 +1,167 @@ +o = vim.opt +g = vim.g +a = vim.api +cmd = vim.cmd + +g.mapleader = " " + +--------------- +-- better ui -- +--------------- +o.number = true +o.relativenumber = true +o.numberwidth = 2 -- width o numberline +o.signcolumn = 'yes:1' -- show gutter +o.cursorline = true -- highlights the current line +o.scrolloff = 5 -- # lines below/above cursor +o.showmode = false -- stop vim from showing mode +o.cmdheight = 2 -- vim command height +o.mouse = "" -- no mouse + +o.wrap = true -- wrap lines +o.linebreak = true -- fix where line is wraped +o.emoji = false -- something to do with the spacing of emojis +o.clipboard = 'unnamedplus' -- use system clipboard + +-- intenting & tabing +o.expandtab = true +o.smarttab = true +o.cindent = true +o.autoindent = true +o.tabstop = 2 +o.shiftwidth = 2 +o.softtabstop = -1 -- If negative, shiftwidth value is used + +-- colors +o.termguicolors = true +cmd('colorscheme jellybeans-nvim') + +-- diagnostics +vim.diagnostic.config({ + underline = true, + virtual_text = { prefix = '*', }, +}) + +colors = { + black = '#000000', + black2 = '#161616', + black3 = '#0E0E0E', + black4 = '#101010', + grey = '#1E1E1E', + grey2 = '#404040', + white = '#ffffff', + red = '#E06C75', + orange = '#EA936C', + yellow = '#E5C07B', + green = '#98C379', + blue = '#61AFEF', + purple = '#C678DD', +} + +-- width line +o.colorcolumn = { 80 } + +-- custom opts +copts = { + tablines = 'colored', -- false, 'colored', and 'wrap' + minimapcolor = colors.grey2, +} + +------------ +-- saving -- +------------ +o.swapfile = false +o.undofile = true +o.confirm = true + +------------ +-- search -- +------------ +o.ignorecase = true +o.smartcase = true +o.wrapscan = true +o.showmatch = true + +---------------- +-- wild menus -- +---------------- +o.wildoptions = 'pum' +o.pumblend = 3 +o.pumheight = 20 + +o.wildignorecase = true +o.wildignore = '*.o' + +----------- +-- netrw -- +----------- +g.netrw_banner = 0 +g.netrw_localcopydircmd = 'cp -r' +g.netrw_winsize = 30 +g.netrw_liststyle = 1 + +---------------- +-- highlights -- +---------------- +a.nvim_set_hl(0, "ColorColumn", { bg = colors.grey }) -- color column +a.nvim_set_hl(0, "Pmenu", { bg = colors.black2 }) +a.nvim_set_hl(0, "PmenuSel", { bg = colors.grey2 }) +a.nvim_set_hl(0, "CursorLineNr", { fg = colors.white, bold = true }) + +-- indent line colors +a.nvim_set_hl(0, "IndentBlanklineIndent1", { fg = colors.red } ) +a.nvim_set_hl(0, "IndentBlanklineIndent2", { fg = colors.orange } ) +a.nvim_set_hl(0, "IndentBlanklineIndent3", { fg = colors.yellow } ) +a.nvim_set_hl(0, "IndentBlanklineIndent4", { fg = colors.green } ) +a.nvim_set_hl(0, "IndentBlanklineIndent5", { fg = colors.blue } ) +a.nvim_set_hl(0, "IndentBlanklineIndent6", { fg = colors.purple } ) + +-- code window +a.nvim_set_hl(0, 'CodewindowBorder', {fg = copts.minimapcolor}) + +-- diagnostics +a.nvim_set_hl(0, "DiagnosticVirtualTextHint", { fg = "#ffffff", bg = "#1E1E1E" }) +a.nvim_set_hl(0, "DiagnosticVirtualTextInfo", { fg = "#006fd8", bg = "#152f47" }) +a.nvim_set_hl(0, "DiagnosticVirtualTextWarn", { fg = "#E9AD5A", bg = "#533221" }) +a.nvim_set_hl(0, "DiagnosticVirtualTextError", + { fg = "#ED3B44", bg = "#4b1313" }) + +-- cmp/treesitter stuff +a.nvim_set_hl(0, "CmpItemMenu", { fg = colors.purple, italic = true }) + +a.nvim_set_hl(0, "CmpItemKindSnippet", { bg = "#A377BF", bold = true }) +a.nvim_set_hl(0, "CmpItemKindText", { bg = "#63bc47", bold = true }) +a.nvim_set_hl(0, "CmpItemKindField", { bg = "#db7093", bold = true }) +a.nvim_set_hl(0, "CmpItemKindVariable", { bg = "#ff8c00", bold = true }) +a.nvim_set_hl(0, "CmpItemKindEnum", { bg = "#FF5733", bold = true }) +a.nvim_set_hl(0, "CmpItemKindFunction", { bg = "#483d8b", bold = true }) +a.nvim_set_hl(0, "CmpItemKindKeyword", { bg = "#FF339C", bold = true }) +a.nvim_set_hl(0, "CmpItemKindProperty", { bg = "#4FBF63", bold = true }) +a.nvim_set_hl(0, "CmpItemKindInterface", { bg = "#1e90ff", bold = true }) +a.nvim_set_hl(0, "CmpItemKindClass", { bg = "#4D4C5C", bold = true }) + +a.nvim_set_hl(0, "TreesitterContext", { bg = colors.grey }) + +-- telescope +a.nvim_set_hl(0, "TelescopeMatching", { bg = colors.black3 }) +a.nvim_set_hl(0, "TelescopeNormal", { bg = colors.black3 }) + +a.nvim_set_hl(0, "TelescopePreviewBorder", { bg = colors.black3 }) +a.nvim_set_hl(0, "TelescopePreviewNormal", { bg = colors.black3 }) +a.nvim_set_hl(0, "TelescopePreviewTitle", { bg = colors.black3, + fg = colors.black3 }) + +a.nvim_set_hl(0, "TelescopePromptBorder", { bg = colors.black2 }) +a.nvim_set_hl(0, "TelescopePromptNormal", { bg = colors.black2 }) +a.nvim_set_hl(0, "TelescopePromptPrefix", { bg = colors.black2 }) +a.nvim_set_hl(0, "TelescopePromptTitle", { bg = colors.black2, + fg = colors.black2 }) + +a.nvim_set_hl(0, "TelescopeResultsBorder", { bg = colors.black4 }) +a.nvim_set_hl(0, "TelescopeResultsNormal", { bg = colors.black4 }) +a.nvim_set_hl(0, "TelescopeResultsTitle", { bg = colors.black4, + fg = colors.black4 }) + +a.nvim_set_hl(0, "TelescopeSelection", { bg = colors.black2 }) +a.nvim_set_hl(0, "TelescopeSelectionCaret", { bg = colors.black2, + fg = colors.orange, bold = true }) diff --git a/lua/core/overrides/cmp.lua b/lua/core/overrides/cmp.lua new file mode 100644 index 0000000..2b6a9cd --- /dev/null +++ b/lua/core/overrides/cmp.lua @@ -0,0 +1,122 @@ +local has_words_before = function() + unpack = unpack or table.unpack + local line, col = unpack(a.nvim_win_get_cursor(0)) + return col ~= 0 and a.nvim_buf_get_lines(0, line - 1, line, true) + [1]:sub(col, col):match("%s") == nil +end + +local cmp = require('cmp') +local luasnip = require('luasnip') +require("luasnip.loaders.from_vscode").lazy_load() + +cmp.setup { + completion = { autocomplete = false, }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp', keyword_length = 3 }, + { name = 'luasnip', keyword_length = 3 }, + { name = 'path' }, + { name = 'buffer', keyword_length = 3, max_item_count = 7 }, + { name = 'calc' }, + }), + window = { + completion = { + winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None", + col_offset = -3, + side_padding = 0, + } + }, + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + local kind_icons = { + Text = 'Tx', + Snippet = '<>', + Method = ' ', + Function = '{}', + Constructor = ' ', + Field = '""', + Variable = 'x=', + Class = '~{', + Interface = '.h', + Module = ' ', + Property = '@p', + Unit = ' ', + Value = ' ', + Enum = 'E#', + Keyword = '$1', + Color = ' ', + File = ' ', + Reference = ' ', + Folder = ' ', + EnumMember = ' ', + Constant = ' ', + Struct = ' ', + Event = ' ', + Operator = ' ', + TypeParameter = ' ', + } + local menu_items = { + buffer = "buffer", + nvim_lsp = "LSP", + luasnip = "luasnip", + nvim_lua = "lua", + calc = "calc", + } + + vim_item.kind = string.format(' %s ', kind_icons[vim_item.kind]) + vim_item.menu = string.format(' (%s)', menu_items[entry.source.name]) + + return vim_item + end + }, + mapping = cmp.mapping.preset.insert({ + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + ['<CR>'] = cmp.mapping.confirm({ select = true }), + ['<ESC>'] = cmp.mapping.close(), + }), + sorting = { + comparators = { + cmp.config.compare.offset, + cmp.config.compare.exact, + cmp.config.compare.score, + require "cmp-under-comparator".under, + cmp.config.compare.kind, + cmp.config.compare.sort_text, + cmp.config.compare.length, + cmp.config.compare.order, + }, + }, + enabled = function() + local context = require 'cmp.config.context' + if a.nvim_get_mode().mode == 'c' then + return true + else + return not context.in_treesitter_capture("comment") + and not context.in_syntax_group("Comment") + end + end +} diff --git a/lua/core/overrides/cmpluasnipchoice.lua b/lua/core/overrides/cmpluasnipchoice.lua new file mode 100644 index 0000000..52aa759 --- /dev/null +++ b/lua/core/overrides/cmpluasnipchoice.lua @@ -0,0 +1,3 @@ +require('cmp_luasnip_choice').setup { + auto_open = true, +} diff --git a/lua/core/overrides/codewindow.lua b/lua/core/overrides/codewindow.lua new file mode 100644 index 0000000..cfc4dad --- /dev/null +++ b/lua/core/overrides/codewindow.lua @@ -0,0 +1,16 @@ +local codewindow = require('codewindow') +codewindow.setup({ + show_cursor = false, + minimap_width = 15, + window_border = 'single', + exclude_filetypes = { + "netrw", + "help", + "term", + "gitcommit", + "packer", + "vim", + "Trouble", + }, +}) +codewindow.apply_default_keybinds() diff --git a/lua/core/overrides/colorizer.lua b/lua/core/overrides/colorizer.lua new file mode 100644 index 0000000..a18101e --- /dev/null +++ b/lua/core/overrides/colorizer.lua @@ -0,0 +1,8 @@ +require('colorizer').setup { + filetypes = { '*' }, + user_default_options = { + names = false, + RRGGBBAA = true, + AARRGGBB = true, + }, +} diff --git a/lua/core/overrides/indentblankline.lua b/lua/core/overrides/indentblankline.lua new file mode 100644 index 0000000..0e43c22 --- /dev/null +++ b/lua/core/overrides/indentblankline.lua @@ -0,0 +1,22 @@ +if copts.tablines == 'colored' then + require("indent_blankline").setup { + space_char_blankline = ' ', + char_highlight_list = { + 'IndentBlanklineIndent1', + 'IndentBlanklineIndent2', + 'IndentBlanklineIndent3', + 'IndentBlanklineIndent4', + 'IndentBlanklineIndent5', + 'IndentBlanklineIndent6', + }, + } +elseif copts.tablines == 'wrap' then + o.list = true + require('indent_blankline').setup { + space_char_blankline = ' ', + show_current_context = true, + show_current_context_start = true, + } +else + g.indent_blankline_char = ' ' +end diff --git a/lua/core/overrides/init.lua b/lua/core/overrides/init.lua new file mode 100644 index 0000000..a8d5d89 --- /dev/null +++ b/lua/core/overrides/init.lua @@ -0,0 +1,17 @@ +require('core.overrides.indentblankline') +require('core.overrides.lualine') +require('core.overrides.telescope') +require('core.overrides.codewindow') +require('core.overrides.modicator') +require('core.overrides.neorg') +require('core.overrides.whichkey') +require('core.overrides.neoclip') +require('core.overrides.smartsplits') +require('core.overrides.treesitter') +require('core.overrides.treesittercontext') +require('core.overrides.colorizer') +require('core.overrides.trouble') +require('core.overrides.lspzero') +require('core.overrides.cmp') +require('core.overrides.lspkind') +require('core.overrides.cmpluasnipchoice') diff --git a/lua/core/overrides/lspkind.lua b/lua/core/overrides/lspkind.lua new file mode 100644 index 0000000..f2f11d5 --- /dev/null +++ b/lua/core/overrides/lspkind.lua @@ -0,0 +1 @@ +require('lspkind').init() diff --git a/lua/core/overrides/lspzero.lua b/lua/core/overrides/lspzero.lua new file mode 100644 index 0000000..108e566 --- /dev/null +++ b/lua/core/overrides/lspzero.lua @@ -0,0 +1,17 @@ +local lsp = require('lsp-zero') +lsp.set_preferences { + suggest_lsp_servers = true, + setup_servers_on_start = true, + set_lsp_keymaps = true, + configure_diagnostics = true, + cmp_capabilities = true, + manage_nvim_cmp = false, + call_servers = 'local', + sign_icons = { + error = 'x', + warn = '!', + hint = '?', + info = 'i' + } +} +lsp.setup() diff --git a/lua/core/overrides/lualine.lua b/lua/core/overrides/lualine.lua new file mode 100644 index 0000000..21473f9 --- /dev/null +++ b/lua/core/overrides/lualine.lua @@ -0,0 +1,119 @@ +local custom = require'lualine.themes.auto' + +custom.normal = { + a = { fg = colors.black, bg = colors.blue, gui = 'bold' }, + b = { fg = colors.black, bg = colors.blue, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.blue, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.blue, gui = 'bold' }, +} +custom.insert = { + a = { fg = colors.black, bg = colors.green, gui = 'bold' }, + b = { fg = colors.black, bg = colors.green, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.green, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.green, gui = 'bold' }, +} +custom.replace = { + a = { fg = colors.black, bg = colors.orange, gui = 'bold' }, + b = { fg = colors.black, bg = colors.orange, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.orange, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.orange, gui = 'bold' }, +} +custom.visual = { + a = { fg = colors.black, bg = colors.purple, gui = 'bold' }, + b = { fg = colors.black, bg = colors.purple, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.purple, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.purple, gui = 'bold' }, +} +custom.command = { + a = { fg = colors.black, bg = colors.red, gui = 'bold' }, + b = { fg = colors.black, bg = colors.red, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.red, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.red, gui = 'bold' }, +} +custom.terminal = { + a = { fg = colors.black, bg = colors.yellow, gui = 'bold' }, + b = { fg = colors.black, bg = colors.yellow, gui = 'bold' }, + c = { fg = colors.white, bg = colors.grey }, + x = {}, + y = { fg = colors.yellow, bg = colors.black2 }, + z = { fg = colors.black2, bg = colors.yellow, gui = 'bold' }, +} +custom.inactive = { + a = { bg = colors.grey }, + b = { bg = colors.grey }, + c = { bg = colors.grey }, + x = { bg = colors.grey }, + y = { bg = colors.grey }, + z = { bg = colors.grey }, +} + +local function diff_source() + local gitsigns = vim.b.gitsigns_status_dict + if gitsigns then + return { + added = gitsigns.added, + modified = gitsigns.changed, + removed = gitsigns.removed + } + end +end + +require('lualine').setup { + options = { + icons_enabled = false, + component_separators = { left = '', right = '' }, + section_separators = { left = '', right = '' }, + theme = custom, + always_divide_middle = false, + globalstatus = false, + refresh = { + statusline = 100, + tabline = 1000, + winbar = 1000, + } + }, + sections = { + lualine_a = {'mode'}, + lualine_b = { + { 'filetype', + color = { fg = colors.white, bg = colors.grey }, + }, + { 'filename', + filestatus = true, + path = 1, + + symbols = { + modified = '[+]', + readonly = '[=]', + unnamed = 'No Name', + newfile = '[New]', + } + } + }, + lualine_c = { { 'diff', source = diff_source } }, + lualine_x = { + { 'fileformat', + color = { gui = 'bold' } + } + }, + lualine_y = {'progress'}, + lualine_z = { + { 'location', + padding = 1, + } + } + }, + inactive_sections = { + lualine_x = {'location'}, + }, +} diff --git a/lua/core/overrides/modicator.lua b/lua/core/overrides/modicator.lua new file mode 100644 index 0000000..5cc6925 --- /dev/null +++ b/lua/core/overrides/modicator.lua @@ -0,0 +1,15 @@ +require('modicator').setup { + show_warnings = true, + highlights = { + modes = { + ['i'] = colors.green, + ['v'] = colors.purple, + ['V'] = colors.purple, + ['�'] = colors.purple, + ['s'] = colors.yellow, + ['S'] = colors.yellow, + ['R'] = colors.orange, + ['c'] = colors.red, + } + } +} diff --git a/lua/core/overrides/neoclip.lua b/lua/core/overrides/neoclip.lua new file mode 100644 index 0000000..a41877d --- /dev/null +++ b/lua/core/overrides/neoclip.lua @@ -0,0 +1,9 @@ +require('neoclip').setup { + keys = { + telescope = { + i = { + paste_behind = ' ' + }, + }, + }, +} diff --git a/lua/core/overrides/neorg.lua b/lua/core/overrides/neorg.lua new file mode 100644 index 0000000..8412901 --- /dev/null +++ b/lua/core/overrides/neorg.lua @@ -0,0 +1,17 @@ +require('neorg').setup { + load = { + ['core.defaults'] = {}, + ['core.norg.concealer'] = { + config = { + dim_code_blocks = { + width = 'content', + padding = { right = 2, }, + }, + folds = false, + } + }, + ['core.norg.completion'] = { + config = { engine = 'nvim-cmp', } + }, + } +} diff --git a/lua/core/overrides/smartsplits.lua b/lua/core/overrides/smartsplits.lua new file mode 100644 index 0000000..5e677ab --- /dev/null +++ b/lua/core/overrides/smartsplits.lua @@ -0,0 +1,7 @@ +require('smart-splits').setup { + resize_mode = { + hooks = { + on_leave = require('bufresize').register + }, + }, +} diff --git a/lua/core/overrides/telescope.lua b/lua/core/overrides/telescope.lua new file mode 100644 index 0000000..546a33c --- /dev/null +++ b/lua/core/overrides/telescope.lua @@ -0,0 +1,33 @@ +local telescope = require('telescope') +local actions = require('telescope.actions') + +telescope.load_extension('undo') +telescope.setup { + defaults = { + borderchars = { " ", " ", " ", " ", " ", " ", " ", " " }, + sorting_strategy = 'ascending', + layout_config = { + height = 0.9, + prompt_position = 'top', + }, + mappings = { + i = { + ['<C-h>'] = 'which_key', + ['<C-j>'] = actions.move_selection_next, + ['<C-k>'] = actions.move_selection_previous, + ['<C-l>'] = actions.select_default, + ['<C-u>'] = actions.preview_scrolling_up, + ['<C-d>'] = actions.preview_scrolling_down, + }, + n = { + ["gg"] = actions.move_to_top, + ["G"] = actions.move_to_bottom, + }, + }, + } +} + +a.nvim_create_autocmd('User', { + pattern = 'TelescopePreviewerLoaded', + command = 'setlocal number', +}) diff --git a/lua/core/overrides/treesitter.lua b/lua/core/overrides/treesitter.lua new file mode 100644 index 0000000..a4d2dfe --- /dev/null +++ b/lua/core/overrides/treesitter.lua @@ -0,0 +1,14 @@ +require('nvim-treesitter.configs').setup { + ensure_installed = { 'help', + 'c', + 'lua', + 'norg', + 'bash', + 'html', + 'make', + }, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, +} diff --git a/lua/core/overrides/treesittercontext.lua b/lua/core/overrides/treesittercontext.lua new file mode 100644 index 0000000..8a60704 --- /dev/null +++ b/lua/core/overrides/treesittercontext.lua @@ -0,0 +1,9 @@ +require('treesitter-context').setup { + enable = true, + max_lines = 1, + patterns = { + default = { + 'function', + }, + }, +} diff --git a/lua/core/overrides/trouble.lua b/lua/core/overrides/trouble.lua new file mode 100644 index 0000000..eabbd7e --- /dev/null +++ b/lua/core/overrides/trouble.lua @@ -0,0 +1,11 @@ +require("trouble").setup { + icons = false, + fold_open = "v", + fold_closed = ">", + signs = { + error = "[x]", + warning = "[!]", + hint = "[?]", + information = "[i]" + }, +} diff --git a/lua/core/overrides/whichkey.lua b/lua/core/overrides/whichkey.lua new file mode 100644 index 0000000..65b6ca4 --- /dev/null +++ b/lua/core/overrides/whichkey.lua @@ -0,0 +1,8 @@ +require("which-key").setup { + icons = { + breadcrumb = '>>', + separator = '->', + }, + window = { winblend = 3, }, + layout = { align = 'center', }, +} diff --git a/lua/core/plugins.lua b/lua/core/plugins.lua new file mode 100644 index 0000000..306d106 --- /dev/null +++ b/lua/core/plugins.lua @@ -0,0 +1,71 @@ +-- make sure lazy is installed +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ "git", "clone", "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", lazypath }) + vim.fn.system({ "git", "-C", lazypath, "checkout", "tags/stable" }) + end +end +vim.opt.rtp:prepend(lazypath) + +require('lazy').setup({ + { 'metalelf0/jellybeans-nvim', + dependencies = 'rktjmp/lush.nvim', + lazy = false, + priority = 1000, + }, + { 'lukas-reineke/indent-blankline.nvim' }, + { 'nvim-lualine/lualine.nvim' }, + { 'nvim-telescope/telescope.nvim', + version = '0.1.*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'debugloop/telescope-undo.nvim', + } + }, + { 'gorbit99/codewindow.nvim' }, + { 'melkster/modicator.nvim' }, + { 'numToStr/Comment.nvim', config = true, }, + { 'jbyuki/venn.nvim' }, + { 'nvim-neorg/neorg', + version = '*', + ft = 'norg', + build = ':Neorg sync-parsers', + dependencies = 'nvim-lua/plenary.nvim', + }, + { 'folke/which-key.nvim' }, + { 'AckslD/nvim-neoclip.lua' }, + { 'mrjones2014/smart-splits.nvim', + dependencies = { 'kwkarlwang/bufresize.nvim', config = true, }, + }, + { 'lewis6991/gitsigns.nvim', config = true, }, + { 'chentoast/marks.nvim', config = true, }, + { 'nvim-treesitter/nvim-treesitter', + dependencies = 'nvim-treesitter/nvim-treesitter-context' + }, + { 'nvchad/nvim-colorizer.lua' }, + { 'folke/trouble.nvim' }, + { 'VonHeikemen/lsp-zero.nvim' }, + { 'hrsh7th/nvim-cmp', + dependencies = { + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-path', + 'hrsh7th/cmp-calc', + 'saadparwaiz1/cmp_luasnip', + 'hrsh7th/cmp-nvim-lua', + 'hrsh7th/cmp-nvim-lsp', + 'lukas-reineke/cmp-under-comparator', + 'onsails/lspkind.nvim', + }, + }, + { 'L3MON4D3/LuaSnip', + version = 'v1.*', + dependencies = 'rafamadriz/friendly-snippets', + }, + { 'doxnit/cmp-luasnip-choice' }, + { 'neovim/nvim-lspconfig' }, + { 'williamboman/mason.nvim' }, + { 'williamboman/mason-lspconfig.nvim' }, + { 'windwp/nvim-autopairs', config = true, }, +}) |