nvim/lua/plugins.lua
2024-12-20 19:56:21 -05:00

281 lines
6.2 KiB
Lua

local overrides = require "configs.overrides"
local mappings = require "mappings"
---@type NvPluginSpec[]
return {
---------------------
-- General Plugins --
---------------------
-- LSP Stuff
-- TODO: make these lang specific
{
"williamboman/mason.nvim",
-- opts = overrides.mason
opts = {
PATH = "append",
},
},
{
"cbochs/grapple.nvim",
dependencies = {
{ "nvim-tree/nvim-web-devicons", lazy = true },
},
lazy = false,
},
{
"nvimdev/lspsaga.nvim",
config = function()
require("lspsaga").setup {}
end,
dependencies = {
"nvim-treesitter/nvim-treesitter", -- optional
"nvim-tree/nvim-web-devicons", -- optional
},
},
{ "ThePrimeagen/refactoring.nvim" },
{
"nvimtools/none-ls.nvim",
lazy = false,
dependencies = "nvimtools/none-ls-extras.nvim",
opts = function()
return require "configs.null-ls"
end,
},
{
"neovim/nvim-lspconfig",
config = function()
require "nvchad.configs.lspconfig"
require "configs.lspconfig"
end, -- Override to setup mason-lspconfig
dependencies = {
"nvimdev/lspsaga.nvim",
"williamboman/mason-lspconfig.nvim",
},
lazy = false,
},
-- Debugger
{
"mfussenegger/nvim-dap",
config = function(_, opts)
mappings.Dap()
end,
},
{
"rcarriga/nvim-dap-ui",
dependencies = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" },
config = function()
local dap = require "dap"
local dapui = require "dapui"
dapui.setup()
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dapui.close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close()
end
end,
},
-- Delimiters
{ "Raimondi/delimitMate", lazy = false },
-- lazygit
{
"kdheepak/lazygit.nvim",
config = function()
mappings.LazyGit()
end,
lazy = false,
},
-- fzf
{ "junegunn/fzf.vim", lazy = false },
{
"nvim-telescope/telescope.nvim",
config = function()
require("telescope").setup()
require("telescope").load_extension "grapple"
end,
dependencies = { "nvim-lua/plenary.nvim", "junegunn/fzf.vim" },
},
-- Syntax Highlighting
{
"nvim-treesitter/nvim-treesitter",
opts = overrides.treesitter,
dependencies = {
-- additional parser
{ "nushell/tree-sitter-nu" },
},
},
-- File manager
{
"nvim-tree/nvim-tree.lua",
opts = overrides.nvimtree,
},
-- Diagnostics
{
"folke/trouble.nvim",
config = function()
require("trouble").setup()
mappings.Trouble()
end,
},
-- todo Highlights
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim", "folke/trouble.nvim" },
config = function()
require("todo-comments").setup()
end,
lazy = false,
},
-- TODO: look into this
{
"max397574/better-escape.nvim",
event = "InsertEnter",
config = function()
require("better_escape").setup()
end,
},
{
"zbirenbaum/copilot.lua",
event = "InsertEnter",
cmd = "Copilot",
config = function()
require("copilot").setup { suggestion = { auto_trigger = true } }
end,
},
-- Nyoom around files
{
"smoka7/hop.nvim",
lazy = false,
config = function()
local hop = require "hop"
hop.setup()
print(mappings.Hop())
end,
},
{
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
config = function()
require("ufo").setup {
provider_selector = function(bufnr, filetype, buftype)
return { "treesitter", "indent" }
end,
}
mappings.Ufo()
end,
lazy = false,
},
----------
-- Java --
----------
-- { "mfussenegger/nvim-jdtls" },
------------
-- Python --
------------
{
"mfussenegger/nvim-dap-python",
ft = "python",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui",
},
config = function(_, opts)
local path = nil
local is_windows = vim.fn.has "win64" == 1 or vim.fn.has "win32" == 1 or vim.fn.has "win16" == 1
if is_windows then
local cmd = io.popen("where.exe python", "r")
path = cmd:read "*line"
cmd:close()
else
local cmd = io.popen("which python", "r")
path = cmd:read "*line"
cmd:close()
end
require("dap-python").setup(path)
mappings.Dap_python()
end,
},
----------
-- Rust --
----------
{
"mrcjkb/rustaceanvim",
version = "^5", -- Recommended
lazy = false, -- This plugin is already lazy
},
-----------
-- swkhd --
-----------
{ "waycrate/swhkd-vim", ft = { "swhkdrc", "swhkd" } },
--------------
-- Obsidian --
--------------
-- {
-- "epwalsh/obsidian.nvim",
-- ft = "markdown",
-- lazy = false,
-- dependencies = {
-- "nvim-lua/plenary.nvim",
-- "nvim-telescope/telescope.nvim",
-- "nvim-treesitter/nvim-treesitter",
-- },
-- opts = {
-- -- workspaces = {}
-- config = function(_, opts)
-- end,
-- },
-- },
--------------
-- Markdown --
--------------
{
"nfrid/markdown-togglecheck",
dependencies = { "nfrid/treesitter-utils" },
ft = { "markdown" },
config = function(_, opts)
-- require("markdown-togglecheck").setup()
mappings.Markdown()
end,
},
------------
-- Golang --
------------
{
"leoluz/nvim-dap-go",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui",
},
ft = "go",
config = function(_, opts)
require("dap-go").setup()
mappings.Dap_go()
end,
},
------------
-- tmux --
------------
{
"christoomey/vim-tmux-navigator",
lazy = false,
},
-- All NvChad plugins are lazy-loaded by default
-- For a plugin to be loaded, you will need to set either `ft`, `cmd`, `keys`, `event`, or set `lazy = false`
-- If you want a plugin to load on startup, add `lazy = false` to a plugin spec, for example
-- {
-- "mg979/vim-visual-multi",
-- lazy = false,
-- }
}