505 lines
16 KiB
Lua
505 lines
16 KiB
Lua
local lsp_plugins = require 'plugin.lsp-plugins'
|
|
local ui_plugins = require 'plugin.ui-plugins'
|
|
local editor_plugins = require 'plugin.editor-plugins'
|
|
local file_manager_plugins = require 'plugin.file-manager-plugins'
|
|
local telescope_plugins = require 'plugin.telescope-plugins'
|
|
local treesitter_plugins = require 'plugin.treesitter-plugins'
|
|
local mini_plugins = require 'plugin.mini-plugins'
|
|
local snack_plugins = require 'plugin.snacks'
|
|
|
|
return {
|
|
-- Themes
|
|
{
|
|
'EdenEast/nightfox.nvim',
|
|
lazy = false,
|
|
priority = 1000,
|
|
},
|
|
lsp_plugins,
|
|
ui_plugins,
|
|
editor_plugins,
|
|
file_manager_plugins,
|
|
telescope_plugins,
|
|
treesitter_plugins,
|
|
mini_plugins,
|
|
snack_plugins,
|
|
-- 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
|
|
},
|
|
{
|
|
"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,
|
|
},
|
|
{
|
|
'samharju/yeet.nvim',
|
|
dependencies = {
|
|
"stevearc/dressing.nvim" -- optional, provides sane UX
|
|
},
|
|
version = "*", -- update only on releases
|
|
cmd = 'Yeet',
|
|
opts = {},
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"L3MON4D3/LuaSnip",
|
|
version = "v2.*",
|
|
run = "make install_jsregexp"
|
|
},
|
|
{ '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' },
|
|
{
|
|
-- NOTE: Fuzzy search for commands
|
|
-- Execute :Telescope commands
|
|
"LintaoAmons/easy-commands.nvim",
|
|
event = "VeryLazy",
|
|
},
|
|
{
|
|
"folke/noice.nvim",
|
|
dependencies = {
|
|
"MunifTanjim/nui.nvim",
|
|
"rcarriga/nvim-notify",
|
|
},
|
|
},
|
|
{
|
|
"folke/todo-comments.nvim",
|
|
dependencies = { "nvim-lua/plenary.nvim" },
|
|
opts = {
|
|
}
|
|
},
|
|
{
|
|
"folke/trouble.nvim",
|
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
opts = {
|
|
},
|
|
},
|
|
{
|
|
'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
|
|
},
|
|
{
|
|
'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
|
|
},
|
|
{
|
|
'mfussenegger/nvim-lint',
|
|
},
|
|
{
|
|
'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
|
|
},
|
|
-- Notes and Markdown
|
|
{
|
|
"epwalsh/obsidian.nvim",
|
|
version = "*",
|
|
-- lazy = true,
|
|
-- ft = "markdown",
|
|
dependencies = {
|
|
"nvim-lua/plenary.nvim",
|
|
},
|
|
opts = {
|
|
workspaces = {
|
|
{
|
|
name = "personal",
|
|
path = "~/Notes",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
'MeanderingProgrammer/render-markdown.nvim',
|
|
opts = {},
|
|
dependencies = {
|
|
'nvim-treesitter/nvim-treesitter',
|
|
},
|
|
},
|
|
{
|
|
'jakewvincent/mkdnflow.nvim',
|
|
config = function()
|
|
require('mkdnflow').setup({
|
|
mappings = {
|
|
MkdnIncreaseHeading = { 'n', '+' },
|
|
MkdnDecreaseHeading = { 'n', '_' },
|
|
}
|
|
})
|
|
end
|
|
},
|
|
{
|
|
"HakonHarnes/img-clip.nvim",
|
|
event = "VeryLazy",
|
|
opts = {
|
|
-- add options here
|
|
-- or leave it empty to use the default settings
|
|
},
|
|
keys = {
|
|
-- suggested keymap
|
|
{ "<leader>p", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
|
|
},
|
|
},
|
|
-- End
|
|
{
|
|
'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,
|
|
},
|
|
}
|