This commit is contained in:
Greg 2026-02-26 01:45:57 +02:00
parent c41d70bd6e
commit a552a1e8a7
37 changed files with 937 additions and 1074 deletions

View file

@ -1,5 +1,11 @@
require("options") require("options")
require("config.lazy")
require("keymaps") require("keymaps")
require("autocmd") require("autocmd")
require("snippets") require("plugins")
-- TODO:
-- Treesitter update + treesitter movements
-- Aerial needs new treesitter, not always showing symbols for lua files
-- Buffers management: delete others, select in picker (keybindings for pickers)
-- Autoclose explorer on file open
-- https://github.com/tduyng/nvim/tree/main

View file

@ -1,35 +0,0 @@
{
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
"aerial.nvim": { "branch": "master", "commit": "7a6a42791eb2b54a7115c7db4488981f93471770" },
"auto-session": { "branch": "main", "commit": "dcbc339a1a0e6505f755d980ad11f892b6a8d492" },
"blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"hardtime.nvim": { "branch": "main", "commit": "b4e431934af1fe224a3a801f632c008278cb7628" },
"js-i18n.nvim": { "branch": "main", "commit": "5157a1c1a47b14aa77fa6e50626dc1add4d1a618" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "21c2a84ce368e99b18f52ab348c4c02c32c02fcf" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"mentor.nvim": { "branch": "main", "commit": "54733a923072d57e50f3acc0d850fbd0b3b95f8a" },
"minuet-ai.nvim": { "branch": "main", "commit": "3d25c24487876676d29d325c01ce108cbdbd0753" },
"neotest": { "branch": "master", "commit": "deadfb1af5ce458742671ad3a013acb9a6b41178" },
"neotest-jest": { "branch": "main", "commit": "3f0cc2cff1ee05394081805c622dc2551b54d8c4" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
"nvim-lspconfig": { "branch": "master", "commit": "44acfe887d4056f704ccc4f17513ed41c9e2b2e6" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-surround": { "branch": "main", "commit": "1098d7b3c34adcfa7feb3289ee434529abd4afd1" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"render-markdown.nvim": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
"smear-cursor.nvim": { "branch": "main", "commit": "c85bdbb25db096fbcf616bc4e1357bd61fe2c199" },
"snacks.nvim": { "branch": "main", "commit": "da230e3ca8146da4b73752daaf0a1d07d343c12d" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
"typescript-tools.nvim": { "branch": "master", "commit": "c2f5910074103705661e9651aa841e0d7eea9932" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
}

View file

@ -46,10 +46,25 @@ vim.api.nvim_create_autocmd("BufReadPost", {
end, end,
}) })
local group = vim.api.nvim_create_augroup("AutoRestartOnConfigChange", { clear = true })
local notify_file = vim.fn.stdpath("cache") .. "/.restart_notify"
vim.api.nvim_create_autocmd("VimEnter", { vim.api.nvim_create_autocmd("VimEnter", {
desc = "Clear jump list when vim starts", group = group,
group = vim.api.nvim_create_augroup("clear-jumps", { clear = true }),
callback = function() callback = function()
vim.cmd.clearjumps() if vim.fn.filereadable(notify_file) == 1 then
vim.notify("Neovim restarted successfully!", vim.log.levels.INFO)
os.remove(notify_file)
end
end,
})
vim.api.nvim_create_autocmd("BufWritePost", {
group = group,
pattern = vim.fn.stdpath("config") .. "/**",
callback = function()
vim.fn.writefile({}, notify_file)
vim.cmd("AutoSession save")
vim.cmd("restart")
end, end,
}) })

View file

@ -1,23 +0,0 @@
-- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"--branch=stable",
lazyrepo,
lazypath,
})
if vim.v.shell_error ~= 0 then
error("Error cloning lazy.nvim:\n" .. out)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({ import = "plugins" }, { install = { colorscheme = { "tokyonight-storm" } } })

View file

@ -18,10 +18,10 @@ vim.keymap.set("v", "p", '"_dP', { desc = "do not overwrite 0 register when past
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" }) vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
-- TIP: Disable arrow keys in normal mode -- TIP: Disable arrow keys in normal mode
vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>') vim.keymap.set("n", "<left>", function() vim.notify("Use h to move!!") end)
vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>') vim.keymap.set("n", "<right>", function() vim.notify("Use l to move!!") end)
vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>') vim.keymap.set("n", "<up>", function() vim.notify("Use k to move!!") end)
vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>') vim.keymap.set("n", "<down>", function() vim.notify("Use j to move!!") end)
vim.keymap.set("n", "<X1Mouse>", "<C-O>", { silent = true, desc = "go back with mouse" }) vim.keymap.set("n", "<X1Mouse>", "<C-O>", { silent = true, desc = "go back with mouse" })
vim.keymap.set("n", "<X2Mouse>", "<C-I>", { silent = true, desc = "go forward with mouse" }) vim.keymap.set("n", "<X2Mouse>", "<C-I>", { silent = true, desc = "go forward with mouse" })

View file

@ -86,6 +86,8 @@ vim.opt.cmdheight = 0
-- do not unload closed buffer from jumplist -- do not unload closed buffer from jumplist
vim.opt.jumpoptions = "" vim.opt.jumpoptions = ""
vim.diagnostic.config({ virtual_text = true, underline = false }) vim.diagnostic.config({ virtual_text = true, underline = true })
vim.opt.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
vim.cmd.packadd("cfilter") vim.cmd.packadd("cfilter")

View file

@ -1,55 +1,47 @@
return { vim.pack.add({ "https://github.com/stevearc/aerial.nvim" })
"stevearc/aerial.nvim",
opts = { local Aerial = require("aerial")
highlight_on_hover = true,
highlight_on_jump = 300, Aerial.setup({
autojump = true, highlight_on_hover = true,
post_jump_cmd = "normal! zzl", highlight_on_jump = 300,
filter_kind = { autojump = true,
"Array", post_jump_cmd = "normal! zzl",
"Boolean", backends = { lua = { "lsp" } },
"Class", filter_kind = {
"Constant", "Array",
"Constructor", "Boolean",
"Enum", "Class",
"EnumMember", "Constant",
"Event", "Constructor",
"Field", "Enum",
"File", "EnumMember",
"Function", "Event",
"Interface", "Field",
"Key", "File",
"Method", "Function",
"Module", "Interface",
"Namespace", "Key",
"Null", "Method",
"Number", "Module",
"Object", "Namespace",
"Operator", "Null",
"Package", "Number",
"Property", "Object",
"String", "Operator",
"Struct", "Package",
"TypeParameter", "Property",
"Variable", "String",
}, "Struct",
"TypeParameter",
"Variable",
}, },
-- Optional dependencies })
dependencies = {
"nvim-treesitter/nvim-treesitter", vim.keymap.set("n", "<leader>ss", function()
"nvim-tree/nvim-web-devicons", Aerial.snacks_picker({ attach_mode = "window" })
}, end, { desc = "Symbols" })
keys = {
{ vim.keymap.set("n", "<leader>sw", function()
"<leader>ss", Aerial.snacks_picker({ attach_mode = "global" })
function() end, { desc = "Workspace Symbols" })
require("aerial").snacks_picker({
layout = {
cycle = true,
},
})
end,
desc = "Symbols",
},
},
}

View file

@ -1,6 +1,8 @@
return { vim.pack.add({ "https://github.com/windwp/nvim-autopairs" })
"windwp/nvim-autopairs",
event = "InsertEnter", local Autopairs = require("nvim-autopairs")
config = true,
} Autopairs.setup()

View file

@ -1,75 +1,62 @@
return { vim.pack.add({ "https://github.com/saghen/blink.cmp" })
"saghen/blink.cmp",
dependencies = { local Blink = require("blink.cmp")
{ "L3MON4D3/LuaSnip", version = "v2.*" },
Blink.setup({
fuzzy = {
implementation = "prefer_rust",
prebuilt_binaries = { force_version = "1.*" },
frecency = {
enabled = true,
unsafe_no_lock = false,
},
use_proximity = true,
sorts = {
"exact",
"score",
"sort_text",
"label",
},
}, },
version = "1.*", keymap = {
config = function() preset = "enter",
require("blink.cmp").setup({ ["<C-space>"] = { "hide", "show", "fallback" },
fuzzy = { },
frecency = { completion = {
enabled = true, trigger = {
unsafe_no_lock = false, prefetch_on_insert = false,
}, -- show_in_snippet = false,
use_proximity = true, },
sorts = { -- Disable showing for all alphanumeric keywords by default. Prefer LSP specific trigger
-- "exact", -- characters.
"score", -- trigger = { show_on_keyword = false },
"sort_text", -- Controls whether the documentation window will automatically show when selecting a completion item
"label", documentation = {
}, auto_show = true,
auto_show_delay_ms = 0,
window = {
border = "rounded",
scrollbar = false,
}, },
keymap = { },
preset = "enter", menu = {
["<C-space>"] = { "hide", "show", "fallback" }, border = "rounded",
["<A-y>"] = require("minuet").make_blink_map(), draw = { gap = 2 },
scrollbar = false,
},
},
snippets = { preset = "luasnip" },
sources = {
-- add lazydev to your completion providers
default = { "lazydev", "lsp", "snippets", "path", "buffer" },
providers = {
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
}, },
completion = { },
trigger = { },
prefetch_on_insert = false, signature = { enabled = true },
-- show_in_snippet = false, })
},
-- Disable showing for all alphanumeric keywords by default. Prefer LSP specific trigger
-- characters.
-- trigger = { show_on_keyword = false },
-- Controls whether the documentation window will automatically show when selecting a completion item
documentation = {
auto_show = true,
auto_show_delay_ms = 500,
window = {
border = "rounded",
scrollbar = false,
},
},
menu = {
border = "rounded",
draw = { gap = 2 },
scrollbar = false,
},
},
snippets = { preset = "luasnip" },
sources = {
-- add lazydev to your completion providers
default = { "lazydev", "lsp", "snippets", "path", "buffer" },
providers = {
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
},
minuet = {
name = "minuet",
module = "minuet.blink",
async = true,
-- Should match minuet.config.request_timeout * 1000,
-- since minuet.config.request_timeout is in seconds
timeout_ms = 3000,
score_offset = 50, -- Gives minuet higher priority among suggestions
},
},
},
signature = { enabled = true },
})
end,
}

View file

@ -1,43 +1,22 @@
-- Autoformat vim.pack.add({ "https://github.com/stevearc/conform.nvim" })
return {
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
"<leader>f",
function()
require("conform").format({ async = true, lsp_format = "fallback" })
end,
mode = "",
desc = "[F]ormat buffer",
},
},
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
local lsp_format_opt
if disable_filetypes[vim.bo[bufnr].filetype] then
lsp_format_opt = "never"
end
return {
timeout_ms = 500,
lsp_format = lsp_format_opt,
}
end,
formatters_by_ft = { local Conform = require("conform")
lua = { "stylua" },
javascript = { "biome", "biome-organize-imports" }, Conform.setup({
javascriptreact = { "biome", "biome-organize-imports" }, notify_on_error = false,
typescript = { "biome", "biome-organize-imports" }, format_on_save = {
typescriptreact = { "biome", "biome-organize-imports" }, -- These options will be passed to conform.format()
-- You can use 'stop_after_first' to run the first available formatter from the list timeout_ms = 500,
-- javascript = { "prettierd", "prettier", stop_after_first = true }, lsp_format = "fallback",
},
}, },
}
formatters_by_ft = {
lua = { "stylua" },
javascript = { "biome" },
javascriptreact = { "biome" },
typescript = { "biome" },
typescriptreact = { "biome" },
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
})

