neovim-config/lua/plugins/init.lua
2024-08-15 20:52:41 +02:00

401 lines
9.6 KiB
Lua

return {
"nvim-lua/plenary.nvim",
"rebelot/kanagawa.nvim",
{
"iamcco/markdown-preview.nvim",
run = "cd app && npm install",
lazy = false,
setup = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
},
{ "tpope/vim-fugitive", lazy = false },
{ "rbong/vim-flog", lazy = false },
{ "tpope/vim-surround", lazy = false },
{ "tpope/vim-obsession", lazy = false },
{ "preservim/tagbar", lazy = false },
{ "ludovicchabant/vim-gutentags", lazy = false },
{ "emaniacs/vim-rest-console", lazy = false },
{ "mfussenegger/nvim-dap", lazy = false },
{
"mfussenegger/nvim-lint",
lazy = false,
init = function()
-- require("link").linters_by_ft = {
-- python = { "mypy" },
-- }
end,
},
{
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio",
},
},
{
"mfussenegger/nvim-dap-python",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui",
},
init = function()
require("dap-python").setup "python"
-- Setup nvim-dap-ui also
require("dapui").setup()
end,
config = function(_, _)
local dap = require "dap"
vim.api.nvim_set_hl(0, "dark-orange", { bg = "#402c16" })
vim.fn.sign_define("DapBreakpoint", { text = "🛑", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapStopped", { text = "", texthl = "", linehl = "dark-orange", numhl = "" })
dap.defaults.fallback.terminal_win_cmd = "tabnew"
dap.defaults.fallback.focus_terminal = true
end,
},
{
"Weissle/persistent-breakpoints.nvim",
config = function(_, _)
require("persistent-breakpoints").setup {
load_breakpoints_event = { "BufReadPost" },
}
end,
},
{ "nvim-telescope/telescope-live-grep-args.nvim" },
{ "nvim-telescope/telescope-dap.nvim" },
-- {
-- "harrisoncramer/gitlab.nvim",
-- dependencies = {
-- "MunifTanjim/nui.nvim",
-- "nvim-lua/plenary.nvim",
-- "sindrets/diffview.nvim",
-- "stevearc/dressing.nvim", -- Recommended but not required. Better UI for pickers.
-- "nvim-tree/nvim-web-devicons", -- Recommended but not required. Icons in discussion tree.
-- },
-- enabled = true,
-- build = function()
-- require("gitlab.server").build(true)
-- end, -- Builds the Go binary
-- opts = function()
-- return require "configs.gitlab"
-- end,
-- config = function(_, opts)
-- require("gitlab").setup(opts)
-- end,
-- },
{
"sindrets/diffview.nvim",
opts = function()
return require "configs.diffview"
end,
},
{
"aaronhallaert/advanced-git-search.nvim",
cmd = { "AdvancedGitSearch" },
dependencies = {
"nvim-telescope/telescope.nvim",
-- to show diff splits and open commits in browser
"tpope/vim-fugitive",
-- to open commits in browser with fugitive
"tpope/vim-rhubarb",
-- optional: to replace the diff from fugitive with diffview.nvim
-- (fugitive is still needed to open in browser)
"sindrets/diffview.nvim",
},
},
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
{
"stevearc/quicker.nvim",
opts = {},
init = function()
require("quicker").setup()
end,
},
{
"chentoast/marks.nvim",
init = function()
require("marks").setup {
default_mappings = true,
signs = true,
mappings = {},
}
end,
},
{
"stevearc/conform.nvim",
opts = {},
init = function()
local conform = require "conform"
conform.setup {
formatters_by_ft = {
lua = { "stylua" },
-- You can use a function here to determine the formatters dynamically
python = function(bufnr)
if conform.get_formatter_info("ruff_format", bufnr).available then
return { "isort", "black" }
-- return { "ruff_format" }
else
return { "isort", "black" }
end
end,
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
options = {
lang_to_formatters = {
json = { "jq" },
},
},
format_on_save = {
timeout_ms = 1000,
lsp_format = "fallback",
},
}
end,
},
{
"nvim-tree/nvim-web-devicons",
config = function(_, opts)
require("nvim-web-devicons").setup(opts)
end,
},
{
"lukas-reineke/indent-blankline.nvim",
-- version = "2.20.7",
event = "User FilePost",
opts = function()
return require "configs.blankline"
end,
},
{
"nvim-treesitter/nvim-treesitter",
event = { "BufReadPost", "BufNewFile" },
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
build = ":TSUpdate",
opts = function()
return require "configs.treesitter"
end,
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
config = function()
require("nvim-treesitter.configs").setup(require "configs.treesitter_textobjects")
end,
},
-- git stuff
{
"lewis6991/gitsigns.nvim",
event = "User FilePost",
opts = function()
return require "configs.gitsigns"
end,
},
-- lsp stuff
{
"williamboman/mason.nvim",
cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" },
opts = function()
return require "configs.mason"
end,
},
{
"neovim/nvim-lspconfig",
event = "User FilePost",
config = function()
require "configs.lspconfig"
end,
},
{
"numToStr/Comment.nvim",
keys = {
{ "gcc", mode = "n", desc = "Comment toggle current line" },
{ "gc", mode = { "n", "o" }, desc = "Comment toggle linewise" },
{ "gc", mode = "x", desc = "Comment toggle linewise (visual)" },
{ "gbc", mode = "n", desc = "Comment toggle current block" },
{ "gb", mode = { "n", "o" }, desc = "Comment toggle blockwise" },
{ "gb", mode = "x", desc = "Comment toggle blockwise (visual)" },
},
config = function(_, opts)
require("Comment").setup(opts)
end,
},
-- Save and load macro / register
{
"desdic/macrothis.nvim",
opts = {},
},
{
"onsails/diaglist.nvim",
debug = false,
},
{
"anuvyklack/hydra.nvim",
config = function()
require "configs.hydra"
end,
},
{
"gioele/vim-autoswap",
lazy = false,
},
{
"natecraddock/workspaces.nvim",
config = function()
require("workspaces").setup {
hooks = {
open = { "Telescope find_files" },
},
}
end,
},
{
"mangelozzi/rgflow.nvim",
lazy = false,
config = function()
require("rgflow").setup {
-- Set the default rip grep flags and options for when running a search via
-- RgFlow. Once changed via the UI, the previous search flags are used for
-- each subsequent search (until Neovim restarts).
cmd_flags = "--smart-case --fixed-strings --ignore --max-columns 200",
-- Mappings to trigger RgFlow functions
default_trigger_mappings = true,
-- These mappings are only active when the RgFlow UI (panel) is open
default_ui_mappings = true,
-- QuickFix window only mapping
default_quickfix_mappings = true,
}
end,
},
{
"yorickpeterse/nvim-window",
config = function()
require("nvim-window").setup {
normal_hl = "Normal",
hint_hl = "Bold",
border = "single",
}
end,
},
{
"sindrets/winshift.nvim",
},
{
"kdheepak/lazygit.nvim",
config = function()
require("lazy").setup {
{
"kdheepak/lazygit.nvim",
-- optional for floating window border decoration
dependencies = {
"nvim-lua/plenary.nvim",
},
},
}
end,
},
-- file managing , picker etc
{
"nvim-tree/nvim-tree.lua",
cmd = { "NvimTreeToggle", "NvimTreeFocus" },
opts = function()
return require "configs.nvimtree"
end,
},
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter" },
cmd = "Telescope",
opts = function()
return require "configs.telescope"
end,
config = function(_, opts)
local telescope = require "telescope"
telescope.setup(opts)
-- load extensions
for _, ext in ipairs(opts.extensions_list) do
telescope.load_extension(ext)
end
end,
},
-- Only load whichkey after all the gui
{
"folke/which-key.nvim",
keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" },
cmd = "WhichKey",
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
},
{
"folke/noice.nvim",
event = "VeryLazy",
opts = function()
return require "configs.noice"
end,
init = function()
require("noice").setup {
routes = {
{
view = "notify",
filter = { event = "msg_showmode" },
},
},
lsp = {
signature = {
enabled = false,
},
},
}
end,
dependencies = {
"MunifTanjim/nui.nvim",
-- Uncomment the next line to use nvim-notify
-- "rcarriga/nvim-notify",
},
},
{
"folke/todo-comments.nvim",
lazy = false,
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
},
{
"folke/trouble.nvim",
cmd = "Trouble",
opts = {},
},
}