234 lines
6.6 KiB
Lua
234 lines
6.6 KiB
Lua
-- ~/.config/nvim/lua/plugins/init.lua
|
|
return {
|
|
-- Colorschemes
|
|
{ "gruvbox-community/gruvbox", priority = 1000 },
|
|
{ "folke/tokyonight.nvim", priority = 1000 },
|
|
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 },
|
|
{ "EdenEast/nightfox.nvim", priority = 1000 },
|
|
{ "rose-pine/neovim", name = "rose-pine", priority = 1000 },
|
|
{ "rebelot/kanagawa.nvim", priority = 1000 },
|
|
{ "sainnhe/everforest", priority = 1000 },
|
|
|
|
|
|
-- Auto-save
|
|
{
|
|
"okuuva/auto-save.nvim",
|
|
version = "v1.*",
|
|
event = { "InsertLeave", "TextChanged" },
|
|
opts = {
|
|
enabled = true,
|
|
execution_message = {
|
|
enabled = false,
|
|
},
|
|
trigger_events = {
|
|
immediate_save = { "BufLeave", "FocusLost" },
|
|
defer_save = { "InsertLeave", "TextChanged" },
|
|
cancel_defered_save = { "InsertEnter" },
|
|
},
|
|
},
|
|
},
|
|
|
|
-- File explorer
|
|
{ import = "plugins.nvim-tree" },
|
|
|
|
-- Treesitter
|
|
{ import = "plugins.treesitter" },
|
|
|
|
-- Rainbow delimiters
|
|
{ import = "plugins.rainbow_delimiters" },
|
|
|
|
-- Git integration
|
|
{
|
|
"lewis6991/gitsigns.nvim",
|
|
opts = {
|
|
signs = {
|
|
add = { text = "│" },
|
|
change = { text = "│" },
|
|
delete = { text = "_" },
|
|
topdelete = { text = "‾" },
|
|
changedelete = { text = "~" },
|
|
untracked = { text = "┆" },
|
|
},
|
|
signcolumn = false, -- Disable signs by default
|
|
numhl = false, -- Disable number highlights by default
|
|
linehl = false, -- Disable line highlights by default
|
|
word_diff = false,
|
|
current_line_blame = false,
|
|
}
|
|
},
|
|
{ "tpope/vim-fugitive" },
|
|
|
|
-- Status line
|
|
{ import = "plugins.lualine" },
|
|
|
|
-- FZF
|
|
{
|
|
"junegunn/fzf",
|
|
build = function()
|
|
vim.fn["fzf#install"]()
|
|
end,
|
|
},
|
|
{ "junegunn/fzf.vim" },
|
|
|
|
-- Productivity
|
|
{ "numToStr/Comment.nvim", opts = {} },
|
|
{ "windwp/nvim-autopairs", opts = {} },
|
|
{ "tpope/vim-surround" },
|
|
|
|
-- Tmux navigation
|
|
{ "christoomey/vim-tmux-navigator" },
|
|
|
|
-- LaTeX
|
|
{ import = "plugins.vimtex" },
|
|
|
|
-- Org-mode
|
|
{
|
|
"nvim-orgmode/orgmode",
|
|
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
|
opts = {},
|
|
},
|
|
|
|
-- Telescope
|
|
{
|
|
"nvim-telescope/telescope.nvim",
|
|
dependencies = { "nvim-lua/plenary.nvim" },
|
|
keys = {
|
|
{ "<leader>ff", ":Telescope find_files<CR>", desc = "Find files" },
|
|
{ "<leader>fg", ":Telescope live_grep<CR>", desc = "Live grep" },
|
|
{ "<leader>fb", ":Telescope buffers<CR>", desc = "Buffers" },
|
|
{ "<leader>fh", ":Telescope help_tags<CR>", desc = "Help tags" },
|
|
},
|
|
},
|
|
|
|
-- Yazi file manager
|
|
{
|
|
"mikavilpas/yazi.nvim",
|
|
keys = {
|
|
{ "<leader>y", ":Yazi<CR>", desc = "Open Yazi" },
|
|
},
|
|
opts = {
|
|
open_for_directories = false,
|
|
keymaps = {
|
|
show_help = "<F1>",
|
|
},
|
|
},
|
|
},
|
|
|
|
-- Leap (motion)
|
|
{
|
|
"ggandor/leap.nvim",
|
|
event = "VeryLazy",
|
|
config = function()
|
|
require('leap').add_default_mappings()
|
|
-- Override default s/S with f/F to avoid conflict with surround
|
|
vim.keymap.del({'n', 'x', 'o'}, 's')
|
|
vim.keymap.del({'n', 'x', 'o'}, 'S')
|
|
vim.keymap.set({'n', 'x', 'o'}, 'f', '<Plug>(leap-forward)')
|
|
vim.keymap.set({'n', 'x', 'o'}, 'F', '<Plug>(leap-backward)')
|
|
end,
|
|
},
|
|
|
|
-- Markdown
|
|
{ "SidOfc/mkdx" },
|
|
{
|
|
"MeanderingProgrammer/render-markdown.nvim",
|
|
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" },
|
|
ft = { "markdown", "norg", "rmd", "org" },
|
|
config = function()
|
|
require('render-markdown').setup({
|
|
heading = {
|
|
enabled = true,
|
|
sign = true,
|
|
position = 'overlay',
|
|
icons = { ' ', ' ', ' ', ' ', ' ', ' ' },
|
|
backgrounds = {
|
|
'RenderMarkdownH1Bg',
|
|
'RenderMarkdownH2Bg',
|
|
'RenderMarkdownH3Bg',
|
|
'RenderMarkdownH4Bg',
|
|
'RenderMarkdownH5Bg',
|
|
'RenderMarkdownH6Bg',
|
|
},
|
|
foregrounds = {
|
|
'RenderMarkdownH1',
|
|
'RenderMarkdownH2',
|
|
'RenderMarkdownH3',
|
|
'RenderMarkdownH4',
|
|
'RenderMarkdownH5',
|
|
'RenderMarkdownH6',
|
|
},
|
|
},
|
|
})
|
|
|
|
-- Set highlights after ColorScheme event to ensure they persist
|
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
|
callback = function()
|
|
-- Translucent heading backgrounds with alpha blending
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = '#2d5a7b', fg = 'NONE' })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = '#3d5f4e', fg = 'NONE' })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = '#5f5e3a', fg = 'NONE' })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = '#5f4a3e', fg = 'NONE' })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH5Bg', { bg = '#4e4a5f', fg = 'NONE' })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = '#4a5e5f', fg = 'NONE' })
|
|
|
|
-- Bold, colored heading text
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH1', { fg = '#88c0d0', bold = true })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH2', { fg = '#a3be8c', bold = true })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH3', { fg = '#ebcb8b', bold = true })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH4', { fg = '#d08770', bold = true })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH5', { fg = '#b48ead', bold = true })
|
|
vim.api.nvim_set_hl(0, 'RenderMarkdownH6', { fg = '#8fbcbb', bold = true })
|
|
end,
|
|
})
|
|
|
|
-- Apply highlights immediately
|
|
vim.schedule(function()
|
|
vim.cmd('doautocmd ColorScheme')
|
|
end)
|
|
end,
|
|
},
|
|
|
|
-- Code formatting
|
|
{ import = "plugins.prettier" },
|
|
|
|
-- Copilot
|
|
{
|
|
"zbirenbaum/copilot.lua",
|
|
event = "InsertEnter",
|
|
opts = {
|
|
suggestion = { enabled = true },
|
|
panel = { enabled = true },
|
|
},
|
|
},
|
|
|
|
-- Indent guides
|
|
{
|
|
"lukas-reineke/indent-blankline.nvim",
|
|
main = "ibl",
|
|
opts = {},
|
|
},
|
|
|
|
-- UFO (folding)
|
|
{
|
|
"kevinhwang91/nvim-ufo",
|
|
dependencies = { "kevinhwang91/promise-async" },
|
|
event = "BufReadPost",
|
|
config = function()
|
|
vim.o.foldcolumn = "0"
|
|
vim.o.foldlevel = 99
|
|
vim.o.foldlevelstart = 99
|
|
vim.o.foldenable = true
|
|
|
|
require("ufo").setup({
|
|
provider_selector = function(bufnr, filetype, buftype)
|
|
-- Disable for latex and markdown files
|
|
if filetype == "tex" or filetype == "latex" or filetype == "markdown" then
|
|
return ""
|
|
end
|
|
return { "treesitter", "indent" }
|
|
end,
|
|
})
|
|
end,
|
|
},
|
|
}
|