View file

@ -0,0 +1,3 @@
vim.pack.add({ "https://github.com/sphamba/smear-cursor.nvim" })
require("smear_cursor").setup()

View file

@ -1,12 +1,12 @@
return { vim.pack.add({ "https://github.com/folke/flash.nvim" })
"folke/flash.nvim",
event = "VeryLazy", local Flash = require("flash")
opts = {
Flash.setup({
jump = { jump = {
autojump = true, autojump = true,
}, },
label = { label = {
-- before = true,
after = true, after = true,
min_pattern_length = 1, min_pattern_length = 1,
style = "overlay", style = "overlay",
@ -14,31 +14,8 @@ return {
search = { search = {
mode = "search", mode = "search",
}, },
}, })
keys = {
{ vim.keymap.set({ "n", "x", "o" }, "s", function() require("flash").jump() end, { desc = "Flash" })
"s", -- TODO: use treesitter objects for vim motions
mode = { "n", "x", "o" }, -- vim.keymap.set({ "o", "x" }, "R", function() require("flash").treesitter_search() end, { desc = "Treesitter Search" })
function()
require("flash").jump()
end,
desc = "Flash",
},
-- {
-- "S",
-- mode = { "n", "x", "o" },
-- function()
-- require("flash").treesitter()
-- end,
-- desc = "Flash Treesitter",
-- },
{
"R",
mode = { "o", "x" },
function()
require("flash").treesitter_search()
end,
desc = "Treesitter Search",
},
},
}

View file

@ -1,14 +0,0 @@
return {
"m4xshen/hardtime.nvim",
lazy = false,
dependencies = { "MunifTanjim/nui.nvim" },
opts = {
disable_mouse = false,
disabled_keys = {
["<Up>"] = false,
["<Down>"] = false,
["<Left>"] = false,
["<Right>"] = false,
},
},
}

View file

@ -1,14 +1,26 @@
return { vim.pack.add({
"nabekou29/js-i18n.nvim", { src = "https://github.com/nabekou29/js-i18n.nvim", version = "v0.5.4" },
dependencies = { "https://github.com/nvim-lua/plenary.nvim",
"neovim/nvim-lspconfig", })
"nvim-treesitter/nvim-treesitter",
"nvim-lua/plenary.nvim", local I18n = require("js-i18n")
vim.opt.conceallevel = 2
I18n.setup({
primary_language = { "en" }, -- The default language to display (initial setting for displaying virtual text, etc.)
translation_source = { "**/{messages}/*.json" }, -- Pattern for translation resources
respect_gitignore = true, -- Whether to respect .gitignore when retrieving translation resources and implementation files. Setting to false may improve performance.
-- detect_language = ..., -- Function to detect the language. By default, a function that detects the language heuristically from the file name is used.
key_separator = ".", -- Key separator
virt_text = {
enabled = true, -- Enable virtual text display
conceal_key = true, -- Hide keys and display only translations
max_length = 20, -- Maximum length of virtual text. 0 means unlimited.
max_width = 0, -- Maximum width of virtual text. 0 means unlimited. (`max_length` takes precedence.)
}, },
event = { "BufReadPre", "BufNewFile" }, diagnostic = {
opts = { enabled = true, -- Enable the display of diagnostic information
virt_text = { severity = vim.diagnostic.severity.WARN, -- Severity level of diagnostic information
enabled = false, -- Enable virtual text display
},
}, },
} })

View file

@ -0,0 +1,18 @@
require("plugins.nord")
require("plugins.mason")
require("plugins.lspconfig")
require("plugins.lazydev")
require("plugins.luasnip")
require("plugins.surround")
require("plugins.conform")
require("plugins.flash")
require("plugins.autopairs")
require("plugins.treesitter")
require("plugins.lualine")
require("plugins.whichkey")
require("plugins.cursor")
require("plugins.snacks")
require("plugins.aerial")
require("plugins.i18n")
require("plugins.blink")
require("plugins.session")

View file

@ -0,0 +1,3 @@
vim.pack.add({ "https://github.com/rebelot/kanagawa.nvim" })
vim.cmd("colorscheme kanagawa-dragon")

View file

@ -1,15 +1,10 @@
-- lazydev.nvim is a plugin that properly configures LuaLS for editing your Neovim config by vim.pack.add({ "https://github.com/folke/lazydev.nvim" })
-- lazily updating your workspace libraries.
return { local Lazydev = require("lazydev")
'folke/lazydev.nvim',
ft = 'lua', Lazydev.setup({
opts = { library = {
library = { vim.env.VIMRUNTIME,
-- See the configuration section for more details { path = "${3rd}/luv/library", words = { "vim%.uv" } },
-- Load luvit types when the `vim.uv` word is found },
{ path = "${3rd}/luv/library", words = { "vim%.uv" } }, })
'~/.local/share/nvim/lazy/',
{ path = "snacks.nvim", words = { "Snacks", "snacks" } },
},
}
}

View file

@ -0,0 +1,35 @@
vim.pack.add({ "https://github.com/neovim/nvim-lspconfig" })
vim.lsp.config("lua_ls", {
settings = {
Lua = {
workspace = {
checkThirdParty = false,
library = {
vim.api.nvim_get_runtime_file("", true),
"${3rd}/luv/library",
},
},
runtime = {
version = "LuaJIT",
},
format = { enable = false },
telemetry = { enable = false },
-- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings
diagnostics = { disable = { "missing-fields" }, globals = { "vim", "require" } },
hint = { enable = true },
},
},
})
vim.lsp.enable({
"stylua",
"biome",
"tailwindcss",
"html",
"cssls",
"emmet_language_server",
"lua_ls",
"tsgo",
"codebook",
})

View file

@ -1,7 +1,8 @@
return { vim.pack.add({ "https://github.com/nvim-lualine/lualine.nvim", "https://github.com/nvim-lualine/lualine.nvim" })
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" }, local Lualine = require("lualine")
opts = {
Lualine.setup({
options = { options = {
icons_enabled = true, icons_enabled = true,
theme = "auto", theme = "auto",
@ -41,5 +42,4 @@ return {
winbar = {}, winbar = {},
inactive_winbar = {}, inactive_winbar = {},
extensions = {}, extensions = {},
}, })
}

View file

@ -1,57 +1,12 @@
return { vim.pack.add({
"L3MON4D3/LuaSnip", { src = "https://github.com/L3MON4D3/LuaSnip", version = "v2.4.1" },
-- follow latest release. "https://github.com/rafamadriz/friendly-snippets",
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release) })
-- install jsregexp (optional!).
build = "make install_jsregexp",
dependencies = {
"rafamadriz/friendly-snippets",
},
config = function()
require("luasnip").setup({
update_events = "TextChanged,TextChangedI",
})
require("luasnip.loaders.from_vscode").lazy_load() local Luasnip = require("luasnip")
require("luasnip").filetype_extend("typescript", { "javascript" }) Luasnip.setup({ update_events = "TextChanged,TextChangedI" })
require("luasnip").filetype_extend("typescriptreact", { "javascript" })
end, require("luasnip.loaders.from_vscode").lazy_load()
-- keys = { require("luasnip").filetype_extend("typescript", { "javascript" })
-- { require("luasnip").filetype_extend("typescriptreact", { "javascript" })
-- "<leader>rs",
-- ":source ~/.config/nvim/lua/snippets.lua<CR>",
-- desc = "[R]eload [s]nippets",
-- },
-- {
-- "<Tab>",
-- function()
-- if require("luasnip").locally_jumpable(1) then
-- require("luasnip").jump(1)
-- end
-- end,
-- mode = { "i", "s" },
-- desc = "next snippet placeholder",
-- },
-- {
-- "<S-Tab>",
-- function()
-- if require("luasnip").locally_jumpable(-1) then
-- require("luasnip").jump(-1)
-- end
-- end,
-- mode = { "i", "s" },
-- desc = "prev snippet placeholder",
-- },
-- {
-- "<C-e>",
-- function()
-- if require("luasnip").choice_active() then
-- require("luasnip").change_choice(1)
-- end
-- end,
-- mode = { "i", "s" },
-- desc = "prev snippet placeholder",
-- },
-- },
}

View file

@ -1,4 +0,0 @@
return {
"MeanderingProgrammer/render-markdown.nvim",
ft = { "markdown", "codecompanion" },
}

View file

@ -1,112 +1,22 @@
-- Automatically install LSPs and related tools to stdpath for neovim vim.pack.add({ "https://github.com/mason-org/mason.nvim" })
return {
"williamboman/mason.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"williamboman/mason-lspconfig.nvim",
},
config = function()
local servers = {
harper_ls = {
settings = {
["harper-ls"] = {
userDictPath = vim.fn.stdpath("config") .. "/spell/en.utf-8.add",
},
},
},
marksman = {},
-- vtsls = {
-- settings = {
-- complete_function_calls = true,
-- vtsls = {
-- enableMoveToFileCodeAction = true,
-- autoUseWorkspaceTsdk = true,
-- experimental = {
-- completion = {
-- enableServerSideFuzzyMatch = true,
-- },
-- },
-- },
-- javascript = {
-- updateImportsOnFileMove = { enabled = "always" },
-- suggest = {
-- completeFunctionCalls = true,
-- },
-- inlayHints = {
-- enumMemberValues = { enabled = true },
-- functionLikeReturnTypes = { enabled = true },
-- parameterNames = { enabled = "literals" },
-- parameterTypes = { enabled = true },
-- propertyDeclarationTypes = { enabled = true },
-- variableTypes = { enabled = true },
-- },
-- },
-- typescript = {
-- updateImportsOnFileMove = { enabled = "always" },
-- suggest = {
-- completeFunctionCalls = true,
-- },
-- inlayHints = {
-- enumMemberValues = { enabled = true },
-- functionLikeReturnTypes = { enabled = true },
-- parameterNames = { enabled = "literals" },
-- parameterTypes = { enabled = true },
-- propertyDeclarationTypes = { enabled = true },
-- variableTypes = { enabled = true },
-- },
-- },
-- },
-- },
lua_ls = {
settings = {
Lua = {
telemetry = { enable = false },
-- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings
diagnostics = { disable = { "missing-fields" } },
hint = { enable = true },
},
},
},
tailwindcss = {},
html = {},
cssls = {},
emmet_language_server = {},
}
-- Special formatted fields cannot be set above local Mason = require("mason")
-- servers.vtsls.settings["js/ts"] = { implicitProjectConfig = { checkJs = true } }
require("mason").setup() Mason.setup()
require("mason-lspconfig").setup({ local lsps = {
ensure_installed = vim.tbl_keys(servers or {}), "stylua",
automatic_installation = false, "biome",
handlers = { "tailwindcss-language-server",
function(server_name) "html-lsp",
local server = servers[server_name] or {} "css-lsp",
-- This handles overriding only values explicitly passed "emmet-language-server",
-- by the server configuration above. Useful when disabling "lua-language-server",
-- certain features of an LSP (for example, turning off formatting for ts_ls) "codebook",
server.capabilities = vim.tbl_deep_extend("force", {}, server.capabilities or {})
require("lspconfig")[server_name].setup(server)
end,
},
})
-- TODO: move to native lsp configs when
-- lspconfig plugin will be merged into core
-- for server, settings in pairs(servers) do
-- vim.lsp.config(server, settings)
-- vim.lsp.enable(server)
-- end
-- Linters
local linters = { "stylua", "biome" }
for _, linter in ipairs(linters) do
if not require("mason-registry").is_installed(linter) then
vim.cmd("MasonInstall " .. linter)
end
end
end,
} }
for _, lsp in ipairs(lsps) do
if not require("mason-registry").is_installed(lsp) then
vim.cmd("MasonInstall " .. lsp)
end
end

View file

@ -1,9 +0,0 @@
return {
"cksidharthan/mentor.nvim",
opts = {
tips = {
"You can use shift+a to jump to end of line in insert mode.",
"Shift+p to paste in visual mode multiple times",
},
},
}

View file

@ -1,58 +0,0 @@
return {
{
"milanglacier/minuet-ai.nvim",
config = function()
require("minuet").setup({
provider = "gemini",
provider_options = {
claude = {
max_tokens = 512,
model = "claude-haiku-4-5",
},
codestral = {
optional = {
max_tokens = 256,
stop = { "\n\n" },
},
},
gemini = {
model = "gemini-2.0-flash",
optional = {
generationConfig = {
maxOutputTokens = 256,
-- When using `gemini-2.5-flash`, it is recommended to entirely
-- disable thinking for faster completion retrieval.
thinkingConfig = {
thinkingBudget = 0,
},
},
safetySettings = {
{
-- HARM_CATEGORY_HATE_SPEECH,
-- HARM_CATEGORY_HARASSMENT
-- HARM_CATEGORY_SEXUALLY_EXPLICIT
category = "HARM_CATEGORY_DANGEROUS_CONTENT",
-- BLOCK_NONE
threshold = "BLOCK_ONLY_HIGH",
},
},
},
},
},
virtualtext = {
auto_trigger_ft = { "lua", "typescript", "typescriptreact", "javascript" },
keymap = {
accept = "<A-CR>",
accept_line = "<A-S>CR",
accept_n_lines = "<A-z>",
prev = "<A-j>",
next = "<A-k>",
dismiss = "<A-e>",
},
show_on_completion_menu = true,
},
})
end,
},
{ "nvim-lua/plenary.nvim" },
}

View file

@ -1,58 +0,0 @@
return {
"nvim-neotest/neotest",
dependencies = {
"nvim-neotest/nvim-nio",
"nvim-lua/plenary.nvim",
"antoinemadec/FixCursorHold.nvim",
"nvim-treesitter/nvim-treesitter",
"nvim-neotest/neotest-jest",
},
keys = {
{
"<leader>tt",
function()
require("neotest").run.run()
end,
mode = "",
desc = "[T]est run under cursor",
},
{
"<leader>ts",
function()
require("neotest").summary.toggle()
end,
mode = "",
desc = "[T]est [s]tatus",
},
{
"<leader>tf",
function()
require("neotest").run.run(vim.fn.expand("%"))
end,
mode = "",
desc = "[T]est [f]ile",
},
{
"<leader>tw",
function()
require("neotest").watch.watch()
end,
mode = "",
desc = "[T]est [w]atch under cursor",
},
},
config = function()
require("neotest").setup({
discovery = {
enabled = false,
},
adapters = {
require("neotest-jest")({
cwd = function(path)
return vim.fn.getcwd()
end,
}),
},
})
end,
}

View file

@ -0,0 +1,5 @@
vim.pack.add({ "https://github.com/gbprod/nord.nvim" })
require("nord").setup({})
vim.cmd.colorscheme("nord")

View file

@ -1,12 +1,7 @@
return { vim.pack.add({ "https://github.com/rmagatti/auto-session" })
"rmagatti/auto-session",
lazy = false,
---enables autocomplete for opts require("auto-session").setup({
---@module "auto-session" suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" },
---@type AutoSession.Config auto_restore = true,
opts = { auto_save = true,
suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" }, })
-- log_level = 'debug',
},
}

View file

@ -1,4 +0,0 @@
return {
"sphamba/smear-cursor.nvim",
opts = {},
}

View file

@ -1,374 +1,438 @@
return { vim.pack.add({ "https://github.com/folke/snacks.nvim" })
"folke/snacks.nvim",
tag = "v2.23.0", local Snacks = require("snacks")
priority = 1000,
lazy = false, local exclude = {
---@type snacks.Config "**/.git/*",
opts = { "**/.next/*",
bigfile = { enabled = true }, "**/.cursor/*",
explorer = { enabled = true, replace_netrw = true }, "**/node_modules/*",
indent = { enabled = true }, "**/.yarn/cache/*",
input = { enabled = true }, "**/.yarn/install*",
notifier = { "**/.yarn/releases/*",
enabled = true, "**/.pnpm-store/*",
timeout = 10000, "**/.idea/*",
width = { min = 40, max = 100 }, "**/.DS_Store",
height = { min = 1, max = 1000 }, "build/*",
}, "coverage/*",
image = { enabled = false }, "dist/*",
picker = { "hodor-types/*",
layout = { fullscreen = true }, "**/target/*",
matcher = { "**/.node-gyp/**",
fuzzy = true, -- use fuzzy matching "**/claude/debug",
smartcase = true, -- use smartcase "**/claude/file-history",
ignorecase = true, -- use ignorecase "**/claude/plans",
sort_empty = false, -- sort results when the search string is empty "**/claude/plugins",
filename_bonus = true, -- give bonus for matching file names (last part of the path) "**/claude/projects",
file_pos = true, -- support patterns like `file:line:col` and `file:line` "**/claude/session-env",
-- the bonusses below, possibly require string concatenation and path normalization, "**/claude/shell-snapshots",
-- so this can have a performance impact for large lists and increase memory usage "**/claude/statsig",
cwd_bonus = false, -- give bonus for matching files in the cwd "**/claude/telemetry",
frecency = true, -- frecency bonus "**/claude/todos",
history_bonus = false, -- give more weight to chronological order "**/claude/history.jsonl",
}
local files = { ignored = true, hidden = true, exclude = exclude }
Snacks.setup({
bigfile = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
notifier = {
enabled = true,
timeout = 10000,
width = { min = 40, max = 100 },
height = { min = 1, max = 1000 },
},
image = { enabled = false },
picker = {
layout = { fullscreen = true },
sources = {
select = { layout = { fullscreen = false } },
files = vim.tbl_deep_extend("force", { layout = { preset = "select", fullscreen = false } }, files),
grep = files,
lsp_symbols = files,
explorer = {
ignored = true,
hidden = true,
exclude = exclude,
replace_netrw = true,
supports_live = true,
auto_close = true,
follow_file = true,
jump = { close = true },
focus = "list",
layout = { preset = "sidebar", fullscreen = false },
}, },
}, },
quickfile = { enabled = true }, matcher = {
scroll = { enabled = false }, fuzzy = true, -- use fuzzy matching
statuscolumn = { enabled = true }, smartcase = true, -- use smartcase
words = { enabled = true }, ignorecase = true, -- use ignorecase
styles = { sort_empty = false, -- sort results when the search string is empty
notification = {}, filename_bonus = true, -- give bonus for matching file names (last part of the path)
file_pos = true, -- support patterns like `file:line:col` and `file:line`
-- the bonusses below, possibly require string concatenation and path normalization,
-- so this can have a performance impact for large lists and increase memory usage
cwd_bonus = false, -- give bonus for matching files in the cwd
frecency = true, -- frecency bonus
history_bonus = false, -- give more weight to chronological order
}, },
}, },
keys = { quickfile = { enabled = true },
-- Top Pickers & Explorer scroll = { enabled = false },
{ statuscolumn = { enabled = true },
"<leader><space>", words = { enabled = true },
function() styles = {
Snacks.picker.buffers({ matcher = { frecency = true } }) notification = {},
end,
desc = "Buffers",
},
{
"<leader>e",
function()
Snacks.explorer({ layout = { fullscreen = false } })
end,
desc = "File Explorer",
},
-- config
{
"<leader>cc",
function()
Snacks.picker.files({ cwd = vim.fn.stdpath("config") })
end,
desc = "Find Config File",
},
-- search
{
"<leader>sf",
function()
Snacks.picker.files({
matcher = { frecency = true },
layout = { preset = "select" },
})
end,
desc = "Find Files",
},
{
"<leader>/",
function()
Snacks.picker.lines()
end,
desc = "Buffer Lines",
},
{
"<leader>sg",
function()
Snacks.picker.grep()
end,
desc = "Grep",
},
{
"<leader>sB",
function()
Snacks.picker.grep_buffers()
end,
desc = "Grep Open Buffers",
},
{
"<leader>sp",
function()
Snacks.picker.projects()
end,
desc = "Projects",
},
{
"<leader>sc",
function()
Snacks.picker.commands()
end,
desc = "Commands",
},
{
"<leader>sd",
function()
Snacks.picker.diagnostics_buffer({
matcher = { smartcase = true },
})
end,
desc = "Buffer Diagnostics",
},
{
"<leader>sD",
function()
Snacks.picker.diagnostics()
end,
desc = "All Diagnostics",
},
{
"<leader>sh",
function()
Snacks.picker.help()
end,
desc = "Help Pages",
},
{
"<leader>sH",
function()
Snacks.picker.highlights()
end,
desc = "Highlights",
},
{
"<leader>sj",
function()
Snacks.picker.jumps()
end,
desc = "Jumps",
},
{
"<leader>sk",
function()
Snacks.picker.keymaps()
end,
desc = "Keymaps",
},
{
"<leader>sM",
function()
Snacks.picker.man()
end,
desc = "Man Pages",
},
{
"<leader>sq",
function()
Snacks.picker.qflist()
end,
desc = "Quickfix List",
},
{
"<leader>sR",
function()
Snacks.picker.resume()
end,
desc = "Resume",
},
{
"<leader>su",
function()
Snacks.picker.undo()
end,
desc = "Undo History",
},
{
"<leader>co",
function()
Snacks.picker.colorschemes()
end,
desc = "Colorschemes",
},
-- LSP
{
"<leader>gd",
function()
Snacks.picker.lsp_definitions()
end,
desc = "Goto Definition",
},
{
"<leader>gD",
function()
Snacks.picker.lsp_declarations()
end,
desc = "Goto Declaration",
},
{
"<leader>gr",
function()
Snacks.picker.lsp_references()
end,
nowait = true,
desc = "References",
},
{
"<leader>gi",
function()
Snacks.picker.lsp_implementations()
end,
desc = "Goto Implementation",
},
{
"<leader>gy",
function()
Snacks.picker.lsp_type_definitions()
end,
desc = "Goto T[y]pe Definition",
},
{
"<leader>sw",
function()
Snacks.picker.lsp_workspace_symbols()
end,
desc = "LSP Workspace Symbols",
},
{
"<leader>ca",
function()
vim.lsp.buf.code_action()
end,
desc = "Code actions",
},
{
"<leader>rn",
function()
vim.lsp.buf.rename()
end,
desc = "Rename symbols",
},
-- Other
{
"<leader>z",
function()
Snacks.zen()
end,
desc = "Toggle Zen Mode",
},
{
"<leader>Z",
function()
Snacks.zen.zoom()
end,
desc = "Toggle Zoom",
},
{
"<leader>.",
function()
Snacks.scratch()
end,
desc = "Toggle Scratch Buffer",
},
{
"<leader>S",
function()
Snacks.scratch.select()
end,
desc = "Select Scratch Buffer",
},
{
"<leader>mv",
function()
Snacks.rename.rename_file()
end,
desc = "Move File",
},
{
"<leader>gg",
function()
Snacks.lazygit({ win = { width = 0, height = 0 } })
end,
desc = "Lazygit",
},
{
"<leader>un",
function()
Snacks.notifier.hide()
end,
desc = "Dismiss All Notifications",
},
{
"<c-_>",
function()
Snacks.terminal()
end,
desc = "which_key_ignore",
},
{
"]]",
function()
Snacks.words.jump(vim.v.count1)
end,
desc = "Next Reference",
mode = { "n", "t" },
},
{
"[[",
function()
Snacks.words.jump(-vim.v.count1)
end,
desc = "Prev Reference",
mode = { "n", "t" },
},
{
"<leader>N",
desc = "Neovim News",
function()
Snacks.win({
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
width = 0.6,
height = 0.6,
wo = {
spell = false,
wrap = false,
signcolumn = "yes",
statuscolumn = " ",
conceallevel = 3,
},
})
end,
},
}, },
init = function() })
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
-- Setup some globals for debugging (lazy-loaded)
_G.dd = function(...)
Snacks.debug.inspect(...)
end
_G.bt = function()
Snacks.debug.backtrace()
end
vim.print = _G.dd -- Override print to use snacks for `:=` command
-- Create some toggle mappings local keys = {
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us") -- Top Pickers & Explorer
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw") {
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL") "<leader><space>",
Snacks.toggle.diagnostics():map("<leader>ud") function()
Snacks.toggle.line_number():map("<leader>ul") Snacks.picker.buffers()
Snacks.toggle end,
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }) desc = "Buffers",
:map("<leader>uc") },
Snacks.toggle.treesitter():map("<leader>uT") {
Snacks.toggle "<leader>e",
.option("background", { off = "light", on = "dark", name = "Dark Background" }) function()
:map("<leader>ub") Snacks.explorer()
Snacks.toggle.inlay_hints():map("<leader>uh") end,
Snacks.toggle.indent():map("<leader>ug") desc = "File Explorer",
Snacks.toggle.dim():map("<leader>uD") },
end, -- config
}) {
end, "<leader>cc",
function()
Snacks.picker.files({ cwd = vim.fn.stdpath("config") })
end,
desc = "Find Config File",
},
-- search
{
"<leader>sf",
function()
Snacks.picker.files()
end,
desc = "Find Files",
},
{
"/",
function()
Snacks.picker.lines()
end,
desc = "Buffer Lines",
},
{
"<leader>sg",
function()
Snacks.picker.grep()
end,
desc = "Grep",
},
{
"<leader>sB",
function()
Snacks.picker.grep_buffers()
end,
desc = "Grep Open Buffers",
},
{
"<leader>sp",
function()
Snacks.picker.projects()
end,
desc = "Projects",
},
{
"<leader>sc",
function()
Snacks.picker.commands()
end,
desc = "Commands",
},
{
"<leader>sd",
function()
Snacks.picker.diagnostics_buffer({
layout = {
layout = {
backdrop = false,
box = "vertical",
border = true,
title = "{title} {live} {flags}",
title_pos = "center",
{ win = "input", height = 1, border = "bottom" },
{ win = "list", border = "none" },
{ win = "preview", title = "{preview}", height = 0.7, border = "top" },
},
},
matcher = { fuzzy = false },
})
end,
desc = "Buffer Diagnostics",
},
{
"<leader>sD",
function()
Snacks.picker.diagnostics()
end,
desc = "All Diagnostics",
},
{
"<leader>sh",
function()
Snacks.picker.help()
end,
desc = "Help Pages",
},
{
"<leader>sH",
function()
Snacks.picker.highlights()
end,
desc = "Highlights",
},
{
"<leader>sj",
function()
Snacks.picker.jumps()
end,
desc = "Jumps",
},
{
"<leader>sk",
function()
Snacks.picker.keymaps()
end,
desc = "Keymaps",
},
{
"<leader>sM",
function()
Snacks.picker.man()
end,
desc = "Man Pages",
},
{
"<leader>sq",
function()
Snacks.picker.qflist()
end,
desc = "Quickfix List",
},
{
"<leader>sR",
function()
Snacks.picker.resume()
end,
desc = "Resume",
},
{
"<leader>su",
function()
Snacks.picker.undo()
end,
desc = "Undo History",
},
{
"<leader>co",
function()
Snacks.picker.colorschemes()
end,
desc = "Colorschemes",
},
-- LSP
{
"<leader>gd",
function()
Snacks.picker.lsp_definitions()
end,
desc = "Goto Definition",
},
{
"<leader>gD",
function()
Snacks.picker.lsp_declarations()
end,
desc = "Goto Declaration",
},
{
"<leader>gr",
function()
Snacks.picker.lsp_references()
end,
nowait = true,
desc = "References",
},
{
"<leader>gi",
function()
Snacks.picker.lsp_implementations()
end,
desc = "Goto Implementation",
},
{
"<leader>gy",
function()
Snacks.picker.lsp_type_definitions()
end,
desc = "Goto T[y]pe Definition",
},
{
"<leader>ca",
function()
vim.lsp.buf.code_action({ apply = true })
end,
desc = "Code actions",
},
{
"<leader>rn",
function()
vim.lsp.buf.rename()
end,
desc = "Rename symbols",
},
-- Other
{
"<leader>z",
function()
Snacks.zen()
end,
desc = "Toggle Zen Mode",
},
{
"<leader>Z",
function()
Snacks.zen.zoom()
end,
desc = "Toggle Zoom",
},
{
"<leader>.",
function()
Snacks.scratch()
end,
desc = "Toggle Scratch Buffer",
},
{
"<leader>S",
function()
Snacks.scratch.select()
end,
desc = "Select Scratch Buffer",
},
{
"<leader>mv",
function()
Snacks.rename.rename_file()
end,
desc = "Move File",
},
{
"<leader>gg",
function()
Snacks.lazygit({ win = { width = 0, height = 0 } })
end,
desc = "Lazygit",
},
{
"<leader>un",
function()
Snacks.notifier.hide()
end,
desc = "Dismiss All Notifications",
},
{
"<c-_>",
function()
Snacks.terminal()
end,
desc = "which_key_ignore",
},
{
"]]",
function()
Snacks.words.jump(vim.v.count1)
end,
desc = "Next Reference",
mode = { "n", "t" },
},
{
"[[",
function()
Snacks.words.jump(-vim.v.count1)
end,
desc = "Prev Reference",
mode = { "n", "t" },
},
{
"<leader>N",
desc = "Neovim News",
function()
Snacks.win({
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
width = 0.6,
height = 0.6,
wo = {
spell = false,
wrap = false,
signcolumn = "yes",
statuscolumn = " ",
conceallevel = 3,
},
})
end,
},
} }
for _, map in ipairs(keys) do
local opts = { desc = map.desc }
if map.silent ~= nil then
opts.silent = map.silent
end
if map.noremap ~= nil then
opts.noremap = map.noremap
else
opts.noremap = true
end
if map.expr ~= nil then
opts.expr = map.expr
end
local mode = map.mode or "n"
vim.keymap.set(mode, map[1], map[2], opts)
end
-- TODO: toggles are not registered
vim.api.nvim_create_autocmd("User", {
callback = function()
-- Setup some globals for debugging (lazy-loaded)
_G.dd = function(...)
Snacks.debug.inspect(...)
end
_G.bt = function()
Snacks.debug.backtrace()
end
vim.print = _G.dd -- Override print to use snacks for `:=` command
-- Create some toggle mappings
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
Snacks.toggle.diagnostics():map("<leader>ud")
Snacks.toggle.line_number():map("<leader>ul")
Snacks.toggle
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
:map("<leader>uc")
Snacks.toggle.treesitter():map("<leader>uT")
Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
Snacks.toggle.inlay_hints():map("<leader>uh")
Snacks.toggle.indent():map("<leader>ug")
Snacks.toggle.dim():map("<leader>uD")
end,
})

View file

@ -1,8 +1,3 @@
return { vim.pack.add({ "https://github.com/kylechui/nvim-surround" })
"kylechui/nvim-surround",
version = "*", -- Use for stability; omit to use `main` branch for the latest features require("nvim-surround").setup({})
event = "VeryLazy",
config = function()
require("nvim-surround").setup({})
end,
}

View file

@ -1,13 +1,3 @@
return { vim.pack.add({ "https://github.com/folke/tokyonight.nvim" })
"folke/tokyonight.nvim",
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function()
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme("tokyonight-night")
-- You can configure highlights by doing something like: -- vim.cmd.colorscheme("tokyonight-night")
-- vim.cmd.hi("Comment gui=none")
end,
}

View file

@ -1,41 +1,78 @@
-- Highlight, edit, and navigate code vim.pack.add({ { src = "https://github.com/nvim-treesitter/nvim-treesitter", version = "master" } })
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({ local configs = require("nvim-treesitter.configs")
ensure_installed = {
"bash", configs.setup({
"c", ensure_installed = {
"diff", "bash",
"html", "blade",
"lua", "c",
"luadoc", "comment",
"markdown", "css",
"markdown_inline", "diff",
"query", "dockerfile",
"vim", "fish",
"vimdoc", "gitcommit",
"go", "gitignore",
"typescript", "go",
"javascript", "gomod",
"tsx", "gosum",
}, "gowork",
auto_install = true, "html",
sync_install = true, "ini",
highlight = { enable = true }, "javascript",
indent = { enable = true }, "jsdoc",
incremental_selection = { "json",
enable = true, "lua",
keymaps = { "luadoc",
init_selection = "<CR>", "luap",
scope_incremental = "<CR>", "make",
node_incremental = "<TAB>", "markdown",
node_decremental = "<S-TAB>", "markdown_inline",
}, "nginx",
}, "nix",
}) "proto",
"python",
"query",
"regex",
"rust",
"scss",
"sql",
"toml",
"tsx",
"typescript",
"vim",
"vimdoc",
"xml",
"yaml",
"zig",
},
auto_install = true,
sync_install = true,
highlight = { enable = true },
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<CR>",
scope_incremental = "<CR>",
node_incremental = "<TAB>",
node_decremental = "<S-TAB>",
},
},
})
vim.api.nvim_create_autocmd("PackChanged", {
desc = "Handle nvim-treesitter updates",
group = vim.api.nvim_create_augroup("nvim-treesitter-pack-changed-update-handler", { clear = true }),
callback = function(event)
if event.data.kind == "update" then
local ok = pcall(vim.cmd, "TSUpdate")
if ok then
vim.notify("TSUpdate completed successfully!", vim.log.levels.INFO)
else
vim.notify("TSUpdate command not available yet, skipping", vim.log.levels.WARN)
end
end
end, end,
} })

