kickstart.nvim/lua/custom/plugins/00-init.lua

436 lines
12 KiB
Lua

vim.deprecate = function() end
-- You can add your own plugins here or in other files in this directory!
-- I promise not to create any merge conflicts in this directory :)
--
-- See the kickstart.nvim README for more information
return {
{
'HakonHarnes/img-clip.nvim',
event = 'VeryLazy',
opts = {},
keys = {
{ '<leader>p', '<cmd>PasteImage<cr>', desc = 'Paste image from system clipboard' },
},
},
{
'nvim-neo-tree/neo-tree.nvim',
version = '*',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim',
},
cmd = 'Neotree',
keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
},
opts = {
filesystem = {
window = {
mappings = {
['<c-z>'] = 'close_window',
},
},
},
},
},
{
'nvim-treesitter/nvim-treesitter-context',
event = 'VeryLazy',
config = function()
require('treesitter-context').setup {
enable = true,
max_lines = 3,
trim_scope = 'outer',
}
end,
},
{
'folke/flash.nvim',
event = 'VeryLazy',
opts = {},
keys = {
{
's',
mode = { 'n', 'x', 'o' },
function()
require('flash').jump()
end,
desc = 'Flash',
},
{
'S',
mode = { 'n', 'x', 'o' },
function()
require('flash').treesitter()
end,
desc = 'Flash Treesitter',
},
{
'r',
mode = 'o',
function()
require('flash').remote()
end,
desc = 'Remote Flash',
},
{
'R',
mode = { 'o', 'x' },
function()
require('flash').treesitter_search()
end,
desc = 'Treesitter Search',
},
{
'<c-s>',
mode = { 'c' },
function()
require('flash').toggle()
end,
desc = 'Toggle Flash Search',
},
},
},
{
'echasnovski/mini.statusline',
event = 'VeryLazy',
config = function()
require('mini.statusline').setup { use_icons = vim.g.have_nerd_font }
end,
},
{
'yokowasis/emmet-vim',
init = function()
vim.g.user_emmet_settings = {
typescriptreact = {
attribute_name = {
['class'] = 'class', -- override className -> class
},
},
}
end,
},
{
'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"}, "<c-d>", function() mc.lineAddCursor(-1) end)
-- set({ 'n', 'x' }, '<c-d>', 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' }, '<c-d>', 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 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,
},
{
'rachartier/tiny-inline-diagnostic.nvim',
event = 'VeryLazy', -- Or `LspAttach`
priority = 1000, -- needs to be loaded in first
config = function()
require('tiny-inline-diagnostic').setup()
vim.diagnostic.config { virtual_text = false } -- Only if needed in your configuration, if you already have native LSP diagnostics
end,
},
{
'echasnovski/mini.indentscope',
event = 'VeryLazy',
config = function()
require('mini.indentscope').setup {
symbol = '',
options = { try_as_border = true },
}
end,
},
{
'NickvanDyke/opencode.nvim',
dependencies = { 'folke/snacks.nvim' },
---@type opencode.Config
opts = {
-- Your configuration, if any
},
-- stylua: ignore
keys = {
{ '<leader>ot', function() require('opencode').toggle() end, desc = 'Toggle embedded opencode', },
{ '<leader>oa', function() require('opencode').ask() end, desc = 'Ask opencode', mode = 'n', },
{ '<leader>oa', function() require('opencode').ask('@selection: ') end, desc = 'Ask opencode about selection', mode = 'v', },
{ '<leader>op', function() require('opencode').select_prompt() end, desc = 'Select prompt', mode = { 'n', 'v', }, },
{ '<leader>on', function() require('opencode').command('session_new') end, desc = 'New session', },
{ '<leader>oy', function() require('opencode').command('messages_copy') end, desc = 'Copy last message', },
{ '<S-C-u>', function() require('opencode').command('messages_half_page_up') end, desc = 'Scroll messages up', },
{ '<S-C-d>', function() require('opencode').command('messages_half_page_down') end, desc = 'Scroll messages down', },
},
},
{
'olimorris/codecompanion.nvim',
tag = 'v17.33.0', -- Pin to stable version to avoid breaking changes
dependencies = {
'ravitemer/mcphub.nvim',
'nvim-lua/plenary.nvim',
'nvim-treesitter/nvim-treesitter',
},
},
-- {
-- 'MeanderingProgrammer/render-markdown.nvim',
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' },
-- ft = { 'markdown', 'codecompanion' },
-- },
{
'echasnovski/mini.diff',
config = function()
local diff = require 'mini.diff'
diff.setup {
-- Enable git source
source = diff.gen_source.git(),
view = {
style = 'sign', -- Show git changes in sign column
signs = { add = '+', change = '~', delete = '-' },
},
}
end,
},
{
'MagicDuck/grug-far.nvim',
config = function()
require('grug-far').setup {
headerMaxWidth = 80,
}
end,
cmd = 'GrugFar',
keys = {
{ '<leader>S', '<cmd>GrugFar<cr>', desc = 'Search and Replace (grug-far)' },
{
'<leader>sw',
function()
require('grug-far').grug_far { prefills = { search = vim.fn.expand '<cword>' } }
end,
desc = 'Search current word',
},
{
'<leader>sf',
function()
require('grug-far').grug_far { prefills = { paths = vim.fn.expand '%' } }
end,
desc = 'Search in current file',
},
},
},
{
'folke/noice.nvim',
event = 'VeryLazy',
opts = {
lsp = {
progress = {
enabled = false,
},
hover = {
enabled = false,
},
signature = {
enabled = false,
},
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
-- ['vim.lsp.util.convert_input_to_markdown_lines'] = true,
-- ['vim.lsp.util.stylize_markdown'] = true,
-- ['cmp.entry.get_documentation'] = true, -- requires hrsh7th/nvim-cmp
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
views = {
mini = {
size = {
width = 'auto',
height = 'auto',
},
border = {
style = 'rounded',
},
win_options = {
winblend = 10,
},
},
},
},
dependencies = {
'MunifTanjim/nui.nvim',
},
},
{
'luckasRanarison/tailwind-tools.nvim',
name = 'tailwind-tools',
build = ':UpdateRemotePlugins',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-telescope/telescope.nvim', -- optional
'neovim/nvim-lspconfig', -- optional
},
opts = {}, -- your configuration
},
{
'supermaven-inc/supermaven-nvim',
config = function()
require('supermaven-nvim').setup {
keymaps = {
accept_suggestion = '<c-j>',
accept_word = '<>',
},
}
end,
},
{
'kristijanhusak/vim-dadbod-ui',
dependencies = {
{ 'tpope/vim-dadbod', lazy = true },
{ 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true }, -- Optional
},
cmd = {
'DBUI',
'DBUIToggle',
'DBUIAddConnection',
'DBUIFindBuffer',
},
init = function()
-- Your DBUI configuration
vim.g.db_ui_use_nerd_fonts = 1
end,
},
-- colorschemes
-- {
-- 'ribru17/bamboo.nvim',
-- lazy = false,
-- priority = 1000,
-- config = function()
-- require('bamboo').setup {
-- -- optional configuration here
-- code_style = {
-- comments = {
-- italic = false,
-- },
-- conditionals = {
-- italic = false,
-- },
-- keywords = {
-- italic = false,
-- },
-- functions = {
-- italic = false,
-- },
-- namespaces = {
-- italic = false,
-- },
-- parameters = {
-- italic = false,
-- },
-- strings = {
-- italic = false,
-- },
-- variables = {
-- italic = false,
-- },
-- },
-- highlights = {
-- -- Remove underlines from tag-related groups
-- ['htmlLink'] = { fg = '$blue' },
-- ['@markup.link.label.html'] = { fg = '$blue' },
-- ['@string.special.url.html'] = { fg = '$orange' },
-- -- TSX/JSX related
-- ['@_jsx_element.tsx'] = { fg = '$blue' },
-- ['@_jsx_element'] = { fg = '$blue' },
-- ['@none.tsx'] = { fg = '$blue' },
-- ['@spell.tsx'] = { fg = '$blue' },
-- ['@markup.link.label.tsx'] = { fg = '$blue' },
-- -- JavaScript/JSX related
-- ['@_jsx_element.javascript'] = { fg = '$blue' },
-- ['@none.javascript'] = { fg = '$blue' },
-- ['@spell.javascript'] = { fg = '$blue' },
-- ['@markup.link.label.javascript'] = { fg = '$blue' },
-- },
-- }
-- require('bamboo').load()
-- end,
-- },
-- { 'Mofiqul/dracula.nvim' },
{
'thesimonho/kanagawa-paper.nvim',
lazy = false,
priority = 1000,
opts = {},
config = function()
vim.cmd 'colorscheme kanagawa-paper-ink'
end,
},
-- {
-- 'rose-pine/neovim',
-- name = 'rose-pine',
-- config = function() end,
-- },
}