From 41ac6c5056a2c313f28d139949bcf7763d5c6bee Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 12 Jul 2026 06:19:23 +0800 Subject: [PATCH] plugins --- lua/custom/plugins/00-plugins.lua | 133 ++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 lua/custom/plugins/00-plugins.lua diff --git a/lua/custom/plugins/00-plugins.lua b/lua/custom/plugins/00-plugins.lua new file mode 100644 index 00000000..0b5d6ffd --- /dev/null +++ b/lua/custom/plugins/00-plugins.lua @@ -0,0 +1,133 @@ +-- ============================================================================= +-- PLUGIN REGISTRATIONS +-- ============================================================================= +vim.pack.add({ + { src = 'https://github.com/folke/flash.nvim' }, + { src = 'https://github.com/yokowasis/emmet-vim' }, + { + src = 'https://github.com/jake-stewart/multicursor.nvim', + version = '1.0', + }, + { src = 'https://github.com/MagicDuck/grug-far.nvim' }, + { src = 'https://github.com/tpope/vim-dadbod' }, + { src = 'https://github.com/kristijanhusak/vim-dadbod-ui' }, + { src = 'https://github.com/kristijanhusak/vim-dadbod-completion' }, + { src = 'https://github.com/thesimonho/kanagawa-paper.nvim' }, +}) + +-- ============================================================================= +-- FLASH NAVIGATION +-- ============================================================================= +require("flash").setup({}) + +vim.keymap.set({ "n", "x", "o" }, "s", function() + require("flash").jump() +end, { desc = "Flash" }) + +vim.keymap.set({ "n", "x", "o" }, "S", function() + require("flash").treesitter() +end, { desc = "Flash Treesitter" }) + +vim.keymap.set("o", "r", function() + require("flash").remote() +end, { desc = "Remote Flash" }) + +vim.keymap.set({ "o", "x" }, "R", function() + require("flash").treesitter_search() +end, { desc = "Treesitter Search" }) + +vim.keymap.set("c", "", function() + require("flash").toggle() +end, { desc = "Toggle Flash Search" }) + +-- ============================================================================= +-- EMMET +-- ============================================================================= +vim.g.user_emmet_settings = { + typescriptreact = { + attribute_name = { + ["class"] = "class", + }, + }, +} + +-- ============================================================================= +-- MULTICURSOR +-- ============================================================================= +local mc = require("multicursor-nvim") +mc.setup() + +local set = vim.keymap.set + +set({ "n", "x" }, "", function() + mc.matchAddCursor(1) +end) + +set("n", "", mc.handleMouse) +set("n", "", mc.handleMouseDrag) +set("n", "", mc.handleMouseRelease) + +set({ "n", "x" }, "", mc.toggleCursor) + +mc.addKeymapLayer(function(layerSet) + layerSet({ "n", "x" }, "x", mc.deleteCursor) + + layerSet("n", "", function() + if not mc.cursorsEnabled() then + mc.enableCursors() + else + mc.clearCursors() + end + end) +end) + +local hl = vim.api.nvim_set_hl +hl(0, "MultiCursorCursor", { reverse = true }) +hl(0, "MultiCursorVisual", { link = "Visual" }) +hl(0, "MultiCursorSign", { link = "SignColumn" }) +hl(0, "MultiCursorMatchPreview", { link = "Search" }) +hl(0, "MultiCursorDisabledCursor", { reverse = true }) +hl(0, "MultiCursorDisabledVisual", { link = "Visual" }) +hl(0, "MultiCursorDisabledSign", { link = "SignColumn" }) + +-- ============================================================================= +-- GRUG-FAR (SEARCH & REPLACE) +-- ============================================================================= +require("grug-far").setup({ + headerMaxWidth = 80, +}) + +vim.api.nvim_create_user_command("GrugFar", function() + require("grug-far").open() +end, {}) + +local set = vim.keymap.set + +set("n", "S", "GrugFar", { desc = "Search and Replace (grug-far)" }) + +set("n", "sw", function() + require("grug-far").grug_far({ prefills = { search = vim.fn.expand("") } }) +end, { desc = "Search current word" }) + +set("n", "sf", function() + require("grug-far").grug_far({ prefills = { paths = vim.fn.expand("%") } }) +end, { desc = "Search in current file" }) + +-- ============================================================================= +-- DADBOD (DATABASE TOOLS) +-- ============================================================================= +vim.g.db_ui_use_nerd_fonts = 1 + +vim.api.nvim_create_autocmd("FileType", { + pattern = { "sql", "mysql", "plsql" }, + callback = function() + vim.fn["compe#register"]({ source = "vim-dadbod-completion" }) + end, +}) + +-- ============================================================================= +-- KANAGAWA-PAPER COLORSCHEME +-- ============================================================================= +require("kanagawa-paper").setup({}) + +vim.cmd("colorscheme kanagawa-paper-ink")