diff options
Diffstat (limited to '.config/nvim/lua/pm')
27 files changed, 335 insertions, 0 deletions
diff --git a/.config/nvim/lua/pm/init.lua b/.config/nvim/lua/pm/init.lua new file mode 100644 index 0000000..bdc603c --- /dev/null +++ b/.config/nvim/lua/pm/init.lua @@ -0,0 +1,27 @@ +local fs = require('fs') + +local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' +if not vim.uv.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +local plugins = {} + +for entry in fs.iterdir(vim.fn.stdpath('config') .. '/lua/pm/plugins/') do + local plugin = require('pm.plugins.' .. entry.name .. '.load') + table.insert(plugins, plugin) +end + +require('lazy').setup(plugins) + +for entry in fs.iterdir(vim.fn.stdpath('config') .. '/lua/pm/plugins/') do + require('pm.plugins.' .. entry.name .. '.setup') +end diff --git a/.config/nvim/lua/pm/plugins/cargotest/load.lua b/.config/nvim/lua/pm/plugins/cargotest/load.lua new file mode 100644 index 0000000..b33d268 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cargotest/load.lua @@ -0,0 +1 @@ +return { 'cargotest.nvim', url = 'https://git.nathanreiner.xyz/cargotest.nvim' } diff --git a/.config/nvim/lua/pm/plugins/cargotest/setup.lua b/.config/nvim/lua/pm/plugins/cargotest/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cargotest/setup.lua diff --git a/.config/nvim/lua/pm/plugins/cmp-luasnip/load.lua b/.config/nvim/lua/pm/plugins/cmp-luasnip/load.lua new file mode 100644 index 0000000..ee618d8 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-luasnip/load.lua @@ -0,0 +1 @@ +return { "saadparwaiz1/cmp_luasnip" } diff --git a/.config/nvim/lua/pm/plugins/cmp-luasnip/setup.lua b/.config/nvim/lua/pm/plugins/cmp-luasnip/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-luasnip/setup.lua diff --git a/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/load.lua b/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/load.lua new file mode 100644 index 0000000..8b66a82 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/load.lua @@ -0,0 +1 @@ +return { "hrsh7th/cmp-nvim-lsp" } diff --git a/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/setup.lua b/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-nvim-lsp/setup.lua diff --git a/.config/nvim/lua/pm/plugins/cmp-nvim-lua/load.lua b/.config/nvim/lua/pm/plugins/cmp-nvim-lua/load.lua new file mode 100644 index 0000000..9d93c20 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-nvim-lua/load.lua @@ -0,0 +1 @@ +return { "hrsh7th/cmp-nvim-lua" } diff --git a/.config/nvim/lua/pm/plugins/cmp-nvim-lua/setup.lua b/.config/nvim/lua/pm/plugins/cmp-nvim-lua/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-nvim-lua/setup.lua diff --git a/.config/nvim/lua/pm/plugins/cmp-path/load.lua b/.config/nvim/lua/pm/plugins/cmp-path/load.lua new file mode 100644 index 0000000..b007d93 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-path/load.lua @@ -0,0 +1 @@ +return { "hrsh7th/cmp-path" } diff --git a/.config/nvim/lua/pm/plugins/cmp-path/setup.lua b/.config/nvim/lua/pm/plugins/cmp-path/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/cmp-path/setup.lua diff --git a/.config/nvim/lua/pm/plugins/friendly-snippets/load.lua b/.config/nvim/lua/pm/plugins/friendly-snippets/load.lua new file mode 100644 index 0000000..144e221 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/friendly-snippets/load.lua @@ -0,0 +1 @@ +return { "rafamadriz/friendly-snippets" } diff --git a/.config/nvim/lua/pm/plugins/friendly-snippets/setup.lua b/.config/nvim/lua/pm/plugins/friendly-snippets/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/friendly-snippets/setup.lua diff --git a/.config/nvim/lua/pm/plugins/lspconfig/load.lua b/.config/nvim/lua/pm/plugins/lspconfig/load.lua new file mode 100644 index 0000000..7e06214 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/lspconfig/load.lua @@ -0,0 +1 @@ +return { "neovim/nvim-lspconfig" } diff --git a/.config/nvim/lua/pm/plugins/lspconfig/setup.lua b/.config/nvim/lua/pm/plugins/lspconfig/setup.lua new file mode 100644 index 0000000..2f604db --- /dev/null +++ b/.config/nvim/lua/pm/plugins/lspconfig/setup.lua @@ -0,0 +1,84 @@ +vim.diagnostic.config({ + virtual_text = { + prefix = "" + } +}) + +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + + local opts = { buffer = ev.buf } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) + vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set('n', '<space>wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, opts) + vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts) + vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts) + vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) + vim.keymap.set('n', '<space>f', function() + vim.lsp.buf.format { async = true } + end, opts) + vim.keymap.set('n', '<space>d', vim.diagnostic.open_float, opts) + vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) + vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) + vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist) + end, +}) + + +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +local lspconfig = require('lspconfig') + +local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'cssls' } +for _, lsp in ipairs(servers) do + lspconfig[lsp].setup { + capabilities = capabilities, + on_init = function(client) + client.offset_encoding = "utf-8" + end, + } +end + +lspconfig.lua_ls.setup { + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = { + 'vim', + 'require' + }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +} + + +vim.api.nvim_create_autocmd("InsertLeave", { + callback = function() + if + require("luasnip").session.current_nodes[vim.api.nvim_get_current_buf()] + and not require("luasnip").session.jump_active + then + require("luasnip").unlink_current() + end + end, +}) diff --git a/.config/nvim/lua/pm/plugins/luasnip/load.lua b/.config/nvim/lua/pm/plugins/luasnip/load.lua new file mode 100644 index 0000000..2529e38 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/luasnip/load.lua @@ -0,0 +1 @@ +return { "L3MON4D3/LuaSnip" } diff --git a/.config/nvim/lua/pm/plugins/luasnip/setup.lua b/.config/nvim/lua/pm/plugins/luasnip/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/luasnip/setup.lua diff --git a/.config/nvim/lua/pm/plugins/nvim-cmp/load.lua b/.config/nvim/lua/pm/plugins/nvim-cmp/load.lua new file mode 100644 index 0000000..25509d5 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/nvim-cmp/load.lua @@ -0,0 +1,20 @@ +return { + 'hrsh7th/nvim-cmp', + event = "InsertEnter", + dependencies = { + { + "L3MON4D3/LuaSnip", + dependencies = "rafamadriz/friendly-snippets", + opts = { history = true, updateevents = "TextChanged,TextChangedI" }, + config = function(_, opts) + require("luasnip").config.set_config(opts) + end, + }, + { + "saadparwaiz1/cmp_luasnip", + "hrsh7th/cmp-nvim-lua", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + }, + }, +} diff --git a/.config/nvim/lua/pm/plugins/nvim-cmp/setup.lua b/.config/nvim/lua/pm/plugins/nvim-cmp/setup.lua new file mode 100644 index 0000000..c1c9644 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/nvim-cmp/setup.lua @@ -0,0 +1,86 @@ +local cmp = require("cmp") +require("luasnip.loaders.from_vscode").lazy_load() + +local function border(hl_name) + return { + { "╭", hl_name }, + { "─", hl_name }, + { "╮", hl_name }, + { "│", hl_name }, + { "╯", hl_name }, + { "─", hl_name }, + { "╰", hl_name }, + { "│", hl_name }, + } +end + +cmp.setup { + completion = { + completeopt = "menu,menuone", + }, + + window = { + completion = { + border = border "CmpBorder", + side_padding = 1, + winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,Search:None", + scrollbar = true, + }, + documentation = { + border = border "CmpDocBorder", + winhighlight = "Normal:CmpDoc", + }, + }, + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + + mapping = { + ["<C-p>"] = cmp.mapping.select_prev_item(), + ["<C-n>"] = cmp.mapping.select_next_item(), + ["<C-d>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.close(), + + ["<CR>"] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }, + + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif require("luasnip").expand_or_jumpable() then + vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "") + else + fallback() + end + end, { "i", "s" }), + + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif require("luasnip").jumpable(-1) then + vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "") + else + fallback() + end + end, { "i", "s" }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "buffer" }, + { name = "nvim_lua" }, + { name = "path" }, + }, +} + +local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl= hl, numhl = hl }) +end diff --git a/.config/nvim/lua/pm/plugins/nvim-tree/load.lua b/.config/nvim/lua/pm/plugins/nvim-tree/load.lua new file mode 100644 index 0000000..adffb8a --- /dev/null +++ b/.config/nvim/lua/pm/plugins/nvim-tree/load.lua @@ -0,0 +1,11 @@ +return { + "nvim-tree/nvim-tree.lua", + version = "*", + lazy = false, + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + config = function() + require("nvim-tree").setup {} + end, +} diff --git a/.config/nvim/lua/pm/plugins/nvim-tree/setup.lua b/.config/nvim/lua/pm/plugins/nvim-tree/setup.lua new file mode 100644 index 0000000..d7d6ade --- /dev/null +++ b/.config/nvim/lua/pm/plugins/nvim-tree/setup.lua @@ -0,0 +1,66 @@ +require("nvim-tree").setup({ + sort = { + sorter = "case_sensitive", + }, + view = { + float = { + enable = true, + quit_on_focus_loss = true, + open_win_config = function() + local screen_w = vim.opt.columns:get() + local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get() + local window_w = screen_w * 0.5 + local window_h = screen_h * 0.3 + local window_w_int = math.floor(window_w) + local window_h_int = math.floor(window_h) + local center_x = (screen_w - window_w) / 2 + local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get() + return { + border = "rounded", + relative = "editor", + row = center_y, + col = center_x, + width = window_w_int, + height = window_h_int, + } + end, + } + }, + renderer = { + group_empty = true, + icons = { + glyphs = { + git = { + unstaged = "", + staged = "", + unmerged = "UM", + renamed = "", + deleted = "", + untracked = "", + ignored = "", + } + } + } + }, + filters = { + dotfiles = true, + }, +}) + +vim.api.nvim_create_autocmd({ 'WinEnter', 'BufWinEnter' }, { + pattern = 'NvimTree*', + callback = function() + local def = vim.api.nvim_get_hl(0, { name = 'Cursor' }) + vim.api.nvim_set_hl(0, 'Cursor', vim.tbl_extend('force', def, { blend = 100 })) + vim.opt.guicursor:append('a:Cursor/lCursor') + end, +}) + +vim.api.nvim_create_autocmd({ 'BufLeave', 'WinClosed' }, { + pattern = 'NvimTree*', + callback = function() + local def = vim.api.nvim_get_hl(0, { name = 'Cursor' }) + vim.api.nvim_set_hl(0, 'Cursor', vim.tbl_extend('force', def, { blend = 0 })) + vim.opt.guicursor = 'n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20' + end, +}) diff --git a/.config/nvim/lua/pm/plugins/telescope/load.lua b/.config/nvim/lua/pm/plugins/telescope/load.lua new file mode 100644 index 0000000..bf1514a --- /dev/null +++ b/.config/nvim/lua/pm/plugins/telescope/load.lua @@ -0,0 +1,5 @@ +return { + 'nvim-telescope/telescope.nvim', + tag = '0.1.8', + dependencies = { 'nvim-lua/plenary.nvim' } +} diff --git a/.config/nvim/lua/pm/plugins/telescope/setup.lua b/.config/nvim/lua/pm/plugins/telescope/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/telescope/setup.lua diff --git a/.config/nvim/lua/pm/plugins/treesitter/load.lua b/.config/nvim/lua/pm/plugins/treesitter/load.lua new file mode 100644 index 0000000..c6bc242 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/treesitter/load.lua @@ -0,0 +1 @@ +return { "nvim-treesitter/nvim-treesitter" } diff --git a/.config/nvim/lua/pm/plugins/treesitter/setup.lua b/.config/nvim/lua/pm/plugins/treesitter/setup.lua new file mode 100644 index 0000000..031eec9 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/treesitter/setup.lua @@ -0,0 +1,26 @@ +local status_ok, configs = pcall(require, "nvim-treesitter.configs") +if not status_ok then + return +end + +configs.setup({ + ensure_installed = "all", + ignore_install = { "" }, + highlight = { + enable = true, + disable = { "css" }, + }, + auto_install = true, + sync_install = false, + modules = {}, + autopairs = { + enable = true, + }, + indent = { + enable = true, + }, +}) + +vim.filetype.add({ + pattern = { [".*/hypr/.*%.conf"] = "hyprlang" }, +}) diff --git a/.config/nvim/lua/pm/plugins/yuck/load.lua b/.config/nvim/lua/pm/plugins/yuck/load.lua new file mode 100644 index 0000000..224e173 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/yuck/load.lua @@ -0,0 +1 @@ +return { "elkowar/yuck.vim" } diff --git a/.config/nvim/lua/pm/plugins/yuck/setup.lua b/.config/nvim/lua/pm/plugins/yuck/setup.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/nvim/lua/pm/plugins/yuck/setup.lua |