my-nvim-lua/lua/custom/plugins/init.lua

391 lines
9.8 KiB
Lua
Raw Normal View History

-- vim: foldlevel=1
2022-08-31 16:15:32 +00:00
--
-- TODO: interesting plugins to install
-- - neovim minisurround to replace vim-surround
--
-- #### notes on Lua and requiring modules
-- https://github.com/wbthomason/packer.nvim/issues/955
-- - when you require(...) a file in lua, it gets cached, so future require calls don't hit the filesystem.
-- This means reloading your lua config won't apply any changes because the old files are cached.
-- - Cached required modules are stored in `package.loaded` table
-- - for example if `require("foo.bar")` was issued it's cache would be in
-- `package.loaded["foo.bar"]`
--
-- - to remove the cached module
--
-- lua << EOF
--
-- for k, v in pairs(package.loaded) do
-- if string.match(k, "^my_lua_config") then
-- package.loaded[k] = nil
-- end
-- end
--
-- EOF
--
-- #### Proper way to reload packer while picking up all changes from configs/setup
-- - Remove the cached module using package.loaded["foo.bar"] = nil
-- - Execute :PackerCompile
--
-- This doesn't seem to work:
-- - XXX ~~Reload all lua modules with `"pleanery.reload".reload_module(mod)`~~ XXX
2022-08-20 14:06:49 +00:00
return {
["nvim-treesitter/nvim-treesitter"] = {
setup = function()
require("core.lazy_load").on_file_open "nvim-treesitter"
require("core.lazy_load").on_file_open "nvim-treesitter-textobjects"
require("core.lazy_load").on_file_open "nvim-treesitter-textsubjects"
2022-09-23 00:50:02 +00:00
require("core.lazy_load").on_file_open "nvim-treesitter-context"
-- require("core.lazy_load").on_file_open "nvim-ts-rainbow"
2022-08-22 14:20:21 +00:00
end
2022-08-22 13:50:16 +00:00
},
["nvim-treesitter/nvim-treesitter-textobjects"] = {
opt = true,
},
["RRethy/nvim-treesitter-textsubjects"] = {
opt = true,
},
2022-09-23 00:50:02 +00:00
-- Treesitter dev/exploration tool
["nvim-treesitter/playground"] = {
opt = true,
},
["nvim-treesitter/nvim-treesitter-context"] = {
opt = true,
config = function()
require("custom.plugins.configs.treesitter-context").setup()
end
},
["folke/todo-comments.nvim"] = {
after = "nvim-treesitter",
config = function()
require("custom.plugins.configs.todo-comments").setup()
end
},
-- ["p00f/nvim-ts-rainbow"] = {
-- opt = true,
-- },
2022-09-10 07:58:26 +00:00
["hrsh7th/cmp-buffer"] = {
config = function ()
local disabled_ft = {
"guihua",
"clap_input",
2022-09-23 00:50:02 +00:00
"guihua_rust,",
"TelescopePrompt"
2022-09-10 07:58:26 +00:00
}
require("cmp").setup.buffer {
enabled = function ()
for _, v in ipairs(disabled_ft) do
if vim.o.ft == v then return false end
end
return true
end
}
end
},
2022-08-20 14:06:49 +00:00
["mfussenegger/nvim-dap"] = {
lock = true,
2022-09-23 00:50:02 +00:00
module = "dap",
setup = function()
require("core.utils").load_mappings "dap"
end,
2022-08-20 14:06:49 +00:00
},
["rcarriga/nvim-dap-ui"] = {
lock = true,
after = "nvim-dap",
},
["theHamsta/nvim-dap-virtual-text"] = {
lock = true,
after = "nvim-dap"
},
2022-08-26 14:28:12 +00:00
-- side panel with symbols (replaced by Navigator :LspSymbols cmd)
-- ["liuchengxu/vista.vim"] = {
-- cmd = "Vista",
-- setup = function()
-- require("core.utils").load_mappings "vista"
-- end
-- },
--
2022-08-20 14:06:49 +00:00
["folke/which-key.nvim"] = {
lock = true,
2022-08-20 14:06:49 +00:00
disable = false,
2022-09-10 07:58:26 +00:00
keys = {"<leader>", "<BS>", "<Space>"}
2022-08-20 14:06:49 +00:00
},
2022-08-22 01:28:23 +00:00
["nvim-telescope/telescope.nvim"] = {
2022-09-25 03:03:21 +00:00
-- lock = true,
tag = "*",
disable = false,
},
["tom-anders/telescope-vim-bookmarks.nvim"] = {
opt = true,
module = "telescope",
after = {"telescope.nvim", "vim-bookmarks"},
-- cmd = "Telescope",
-- requires = "vim-bookmarks",
-- after = {"vim-bookmarks", "telescope"},
-- module = "telescope",
config = function()
require("telescope").load_extension("vim_bookmarks")
end
2022-08-22 01:28:23 +00:00
},
2022-09-25 03:03:21 +00:00
["nvim-telescope/telescope-fzf-native.nvim"] = {
opt = true,
module = "telescope",
after = {"telescope.nvim"},
run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build',
},
2022-08-22 01:28:23 +00:00
["ibhagwan/fzf-lua"] = {
2022-08-22 15:00:11 +00:00
lock = true,
2022-08-22 01:28:23 +00:00
after = "ui",
config = function()
require("custom.plugins.configs.fzflua")
require("plugins.configs.others").devicons()
end,
setup = function()
require("core.utils").load_mappings "fzf_lua"
end
},
2022-08-20 14:06:49 +00:00
-- Run async commands (make & errors)
2022-08-20 14:06:49 +00:00
["skywind3000/asyncrun.vim"] = {
lock = true,
2022-08-22 13:50:16 +00:00
cmd = "AsyncRun",
2022-09-23 00:50:02 +00:00
setup = function()
2022-08-20 14:06:49 +00:00
require("core.utils").load_mappings "asyncrun"
vim.g.asyncrun_open = 8
end
},
2022-08-22 14:20:21 +00:00
["tpope/vim-fugitive"] = {
lock = true,
2022-08-29 15:17:35 +00:00
cmd = {"G", "Git", "G*"}
2022-08-22 14:20:21 +00:00
},
2022-08-22 15:00:11 +00:00
-- session and view
["vim-scripts/restore_view.vim"] = {}, -- TODO: check if still needed
2022-09-01 01:32:15 +00:00
-- ["rmagatti/auto-session"] = {
-- config = function ()
-- require("auto-session").setup {
-- log_level = "error",
-- auto_session_suppress_dirs = {"~/", "~/projects", "/"},
-- auto_save_enabled = false,
-- }
-- end
-- },
-- text formatting and navigation
2022-08-22 13:50:16 +00:00
-- repeat operator for plugin commands
["tpope/vim-repeat"] = {
keys = {"."},
},
2022-09-11 12:14:24 +00:00
["ggandor/leap.nvim"] = {
config = function()
require "custom.plugins.configs.leap"
end
2022-08-22 13:50:16 +00:00
},
2022-09-11 12:14:24 +00:00
-- ["justinmk/vim-sneak"] = {
-- lock = true,
-- keys = {"s", "S"},
-- },
["tpope/vim-surround"] = {},
2022-08-27 03:44:09 +00:00
["godlygeek/tabular"] = {
cmd = "Tabularize"
},
--
-- misc general plugins
2022-08-22 01:28:23 +00:00
-- Read info files
--
2022-08-22 01:28:23 +00:00
["https://gitlab.com/HiPhish/info.vim.git"] = {
cmd = "Info",
},
["MattesGroeger/vim-bookmarks"] = {
config = function()
require("core.utils").load_mappings "vim_bookmarks"
end
},
2022-09-23 00:50:02 +00:00
-- create new vim modes
["Iron-E/nvim-libmodal"] = {
lock = true,
},
-- ["chentoast/marks.nvim"] = {
-- opt = true,
-- keys = {"m", "d"},
-- cmd = {"Marks*", "Bookmarks*"},
-- config = function ()
-- require("custom.plugins.configs.marks").setup()
-- end
-- },
-- snippets
2022-08-20 14:06:49 +00:00
["L3MON4D3/LuaSnip"] = {
lock = true,
2022-08-20 14:06:49 +00:00
config = function()
-- load default config first
require("plugins.configs.others").luasnip()
vim.g.my_snippets_paths = {"./custom_snippets"}
require("luasnip").filetype_extend("markdown", { "markdown_zk" })
-- load snippets from "honza/vim-snippets"
-- includes ultisnips and snipmate snippets
require("luasnip.loaders.from_snipmate").lazy_load({ override_priority = 800 })
require("luasnip.loaders.from_snipmate").lazy_load {
paths = vim.g.my_snippets_paths,
override_priority = 800
}
end
},
2022-09-01 01:32:15 +00:00
-- ------------------
-- LSP
2022-09-01 01:32:15 +00:00
-- ------------------
2022-08-20 19:49:33 +00:00
["honza/vim-snippets"] = {
module = {"cmp", "cmp_nvim_lsp"},
event = "InsertEnter",
2022-08-22 15:00:11 +00:00
},
2022-08-26 14:28:12 +00:00
["neovim/nvim-lspconfig"] = {
after = "lua-dev.nvim",
lock = true,
2022-08-29 14:46:20 +00:00
config = function()
local lspconfig = require("lspconfig")
lspconfig.util.default_config = vim.tbl_extend(
"force",
lspconfig.util.default_config,
{
autostart = false
}
)
end-- disable lspconfig, handled by navigator
2022-08-26 14:28:12 +00:00
},
["williamboman/mason-lspconfig.nvim"] = {
lock = true,
2022-08-26 14:28:12 +00:00
requires = {"williamboman/mason.nvim", "nvim-lspconfig"},
2022-09-23 00:50:02 +00:00
-- after = "mason.nvim",
module = {"mson-lspconfig.nvim", "mason.nvim"},
2022-08-26 14:28:12 +00:00
config = function()
require("mason-lspconfig").setup({})
end,
},
2022-09-01 01:32:15 +00:00
["ray-x/guihua.lua"] = {
lock = true,
module = {"navigator"},
2022-09-23 00:50:02 +00:00
run = "cd lua/fzy && make",
config = function()
require("guihua.maps").setup {
maps = {
close_view = "<C-x>",
}
}
end
2022-09-01 01:32:15 +00:00
},
-- ["https://git.sp4ke.xyz/sp4ke/navigator.lua"] =
--
["ray-x/navigator.lua"] = {
lock = true,
opt = true,
2022-09-23 00:50:02 +00:00
module = "navigator.lua",
after = { "nvim-lspconfig", "base46", "ui", "mason.nvim", "mason-lspconfig.nvim" },
2022-08-26 14:28:12 +00:00
requires = {"neovim/nvim-lspconfig", "ray-x/guihua.lua", "nvim-treesitter/nvim-treesitter"},
setup = function()
2022-09-23 00:50:02 +00:00
require("core.lazy_load").on_file_open "navigator.lua"
2022-08-26 14:28:12 +00:00
require("core.utils").load_mappings "navigator"
end,
config = function()
2022-08-29 14:46:20 +00:00
require("custom.plugins.configs.navigator").setup()
require("base46").load_highlight "lsp"
-- TODO: use nvchadui_lsp features manually
-- require("nvchad_ui.lsp")
2022-08-26 14:28:12 +00:00
end
},
["ray-x/lsp_signature.nvim"] = {
after = {"navigator.lua"},
config = function()
require("custom.plugins.configs.lsp_signature").setup()
end
},
-- per language plugins
-- -------
-- lua dev
-- -------
-- Eval Lua lines/selections
["bfredl/nvim-luadev"] = {
lock = true,
cmd = "Luadev",
keys = {
"<Plug>(Luadev-RunLine)",
"<Plug>(Luadev-Run)",
"<Plug>(Luadev-RunWord)",
"<Plug>(Luadev-Complete)",
},
setup = function()
local autocmd = vim.api.nvim_create_autocmd
autocmd("FileType", {
pattern = "lua",
callback = function ()
vim.keymap.set({'n', 'i'}, '<leader>r', '<Plug>(Luadev-RunLine)', {
desc = "Luadev RunLine"
})
end,
})
end
},
-- REPL for Lua development
2022-09-01 01:32:15 +00:00
["ii14/neorepl.nvim"] = {
lock = true,
2022-09-01 01:32:15 +00:00
cmd = "Repl",
after = "nvim-cmp",
config = function ()
2022-09-01 01:32:15 +00:00
local autocmd = vim.api.nvim_create_autocmd
autocmd("FileType",{
pattern = "neorepl",
callback = function ()
require('cmp').setup.buffer({enabled = false})
2022-09-01 01:32:15 +00:00
-- custom keymap example
-- activate corresponding section in mappings
-- mappings = require("custom.utils").set_plugin_mappings "neorepl"
end
})
end
},
-- Lua dev env
-- check setup in configs/navigator.lua
["folke/lua-dev.nvim"] = {
module = "lua-dev",
},
-- golang dev
["ray-x/go.nvim"] = {
lock = true,
-- after = {"nvim-lspconfig", "navigator.lua", "guihua.lua"},
ft = {"go"},
opt = true,
config = function()
2022-09-25 03:03:21 +00:00
require("custom.plugins.configs.gonvim").setup()
end
2022-09-01 01:32:15 +00:00
}
2022-08-20 14:06:49 +00:00
}