View file

@ -1,5 +0,0 @@
return {
"pmizio/typescript-tools.nvim",
dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
opts = {},
}

View file

@ -1,8 +1,8 @@
-- Useful plugin to show you pending keybinds. vim.pack.add({ "https://github.com/folke/which-key.nvim" })
return {
"folke/which-key.nvim", local WK = require("which-key")
event = "VimEnter", -- Sets the loading event to 'VimEnter'
opts = { WK.setup({
icons = { icons = {
-- set icon mappings to true if you have a Nerd Font -- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font, mappings = vim.g.have_nerd_font,
@ -49,5 +49,5 @@ return {
{ "<leader>w", group = "[W]orkspace" }, { "<leader>w", group = "[W]orkspace" },
{ "<leader>h", group = "Git [H]unk", mode = { "n", "v" } }, { "<leader>h", group = "Git [H]unk", mode = { "n", "v" } },
}, },
}, })
}

View file

@ -0,0 +1,103 @@
{
"plugins": {
"LuaSnip": {
"rev": "5a1e39223db9a0498024a77b8441169d260c8c25",
"src": "https://github.com/L3MON4D3/LuaSnip",
"version": "'v2.4.1'"
},
"aerial.nvim": {
"rev": "645d108a5242ec7b378cbe643eb6d04d4223f034",
"src": "https://github.com/stevearc/aerial.nvim"
},
"auto-session": {
"rev": "62437532b38495551410b3f377bcf4aaac574ebe",
"src": "https://github.com/rmagatti/auto-session"
},
"blink.cmp": {
"rev": "b650e976a927be6b46487a0a610b75af111376c5",
"src": "https://github.com/saghen/blink.cmp"
},
"conform.nvim": {
"rev": "e969e302bced7ffb9a0a0323629f31feb0ca35a6",
"src": "https://github.com/stevearc/conform.nvim"
},
"flash.nvim": {
"rev": "fcea7ff883235d9024dc41e638f164a450c14ca2",
"src": "https://github.com/folke/flash.nvim"
},
"friendly-snippets": {
"rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9",
"src": "https://github.com/rafamadriz/friendly-snippets"
},
"i18n.nvim": {
"rev": "128959499a9425bb4f1a5574fd92a23be00cb442",
"src": "https://github.com/yelog/i18n.nvim"
},
"js-i18n.nvim": {
"rev": "124f22f91d51e85641ba10e9a32f3b858394c2dd",
"src": "https://github.com/nabekou29/js-i18n.nvim",
"version": "'v0.5.4'"
},
"kanagawa.nvim": {
"rev": "aef7f5cec0a40dbe7f3304214850c472e2264b10",
"src": "https://github.com/rebelot/kanagawa.nvim"
},
"lazydev.nvim": {
"rev": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d",
"src": "https://github.com/folke/lazydev.nvim"
},
"lualine.nvim": {
"rev": "47f91c416daef12db467145e16bed5bbfe00add8",
"src": "https://github.com/nvim-lualine/lualine.nvim"
},
"mason.nvim": {
"rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65",
"src": "https://github.com/mason-org/mason.nvim"
},
"nord.nvim": {
"rev": "07647ad23e5b7fc1599a841dcd8f173b9aeb0419",
"src": "https://github.com/gbprod/nord.nvim"
},
"nvim-autopairs": {
"rev": "59bce2eef357189c3305e25bc6dd2d138c1683f5",
"src": "https://github.com/windwp/nvim-autopairs"
},
"nvim-lspconfig": {
"rev": "a40d22e75d951ad2fcf236ceb013d88f81d2cc9a",
"src": "https://github.com/neovim/nvim-lspconfig"
},
"nvim-surround": {
"rev": "5553dd1fbb3559abb176a8227a12e8f1cab07e93",
"src": "https://github.com/kylechui/nvim-surround"
},
"nvim-treesitter": {
"rev": "42fc28ba918343ebfd5565147a42a26580579482",
"src": "https://github.com/nvim-treesitter/nvim-treesitter",
"version": "'master'"
},
"nvim-web-devicons": {
"rev": "737cf6c657898d0c697311d79d361288a1343d50",
"src": "https://github.com/nvim-tree/nvim-web-devicons"
},
"plenary.nvim": {
"rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"smear-cursor.nvim": {
"rev": "c85bdbb25db096fbcf616bc4e1357bd61fe2c199",
"src": "https://github.com/sphamba/smear-cursor.nvim"
},
"snacks.nvim": {
"rev": "fe7cfe9800a182274d0f868a74b7263b8c0c020b",
"src": "https://github.com/folke/snacks.nvim"
},
"tokyonight.nvim": {
"rev": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd",
"src": "https://github.com/folke/tokyonight.nvim"
},
"which-key.nvim": {
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
"src": "https://github.com/folke/which-key.nvim"
}
}
}

View file

@ -1,7 +0,0 @@
neovim
stdpath
tmux
formik
TODO
Autoformat
CTRL

View file

@ -6,7 +6,7 @@ local act = wezterm.action
local config = wezterm.config_builder() local config = wezterm.config_builder()
-- For example, changing the color scheme: -- For example, changing the color scheme:
config.color_scheme = "tokyonight_night" config.color_scheme = "nord"
config.alternate_buffer_wheel_scroll_speed = 10 config.alternate_buffer_wheel_scroll_speed = 10
-- Change mouse scroll amount -- Change mouse scroll amount
config.mouse_bindings = { config.mouse_bindings = {
@ -22,7 +22,7 @@ config.mouse_bindings = {
}, },
} }
config.font = wezterm.font({ family = "Iosevka Nerd Font", weight = "Regular", style = "Italic" }) config.font = wezterm.font({ family = "Iosevka Nerd Font", weight = "Regular", style = "Italic" })
config.font_size = 11 config.font_size = 13
config.use_fancy_tab_bar = false config.use_fancy_tab_bar = false
config.hide_tab_bar_if_only_one_tab = true config.hide_tab_bar_if_only_one_tab = true