neovim/lua/plugins.lua

748 lines
23 KiB
Lua

return {
-- Themes
{
'EdenEast/nightfox.nvim',
lazy = false,
priority = 1000,
},
-- LSP
'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim',
'neovim/nvim-lspconfig',
{
'nvimdev/lspsaga.nvim',
config = function()
require('lspsaga').setup({
lightbulb = {
enable = true,
sign = true,
virtual_text = false,
},
})
end,
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons'
},
},
{
"zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
config = function()
require("copilot").setup({
panel = {
enabled = true,
auto_refresh = true,
},
suggestion = {
enabled = true,
auto_trigger = true,
accept = false, -- disable built-in keymapping
},
filetypes = {
markdown = true,
yaml = true
}
})
end,
},
'hrsh7th/nvim-cmp',
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-nvim-lua',
'hrsh7th/cmp-nvim-lsp-signature-help',
'hrsh7th/cmp-vsnip',
'hrsh7th/cmp-path',
'hrsh7th/cmp-buffer',
'hrsh7th/vim-vsnip',
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function()
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'auto',
component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
disabled_filetypes = {
statusline = {},
winbar = {},
'sagaoutline',
'neo-tree'
},
ignore_focus = {},
always_divide_middle = false,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
}
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
}
end
},
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
"MunifTanjim/nui.nvim",
-- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
}
},
'nvim-tree/nvim-web-devicons',
{
'norcalli/nvim-colorizer.lua',
config = function()
require('colorizer').setup()
end
},
'navarasu/onedark.nvim',
{
-- Hides the highlight after searching and going into insert mode
'nvimdev/hlsearch.nvim',
event = { "BufRead" },
config = function()
require('hlsearch').setup()
end
},
{
'nvim-pack/nvim-spectre'
},
{
'fedepujol/move.nvim',
config = function()
require('move').setup({
require('move').setup({
line = {
enable = true, -- Enables line movement
indent = true -- Toggles indentation
},
block = {
enable = true, -- Enables block movement
indent = true -- Toggles indentation
},
word = {
enable = true, -- Enables word movement
},
char = {
enable = true -- Enables char movement
}
})
})
end
},
{
'smoka7/hop.nvim',
version = "*",
opts = {},
},
{
"cbochs/grapple.nvim",
dependencies = {
{ "nvim-tree/nvim-web-devicons", lazy = true }
},
opts = {
scope = "git", -- also try out "git_branch"
},
event = { "BufReadPost", "BufNewFile" },
cmd = "Grapple",
keys = {
{ "<leader>M", "<cmd>Grapple toggle<cr>", desc = "Grapple toggle tag" },
{ "<leader>m", "<cmd>Grapple toggle_tags<cr>", desc = "Grapple open tags window" },
{ "<leader>n", "<cmd>Grapple cycle_tags next<cr>", desc = "Grapple cycle next tag" },
{ "<leader>N", "<cmd>Grapple cycle_tags prev<cr>", desc = "Grapple cycle previous tag" },
},
},
{
"leath-dub/snipe.nvim",
keys = {
{ "gb", function() require("snipe").open_buffer_menu() end, desc = "Open Snipe buffer menu" }
},
opts = {}
},
-- Language suites
{
'mrcjkb/rustaceanvim',
version = '^4', -- Recommended
lazy = false, -- This plugin is already lazy
},
{
'nvim-java/nvim-java',
dependencies = {
'nvim-java/lua-async-await',
'nvim-java/nvim-java-refactor',
'nvim-java/nvim-java-core',
'nvim-java/nvim-java-test',
'nvim-java/nvim-java-dap',
'MunifTanjim/nui.nvim',
'neovim/nvim-lspconfig',
'mfussenegger/nvim-dap',
{
'williamboman/mason.nvim',
opts = {
registries = {
'github:nvim-java/mason-registry',
'github:mason-org/mason-registry',
},
},
}
},
config = function()
require('java').setup()
end,
},
{
"ray-x/go.nvim",
dependencies = { -- optional packages
"ray-x/guihua.lua",
"neovim/nvim-lspconfig",
"nvim-treesitter/nvim-treesitter",
},
config = function()
require("go").setup()
end,
event = { "CmdlineEnter" },
ft = { "go", 'gomod' },
build = ':lua require("go.install").update_all_sync()' -- if you need to install/update all binaries
},
{
"ellisonleao/glow.nvim",
config = function()
require("glow").setup()
end
},
{
'numToStr/Comment.nvim',
},
{
"jubnzv/mdeval.nvim",
config = function()
require 'mdeval'.setup({
require_confirmation = false,
eval_options = {
-- Set custom configuration for C++
cpp = {
command = { "clang++", "-std=c++20", "-O0" },
default_header = [[
#include <iostream>
#include <vector>
using namespace std;
]]
},
},
})
end
},
{
"michaelb/sniprun",
branch = "master",
build = "sh install.sh",
config = function()
require("sniprun").setup({
-- your options
})
end,
},
{
"jellydn/hurl.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter"
},
ft = "hurl",
opts = {
-- Show debugging info
debug = false,
-- Show notification on run
show_notification = false,
-- Show response in popup or split
mode = "split",
-- Default formatter
formatters = {
json = { 'jq' }, -- Make sure you have install jq in your system, e.g: brew install jq
html = {
'prettier', -- Make sure you have install prettier in your system, e.g: npm install -g prettier
'--parser',
'html',
},
},
},
},
{
"LintaoAmons/scratch.nvim",
opts = {
scratch_file_dir = vim.fn.stdpath("cache") .. "/scratch.nvim",
filetypes = { "lua", "js", "bash", "sh", "py", "md" },
filetype_details = {
json = {},
["yaml"] = {},
go = {
requireDir = true,
filename = "main",
content = { "package main", "", "func main() {", " ", "}" },
cursor = {
location = { 4, 2 },
insert_mode = true,
},
},
},
window_cmd = "edit",
use_telescope = true,
localKeys = {
{
filenameContains = { "sh" },
LocalKeys = {
{
cmd = "<CMD>RunShellCurrentLine<CR>",
key = "<C-r>",
modes = { "n", "i", "v" },
},
},
},
},
},
event = "VeryLazy",
},
{ 'saadparwaiz1/cmp_luasnip' },
{
"L3MON4D3/LuaSnip",
version = "v2.*",
run = "make install_jsregexp"
},
{ 'nvim-lua/plenary.nvim' },
{
'nvim-telescope/telescope.nvim',
config = function()
local tl = require('telescope')
tl.load_extension("file_browser")
tl.setup {
pickers = {
find_files = {
theme = "dropdown",
hidden = true,
},
},
buffers = {
show_all_buffers = true,
sort_lastused = true,
theme = "dropdown",
previewer = false,
mappings = {
i = {
["<c-d>"] = "delete_buffer",
},
n = {
["<c-d>"] = "delete_buffer",
},
},
}
}
end
},
{
'LukasPietzschmann/telescope-tabs',
requires = { 'nvim-telescope/telescope.nvim' },
config = function()
require 'telescope-tabs'.setup {
-- Your custom config :^)
}
end
},
{
"nvim-telescope/telescope-file-browser.nvim",
dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" }
},
{
"ThePrimeagen/refactoring.nvim",
requires = {
{ "nvim-lua/plenary.nvim" },
{ "nvim-treesitter/nvim-treesitter" },
},
},
{
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
"sindrets/diffview.nvim",
},
config = true
},
{ 'mg979/vim-visual-multi' },
{ 'rhysd/git-messenger.vim' },
{ 'sindrets/diffview.nvim' },
{
'nvimdev/dashboard-nvim',
event = 'VimEnter',
config = function()
require('dashboard').setup {
-- config
}
end,
dependencies = { { 'nvim-tree/nvim-web-devicons' } }
},
{
'kevinhwang91/nvim-ufo',
dependencies = 'kevinhwang91/promise-async',
config = function()
require('ufo').setup({
provider_selector = function(bufnr, filetype, buftype)
return { 'treesitter', 'indent' }
end
})
end
},
{
'stevearc/oil.nvim',
opts = {},
-- Optional dependencies
dependencies = { "nvim-tree/nvim-web-devicons" },
},
-- Treesitter
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
after = "nvim-treesitter",
requires = "nvim-treesitter/nvim-treesitter",
},
{
"nvim-treesitter/nvim-treesitter-context",
},
{
-- Press % to jump to the other side of a block
'yorickpeterse/nvim-tree-pairs',
config = function()
require('tree-pairs').setup()
end
},
{
'Wansmer/treesj',
dependencies = { 'nvim-treesitter/nvim-treesitter' },
config = function()
require('treesj').setup({ --[[ your config ]] })
end,
},
{
-- NOTE: Fuzzy search for commands
-- Execute :Telescope commands
"LintaoAmons/easy-commands.nvim",
event = "VeryLazy",
},
{
"LintaoAmons/bookmarks.nvim",
dependencies = {
{ "nvim-telescope/telescope.nvim" },
{ "stevearc/dressing.nvim" } -- optional: to have the same UI shown in the GIF
}
},
{
"folke/noice.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
"rcarriga/nvim-notify",
},
},
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
},
{
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
},
'jiangmiao/auto-pairs',
{
'RRethy/vim-illuminate',
config = function()
-- default configuration
require('illuminate').configure({
-- providers: provider used to get references in the buffer, ordered by priority
providers = {
'lsp',
'treesitter',
'regex',
},
delay = 100,
filetype_overrides = {},
filetypes_denylist = {
'dirbuf',
'dirvish',
'fugitive',
},
filetypes_allowlist = {},
modes_denylist = {},
modes_allowlist = {},
providers_regex_syntax_denylist = {},
providers_regex_syntax_allowlist = {},
under_cursor = true,
large_file_cutoff = nil,
large_file_overrides = nil,
min_count_to_highlight = 1,
should_enable = function(bufnr) return true end,
case_insensitive_regex = false,
})
end
},
{ 'luochen1990/rainbow' },
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
opts = {},
config = function()
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require "ibl.hooks"
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
require("ibl").setup { indent = { highlight = highlight } }
end
},
{
"kylechui/nvim-surround",
version = "*", -- Use for stability; omit to use `main` branch for the latest features
event = "VeryLazy",
config = function()
require("nvim-surround").setup({
-- Configuration here, or leave empty to use defaults
})
end
},
{
'nmac427/guess-indent.nvim',
config = function()
require('guess-indent').setup()
end
},
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
},
{
'folke/neodev.nvim',
config = function()
require('neodev').setup {}
end
},
{ 'vladdoster/remember.nvim', config = [[ require('remember') ]] },
{
-- Adds git related signs to the gutter, as well as utilities for managing changes
'lewis6991/gitsigns.nvim',
opts = {
-- See `:help gitsigns.txt`
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
current_line_blame = true,
on_attach = function(bufnr)
vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk,
{ buffer = bufnr, desc = 'Preview git hunk' })
-- don't override the built-in and fugitive keymaps
local gs = package.loaded.gitsigns
vim.keymap.set({ 'n', 'v' }, ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(function()
gs.next_hunk()
end)
return '<Ignore>'
end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' })
vim.keymap.set({ 'n', 'v' }, '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(function()
gs.prev_hunk()
end)
return '<Ignore>'
end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' })
end,
},
},
{
"FabijanZulj/blame.nvim",
config = function()
require("blame").setup({
date_format = "%m/%d/%Y",
})
end
},
{
"ahmedkhalf/project.nvim",
config = function()
require("project_nvim").setup {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
end
},
{
'stevearc/conform.nvim',
opts = {},
config = function()
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
-- Conform will run multiple formatters sequentially
python = { "isort", "black" },
-- Use a sub-list to run only the first available formatter
javascript = { { "prettierd", "prettier" } },
},
})
end
},
{
'rmagatti/auto-session',
config = function()
require("auto-session").setup {
log_level = "error",
auto_session_suppress_dirs = { "~/", "~/Projects", "~/Downloads", "/" },
}
end
},
{
'akinsho/toggleterm.nvim',
version = "*",
config = true
},
{
"epwalsh/obsidian.nvim",
version = "*",
-- lazy = true,
-- ft = "markdown",
dependencies = {
"nvim-lua/plenary.nvim",
},
opts = {
workspaces = {
{
name = "personal",
path = "~/Obsidian/notes/",
},
},
},
},
{
'MeanderingProgrammer/render-markdown.nvim',
opts = {},
dependencies = {
'nvim-treesitter/nvim-treesitter',
},
},
{
"dhruvasagar/vim-table-mode",
},
{
'declancm/maximize.nvim',
config = function() require('maximize').setup() end
},
{
"chrishrb/gx.nvim",
keys = { { "gx", "<cmd>Browse<cr>", mode = { "n", "x" } } },
cmd = { "Browse" },
init = function()
vim.g.netrw_nogx = 1 -- disable netrw gx
end,
dependencies = { "nvim-lua/plenary.nvim" },
submodules = false,
config = function()
local platform = vim.loop.os_uname().sysname
local app = ""
if platform == "Darwin" then
app = "open"
elseif platform == "Linux" then
app = "xdg-open"
end
require("gx").setup {
open_browser_app = app,
open_browser_args = { "--background" }, -- specify any arguments, such as --background for macOS' "open".
handlers = {
plugin = true, -- open plugin links in lua (e.g. packer, lazy, ..)
github = true, -- open github issues
brewfile = true, -- open Homebrew formulaes and casks
package_json = true, -- open dependencies from package.json
search = true, -- search the web/selection on the web if nothing else is found
},
handler_options = {
search_engine = "duckduckgo", -- you can select between google, bing, duckduckgo, and ecosia
},
}
end,
},
{
"willothy/flatten.nvim",
config = function()
require("flatten").setup({})
end,
lazy = false,
priority = 1001,
},
{
"chrisgrieser/nvim-recorder",
dependencies = "rcarriga/nvim-notify", -- optional
opts = {},
config = function()
require("recorder").setup({
slots = { "a", "b", "c", "d" }
})
end,
},
}