214 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| return {
 | |
| 
 | |
|     { "sindrets/diffview.nvim"  },
 | |
| 
 | |
|     {
 | |
|         'windwp/nvim-autopairs',
 | |
|         event = "InsertEnter",
 | |
|         config = true
 | |
|         -- use opts = {} for passing setup options
 | |
|         -- this is equivalent to setup({}) function
 | |
|     },
 | |
| 
 | |
|     {
 | |
|         'brenoprata10/nvim-highlight-colors',
 | |
|         opts = {
 | |
|             render = 'virtual',
 | |
|         },
 | |
|     },
 | |
| 
 | |
|     {
 | |
|         'echasnovski/mini.nvim',
 | |
|         config = function()
 | |
|             local miniclue = require'mini.clue'
 | |
|             miniclue.setup{
 | |
|                 window = {
 | |
|                     delay = 0,
 | |
|                     config = {
 | |
|                         width = 'auto',
 | |
|                     },
 | |
|                 },
 | |
|                 triggers = {
 | |
|                     -- Leader triggers
 | |
|                     { mode = 'n', keys = '<Leader>' },
 | |
|                     { mode = 'x', keys = '<Leader>' },
 | |
| 
 | |
|                     -- Built-in completion
 | |
|                     { mode = 'i', keys = '<C-x>' },
 | |
| 
 | |
|                     -- `g` key
 | |
|                     { mode = 'n', keys = 'g' },
 | |
|                     { mode = 'x', keys = 'g' },
 | |
| 
 | |
|                     -- Next
 | |
|                     { mode = 'n', keys = '['},
 | |
|                     { mode = 'n', keys = ']'},
 | |
|                     { mode = 'x', keys = '['},
 | |
|                     { mode = 'x', keys = ']'},
 | |
| 
 | |
|                     -- Marks
 | |
|                     { mode = 'n', keys = "'" },
 | |
|                     { mode = 'n', keys = '`' },
 | |
|                     { mode = 'x', keys = "'" },
 | |
|                     { mode = 'x', keys = '`' },
 | |
| 
 | |
|                     -- Registers
 | |
|                     { mode = 'n', keys = '"' },
 | |
|                     { mode = 'x', keys = '"' },
 | |
|                     { mode = 'i', keys = '<C-r>' },
 | |
|                     { mode = 'c', keys = '<C-r>' },
 | |
| 
 | |
|                     -- Window commands
 | |
|                     { mode = 'n', keys = '<C-w>' },
 | |
| 
 | |
|                     -- `z` key
 | |
|                     { mode = 'n', keys = 'z' },
 | |
|                     { mode = 'x', keys = 'z' },
 | |
|                 },
 | |
| 
 | |
|                 clues = {
 | |
|                     -- Enhance this by adding descriptions for <Leader> mapping groups
 | |
|                     miniclue.gen_clues.builtin_completion(),
 | |
|                     miniclue.gen_clues.g(),
 | |
|                     miniclue.gen_clues.marks(),
 | |
|                     miniclue.gen_clues.registers(),
 | |
|                     miniclue.gen_clues.windows(),
 | |
|                     miniclue.gen_clues.z(),
 | |
| 
 | |
|                     { mode = 'n', keys = '<leader>f', desc = '+Find' },
 | |
|                     { mode = 'x', keys = '<leader>f', desc = '+Find' },
 | |
| 
 | |
|                     { mode = 'n', keys = '<leader>o', desc = '+Open' },
 | |
|                     { mode = 'x', keys = '<leader>o', desc = '+Open' },
 | |
|                 },
 | |
|             }
 | |
|         end
 | |
|     },
 | |
| 
 | |
|     {
 | |
|         'stevearc/oil.nvim',
 | |
|         ---@module 'oil'
 | |
|         ---@type oil.SetupOpts
 | |
|         opts = {
 | |
|             triggers = {
 | |
|                 { 'g', mode = { 'n', 'x' } },
 | |
|             },
 | |
|         },
 | |
|         -- Optional dependencies
 | |
|         dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
 | |
|         -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
 | |
|         lazy = false,
 | |
|     },
 | |
| 
 | |
|     { 'eandrju/cellular-automaton.nvim' },
 | |
| 
 | |
|     {
 | |
|         "kylechui/nvim-surround",
 | |
|         version = "^3.0.0", -- 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
 | |
|     },
 | |
| 
 | |
|     { 'jbyuki/nabla.nvim' },
 | |
| 
 | |
|     {
 | |
|         'krady21/compiler-explorer.nvim',
 | |
|         opts = {
 | |
|             autocmd = {
 | |
|                 enable = true,
 | |
|                 hl = 'Cursorline',
 | |
|             },
 | |
|         }
 | |
|     },
 | |
| 
 | |
|     {
 | |
|         'samjwill/nvim-unception'
 | |
|     },
 | |
| 
 | |
|     {
 | |
|         "jake-stewart/multicursor.nvim",
 | |
|         branch = "1.0",
 | |
|         config = function()
 | |
|             local mc = require("multicursor-nvim")
 | |
|             mc.setup()
 | |
| 
 | |
|             local set = vim.keymap.set
 | |
| 
 | |
|             -- Add or skip cursor above/below the main cursor.
 | |
|             set({"n", "x"}, "<up>", function() mc.lineAddCursor(-1) end)
 | |
|             set({"n", "x"}, "<down>", function() mc.lineAddCursor(1) end)
 | |
|             -- set({"n", "x"}, "<leader><up>", function() mc.lineSkipCursor(-1) end)
 | |
|             -- set({"n", "x"}, "<leader><down>", function() mc.lineSkipCursor(1) end)
 | |
| 
 | |
|             -- Add or skip adding a new cursor by matching word/selection
 | |
|             -- set({"n", "x"}, "<leader>n", function() mc.matchAddCursor(1) end)
 | |
|             -- set({"n", "x"}, "<leader>s", function() mc.matchSkipCursor(1) end)
 | |
|             -- set({"n", "x"}, "<leader>N", function() mc.matchAddCursor(-1) end)
 | |
|             -- set({"n", "x"}, "<leader>S", function() mc.matchSkipCursor(-1) end)
 | |
| 
 | |
|             -- Add cursor at next argument treesitter
 | |
|             set({'n', 'x'}, ']A', function()
 | |
|                 if vim.v.count < 1 then
 | |
|                     mc.addCursor(']a')
 | |
|                 else
 | |
|                     for i=1, vim.v.count - 1 do
 | |
|                         mc.addCursor(']a')
 | |
|                     end
 | |
|                 end
 | |
|             end, { desc = 'Create multicursor on next argument'})
 | |
|             set({'n', 'x'}, '[A', function()
 | |
|                 if vim.v.count < 1 then
 | |
|                     mc.addCursor('[a')
 | |
|                 else
 | |
|                     for i=1, vim.v.count - 1 do
 | |
|                         mc.addCursor('[a')
 | |
|                     end
 | |
|                 end
 | |
|             end, { desc = 'Create multicursor on previous argument'})
 | |
| 
 | |
|             -- Add and remove cursors with control + left click.
 | |
|             set("n", "<c-leftmouse>", mc.handleMouse)
 | |
|             set("n", "<c-leftdrag>", mc.handleMouseDrag)
 | |
|             set("n", "<c-leftrelease>", mc.handleMouseRelease)
 | |
| 
 | |
|             -- Disable and enable cursors.
 | |
|             set({"n", "x"}, "<c-q>", mc.toggleCursor)
 | |
| 
 | |
|             -- Mappings defined in a keymap layer only apply when there are
 | |
|             -- multiple cursors. This lets you have overlapping mappings.
 | |
|             mc.addKeymapLayer(function(layerSet)
 | |
| 
 | |
|                 -- Select a different cursor as the main one.
 | |
|                 layerSet({"n", "x"}, "<left>", mc.prevCursor)
 | |
|                 layerSet({"n", "x"}, "<right>", mc.nextCursor)
 | |
| 
 | |
|                 -- Delete the main cursor.
 | |
|                 layerSet({"n", "x"}, "<leader>x", mc.deleteCursor)
 | |
| 
 | |
|                 -- Enable and clear cursors using escape.
 | |
|                 layerSet("n", "<esc>", function()
 | |
|                     if not mc.cursorsEnabled() then
 | |
|                         mc.enableCursors()
 | |
|                     else
 | |
|                         mc.clearCursors()
 | |
|                     end
 | |
|                 end)
 | |
|             end)
 | |
| 
 | |
|             -- Customize how cursors look.
 | |
|             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"})
 | |
|         end
 | |
|     },
 | |
| }
 | 
