feat: add nvim config

+9
.config/nvim/.luarc.json
···
···
+
{
+
"diagnostics.globals": [
+
"vim",
+
"TEST",
+
"NOTE",
+
"PERF",
+
"WARN"
+
]
+
}
+31
.config/nvim/init.lua
···
···
+
vim.g.mapleader = " "
+
vim.g.maplocalleader = " "
+
+
require("config.options")
+
+
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
+
vim.api.nvim_echo({
+
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+
{ out, "WarningMsg" },
+
{ "\nPress any key to exit..." },
+
}, true, {})
+
vim.fn.getchar()
+
os.exit(1)
+
end
+
end
+
vim.opt.rtp:prepend(lazypath)
+
require("lazy").setup("plugins", {
+
change_detection = { enabled = true, notify = false },
+
ui = {
+
icons = {
+
ft = " ",
+
lazy = "󰂠 ",
+
loaded = " ",
+
not_loaded = " ",
+
},
+
},
+
})
+41
.config/nvim/lazy-lock.json
···
···
+
{
+
"CopilotChat.nvim": { "branch": "main", "commit": "16d897fd43d07e3b54478ccdb2f8a16e4df4f45a" },
+
"LuaSnip": { "branch": "master", "commit": "659c4479529a05cc9b05ef762639a09d366cc690" },
+
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
+
"catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" },
+
"ccc.nvim": { "branch": "main", "commit": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed" },
+
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
+
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
+
"conform.nvim": { "branch": "master", "commit": "9180320205d250429f0f80e073326c674e2a7149" },
+
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
+
"copilot.lua": { "branch": "master", "commit": "96e1bb1963f351700bf6737ef3695e8a0b90b12a" },
+
"friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" },
+
"gitsigns.nvim": { "branch": "main", "commit": "ac5aba6dce8c06ea22bea2c9016f51a2dbf90dc7" },
+
"harpoon": { "branch": "harpoon2", "commit": "a84ab829eaf3678b586609888ef52f7779102263" },
+
"lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" },
+
"lspkind.nvim": { "branch": "master", "commit": "a700f1436d4a938b1a1a93c9962dc796afbaef4d" },
+
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
+
"mason-lspconfig.nvim": { "branch": "main", "commit": "cab00668464d2914d0752b86168b4a431cc93eb2" },
+
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
+
"neo-tree.nvim": { "branch": "v3.x", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" },
+
"noice.nvim": { "branch": "main", "commit": "203f74adaae11d47440a667555b4af9156be807b" },
+
"nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" },
+
"nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" },
+
"nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" },
+
"nvim-lspconfig": { "branch": "master", "commit": "87c7c83ce62971e0bdb29bb32b8ad2b19c8f95d0" },
+
"nvim-scrollbar": { "branch": "main", "commit": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49" },
+
"nvim-treesitter": { "branch": "master", "commit": "13c7caf8a602488b37cdefe8543c4cfdd5947d9d" },
+
"nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" },
+
"nvim-web-devicons": { "branch": "master", "commit": "19d257cf889f79f4022163c3fbb5e08639077bd8" },
+
"oil.nvim": { "branch": "master", "commit": "8ea40b5506115b6d355e304dd9ee5089f7d78601" },
+
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
+
"pretty_hover": { "branch": "master", "commit": "be693c8f32e1b096765bfe4db2ca341cc2f409d4" },
+
"render-markdown.nvim": { "branch": "main", "commit": "bff12b4655d1537cf0f10859fcd63ef2cec65010" },
+
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
+
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
+
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "b6ed8038dfd256eb963a2c79cb30f0f4683551a0" },
+
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
+
"vim-be-good": { "branch": "master", "commit": "4fa57b7957715c91326fcead58c1fa898b9b3625" },
+
"vim-fugitive": { "branch": "master", "commit": "d4877e54cef67f5af4f950935b1ade19ed6b7370" },
+
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
+
}
.config/nvim/lua/config/keymap.lua

This is a binary file and will not be displayed.

+44
.config/nvim/lua/config/options.lua
···
···
+
-- system
+
vim.g.have_nerd_font = true
+
vim.opt.clipboard = "unnamedplus"
+
vim.opt.history = 100
+
vim.opt.undofile = true
+
vim.opt.mouse = ""
+
+
-- ui
+
vim.opt.title = true
+
vim.opt.showmode = false
+
vim.opt.cursorline = true
+
vim.opt.scrolloff = 8
+
vim.opt.wrap = false
+
vim.opt_local.wrap = false
+
vim.opt.splitbelow = true
+
vim.opt.splitright = true
+
vim.opt.splitkeep = "cursor"
+
vim.opt.termguicolors = true
+
+
-- sidebar
+
vim.opt.number = true
+
vim.opt.relativenumber = true
+
vim.opt.signcolumn = "yes"
+
+
-- indent
+
vim.opt.expandtab = true
+
vim.opt.tabstop = 4
+
vim.opt.softtabstop = 4
+
vim.opt.shiftwidth = 4
+
vim.opt.autoindent = true
+
vim.opt.smartindent = true
+
vim.opt.breakindent = true
+
+
-- search
+
vim.opt.hlsearch = true
+
vim.opt.ignorecase = true
+
vim.opt.smarttab = true
+
+
--misc
+
vim.opt.showcmd = true
+
vim.opt.inccommand = "split"
+
+
--lsp
+
vim.lsp.inlay_hint.enable()
+39
.config/nvim/lua/plugins/alpha.lua
···
···
+
return {
+
"goolord/alpha-nvim",
+
dependencies = {
+
"nvim-tree/nvim-web-devicons",
+
},
+
+
config = function()
+
local alpha = require("alpha")
+
local dashboard = require("alpha.themes.dashboard")
+
+
dashboard.section.header.val = {
+
[[ ]],
+
[[ ]],
+
[[ ]],
+
[[ ]],
+
[[  ]],
+
[[ ████ ██████ █████ ██ ]],
+
[[ ███████████ █████  ]],
+
[[ █████████ ███████████████████ ███ ███████████ ]],
+
[[ █████████ ███ █████████████ █████ ██████████████ ]],
+
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
+
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
+
[[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]],
+
[[ ]],
+
[[ ]],
+
[[ ]],
+
}
+
dashboard.section.buttons.val = {
+
dashboard.button("SPC f o", "󰉋 > Filesystem"),
+
dashboard.button("SPC f f", "󰱼 > Find File"),
+
dashboard.button("SPC f r", " > Find Recents"),
+
dashboard.button("SPC f t", " > Find Todo"),
+
dashboard.button("SPC f k", "󰌌 > Keymaps"),
+
dashboard.button(":q", "󰰱 > Quit"),
+
}
+
+
alpha.setup(dashboard.opts)
+
end,
+
}
+28
.config/nvim/lua/plugins/autopairs.lua
···
···
+
return {
+
"windwp/nvim-autopairs",
+
event = "InsertEnter",
+
config = function()
+
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
+
local cmp = require("cmp")
+
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
+
local npairs = require("nvim-autopairs")
+
local Rule = require("nvim-autopairs.rule")
+
+
npairs.setup({
+
check_ts = true,
+
ts_config = {
+
lua = { "string" }, -- it will not add a pair on that treesitter node
+
javascript = { "template_string" },
+
java = false, -- don't check treesitter on java
+
},
+
})
+
+
local ts_conds = require("nvim-autopairs.ts-conds")
+
+
-- press % => %% only while inside a comment or string
+
npairs.add_rules({
+
Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node({ "string", "comment" })),
+
Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node({ "function" })),
+
})
+
end,
+
}
+16
.config/nvim/lua/plugins/catppuccin.lua
···
···
+
return {
+
"catppuccin/nvim",
+
name = "catppuccin",
+
priority = 1000,
+
config = function()
+
require("catppuccin").setup({
+
integrations = {
+
indent_blankline = {
+
enabled = true,
+
colored_indent_levels = true,
+
},
+
},
+
})
+
vim.cmd.colorscheme("catppuccin-macchiato")
+
end,
+
}
+63
.config/nvim/lua/plugins/completions.lua
···
···
+
return {
+
{
+
"hrsh7th/cmp-nvim-lsp",
+
},
+
{
+
"L3MON4D3/LuaSnip",
+
dependencies = {
+
"saadparwaiz1/cmp_luasnip",
+
"rafamadriz/friendly-snippets",
+
},
+
},
+
{
+
"hrsh7th/nvim-cmp",
+
dependencies = {
+
"onsails/lspkind.nvim",
+
},
+
config = function()
+
require("luasnip.loaders.from_vscode").lazy_load()
+
local cmp = require("cmp")
+
local lspkind = require("lspkind")
+
cmp.setup({
+
snippet = {
+
expand = function(args)
+
require("luasnip").lsp_expand(args.body)
+
end,
+
},
+
window = {
+
completion = cmp.config.window.bordered(),
+
documentation = cmp.config.window.bordered(),
+
},
+
mapping = cmp.mapping.preset.insert({
+
["<C-b>"] = cmp.mapping.scroll_docs(-4),
+
["<C-f>"] = cmp.mapping.scroll_docs(4),
+
["<C-Space>"] = cmp.mapping.complete(),
+
["<C-e>"] = cmp.mapping.abort(),
+
["<Tab>"] = cmp.mapping.confirm({ select = true }),
+
}),
+
sources = cmp.config.sources({
+
{ name = "nvim_lsp" },
+
{ name = "luasnip" },
+
{ name = "buffer" },
+
{ name = "path" },
+
{ name = "copilot" },
+
}),
+
formatting = {
+
format = lspkind.cmp_format({
+
mode = "symbol_text",
+
maxwidth = {
+
menu = 50, -- leading text (labelDetails)
+
abbr = 50, -- actual suggestion item
+
},
+
ellipsis_char = "...",
+
show_labelDetails = true,
+
+
before = function(entry, vim_item)
+
return vim_item
+
end,
+
}),
+
},
+
})
+
end,
+
},
+
}
+18
.config/nvim/lua/plugins/git.lua
···
···
+
return {
+
{
+
"tpope/vim-fugitive",
+
},
+
{
+
"lewis6991/gitsigns.nvim",
+
config = function()
+
require("gitsigns").setup()
+
vim.keymap.set("n", "<leader>gh", ":Gitsigns preview_hunk<CR>", { desc = "[G]it Preview [H]unk" })
+
vim.keymap.set(
+
"n",
+
"<leader>gb",
+
":Gitsigns toggle_current_line_blame<CR>",
+
{ desc = "[G]it Line [B]lame" }
+
)
+
end,
+
},
+
}
+59
.config/nvim/lua/plugins/harpoon.lua
···
···
+
return {
+
"ThePrimeagen/harpoon",
+
branch = "harpoon2",
+
dependencies = { "nvim-lua/plenary.nvim" },
+
config = function()
+
local harpoon = require("harpoon")
+
+
harpoon:setup()
+
+
vim.keymap.set("n", "<leader>a", function()
+
harpoon:list():add()
+
end, { desc = "[A]dd mark" })
+
vim.keymap.set("n", "<leader>m", function()
+
harpoon.ui:toggle_quick_menu(harpoon:list())
+
end, { desc = "Harpoon [M]arks" })
+
+
vim.keymap.set("n", "<leader>1", function()
+
harpoon:list():select(1)
+
end, { desc = "Mark [1]" })
+
vim.keymap.set("n", "<leader>2", function()
+
harpoon:list():select(2)
+
end, { desc = "Mark [2]" })
+
vim.keymap.set("n", "<leader>3", function()
+
harpoon:list():select(3)
+
end, { desc = "Mark [3]" })
+
vim.keymap.set("n", "<leader>4", function()
+
harpoon:list():select(4)
+
end, { desc = "Mark [4]" })
+
+
vim.keymap.set("n", "<leader>hp", function()
+
harpoon:list():prev()
+
end, { desc = "[H]arpoon [P]revious" })
+
vim.keymap.set("n", "<leader>hn", function()
+
harpoon:list():next()
+
end, { desc = "[H]arpoon [N]ext" })
+
local conf = require("telescope.config").values
+
local function toggle_telescope(harpoon_files)
+
local file_paths = {}
+
for _, item in ipairs(harpoon_files.items) do
+
table.insert(file_paths, item.value)
+
end
+
+
require("telescope.pickers")
+
.new({}, {
+
prompt_title = "Harpoon",
+
finder = require("telescope.finders").new_table({
+
results = file_paths,
+
}),
+
previewer = conf.file_previewer({}),
+
sorter = conf.generic_sorter({}),
+
})
+
:find()
+
end
+
+
vim.keymap.set("n", "<leader>fm", function()
+
toggle_telescope(harpoon:list())
+
end, { desc = "[F]ind [M]arks" })
+
end,
+
}
+102
.config/nvim/lua/plugins/lspconfig.lua
···
···
+
return {
+
{
+
"williamboman/mason.nvim",
+
dependencies = {
+
"williamboman/mason-lspconfig.nvim",
+
},
+
config = function()
+
require("mason").setup()
+
require("mason-lspconfig").setup({
+
ensure_installed = {
+
--lsp
+
"lua_ls",
+
"rust_analyzer",
+
"html",
+
"astro",
+
"cssls",
+
"tailwindcss",
+
"ts_ls",
+
"dockerls",
+
"gopls",
+
"jsonls",
+
"basedpyright",
+
"svelte",
+
},
+
})
+
end,
+
},
+
{
+
"neovim/nvim-lspconfig",
+
dependencies = {
+
"stevearc/conform.nvim",
+
},
+
config = function()
+
local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
local lspconfig = require("lspconfig")
+
local opts = { capabilities = capabilities }
+
lspconfig.lua_ls.setup(opts)
+
lspconfig.rust_analyzer.setup(opts)
+
lspconfig.html.setup(opts)
+
lspconfig.astro.setup(opts)
+
lspconfig.cssls.setup(opts)
+
lspconfig.tailwindcss.setup({
+
capabilities = capabilities,
+
settings = {
+
tailwindCSS = {
+
experimental = {
+
classRegex = {
+
{ 'add="([^"]*)"', "[^\\s]+" },
+
{ "clsx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)" },
+
{ "classnames\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)" },
+
},
+
},
+
},
+
},
+
})
+
lspconfig.ts_ls.setup(opts)
+
lspconfig.dockerls.setup(opts)
+
lspconfig.gopls.setup(opts)
+
lspconfig.jsonls.setup(opts)
+
lspconfig.basedpyright.setup(opts)
+
lspconfig.svelte.setup(opts)
+
+
require("conform").setup({
+
formatters_by_ft = {
+
lua = { "stylua" },
+
rust = { "rustfmt", lsp_format = "fallback" },
+
astro = { "prettierd", "prettier", stop_after_first = true },
+
html = { "prettierd", "prettier", stop_after_first = true },
+
javascript = { "prettierd", "prettier", stop_after_first = true },
+
typescript = { "prettierd", "prettier", stop_after_first = true },
+
json = { "jq" },
+
go = { "gofmtpt" },
+
},
+
format_on_save = {
+
timeout_ms = 3000,
+
},
+
})
+
+
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, { desc = "[H]over" })
+
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "[G]o to [D]efinition" })
+
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "[G]o to [D]eclaration" })
+
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, { desc = "[C]ode [A]ctions" })
+
vim.keymap.set("n", "<leader>cf", require("conform").format, { desc = "[C]ode [F]ormat" })
+
vim.api.nvim_create_autocmd("LspAttach", {
+
callback = function(args)
+
local client = vim.lsp.get_client_by_id(args.data.client_id)
+
if not client then
+
return
+
end
+
if client.supports_method("textDocument/formatting") then
+
vim.api.nvim_create_autocmd("BufWritePre", {
+
buffer = args.buf,
+
callback = function()
+
require("conform").format({ bufnr = args.buf, id = client.id })
+
end,
+
})
+
end
+
end,
+
})
+
end,
+
},
+
}
+11
.config/nvim/lua/plugins/lualine.lua
···
···
+
return {
+
"nvim-lualine/lualine.nvim",
+
dependencies = { "nvim-tree/nvim-web-devicons" },
+
config = function()
+
require("lualine").setup({
+
options = {
+
theme = "catppuccin",
+
},
+
})
+
end,
+
}
+12
.config/nvim/lua/plugins/neo-tree.lua
···
···
+
return {
+
"nvim-neo-tree/neo-tree.nvim",
+
branch = "v3.x",
+
dependencies = {
+
"nvim-lua/plenary.nvim",
+
"nvim-tree/nvim-web-devicons",
+
"MunifTanjim/nui.nvim",
+
},
+
config = function()
+
vim.keymap.set("n", "<leader>n", ":Neotree filesystem reveal<CR>")
+
end,
+
}
+27
.config/nvim/lua/plugins/oil.lua
···
···
+
return {
+
"stevearc/oil.nvim",
+
dependencies = { "nvim-tree/nvim-web-devicons" },
+
keys = { { "<leader>fo", "<cmd>Oil<cr>", desc = "[F]ilesystem [O]il" } },
+
opts = {
+
default_file_explorer = true,
+
skip_confirm_for_simple_edits = true,
+
keymaps = {
+
["gs"] = false,
+
["<C-h>"] = false,
+
["<C-l>"] = false,
+
["<C-k>"] = false,
+
["<C-j>"] = false,
+
["<M-h>"] = "actions.select_split",
+
["<M-v>"] = "actions.select_vsplit",
+
["<C-r>"] = "actions.refresh",
+
["Q"] = "actions.close",
+
["gS"] = "actions.change_sort",
+
},
+
view_options = {
+
show_hidden = true,
+
natural_order = true,
+
},
+
},
+
cmd = "Oil",
+
event = "VimEnter",
+
}
+7
.config/nvim/lua/plugins/render-markdown.lua
···
···
+
return {
+
'MeanderingProgrammer/render-markdown.nvim',
+
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
+
---@module 'render-markdown'
+
---@type render.md.UserConfig
+
opts = {},
+
}
+28
.config/nvim/lua/plugins/telescope.lua
···
···
+
return {
+
{
+
"nvim-telescope/telescope.nvim",
+
tag = "0.1.8",
+
dependencies = { "nvim-lua/plenary.nvim" },
+
config = function()
+
local builtin = require("telescope.builtin")
+
vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "[F]ind [F]iles" })
+
vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "[F]ile [G]rep" })
+
vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "[F]ind [B]uffers" })
+
vim.keymap.set("n", "<leader>fr", builtin.oldfiles, { desc = "[F]ind [R]ecent" })
+
vim.keymap.set("n", "<leader>fi", builtin.builtin, { desc = "[F]ind Bu[i]ltins" })
+
end,
+
},
+
{
+
"nvim-telescope/telescope-ui-select.nvim",
+
config = function()
+
require("telescope").setup({
+
extensions = {
+
["ui-select"] = {
+
require("telescope.themes").get_dropdown({}),
+
},
+
},
+
})
+
require("telescope").load_extension("ui-select")
+
end,
+
},
+
}
+66
.config/nvim/lua/plugins/todo-comments.lua
···
···
+
return {
+
-- PERF:
+
-- HACK:
+
-- TODO:
+
-- NOTE:
+
-- FIX:
+
-- WARNING:
+
"folke/todo-comments.nvim",
+
dependencies = { "nvim-lua/plenary.nvim" },
+
config = function()
+
require("todo-comments").setup({
+
signs = false,
+
merge_keywords = true,
+
pattern = [[\b(KEYWORDS)(?:\(([^)]*)\))?:]],
+
keywords = {
+
FIX = {
+
icon = " ",
+
color = "#e78284",
+
alt = { "FIXME", "BUG", "FIXIT", "ISSUE", "TOFIX" },
+
},
+
TODO = {
+
icon = " ",
+
color = "#8caaee",
+
},
+
HACK = {
+
icon = " ",
+
color = "#e5c890",
+
},
+
WARN = {
+
icon = " ",
+
color = "#e5c890",
+
alt = { "WARNING", "XXX" },
+
},
+
PERF = {
+
icon = " ",
+
color = "#babbf1",
+
alt = { "OPTIM", "OPTIMIZE", "PERFORMANCE" },
+
},
+
NOTE = {
+
icon = "󰍩 ",
+
color = "#a6d189",
+
alt = { "INFO" },
+
},
+
TEST = {
+
icon = "󰙨 ",
+
color = "#f4b8e4",
+
alt = { "TESTING", "PASSED", "FAILED" },
+
},
+
},
+
gui_style = {
+
fg = "NONE",
+
bg = "BOLD",
+
},
+
highlight = {
+
keyword = "wide",
+
pattern = {
+
[[.*<(KEYWORDS)\s*:]],
+
[[.*<(KEYWORDS)\s*!?\(\):]],
+
[[.*<(KEYWORDS)\s* ?\(.*\):]],
+
[[.*<(KEYWORDSky)\s*:]],
+
},
+
},
+
})
+
vim.keymap.set("n", "<leader>ft", ":TodoTelescope<CR>", { desc = "[F]ind [R]ecent" })
+
end,
+
}
+31
.config/nvim/lua/plugins/treesitter.lua
···
···
+
return {
+
"nvim-treesitter/nvim-treesitter",
+
dependencies = {
+
"windwp/nvim-ts-autotag",
+
},
+
config = function()
+
require("nvim-treesitter.install").update({ with_sync = true })()
+
require("nvim-treesitter.configs").setup({
+
auto_install = true,
+
highlight = { enable = true },
+
indent = { enable = true },
+
rainbow = {
+
enable = true,
+
extended_mode = true,
+
max_file_lines = nil,
+
},
+
})
+
require("nvim-ts-autotag").setup({
+
opts = {
+
enable_close = true,
+
enable_rename = true,
+
enable_close_on_slash = false,
+
},
+
per_filetype = {
+
["html"] = {
+
enable_close = false,
+
},
+
},
+
})
+
end,
+
}
+61
.config/nvim/lua/plugins/ui.lua
···
···
+
return {
+
{
+
"folke/noice.nvim",
+
event = "VeryLazy",
+
opts = {},
+
dependencies = {
+
"MunifTanjim/nui.nvim",
+
},
+
},
+
{
+
"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,
+
},
+
{
+
"folke/which-key.nvim",
+
event = "VeryLazy",
+
opts = {
+
-- your configuration comes here
+
-- or leave it empty to use the default settings
+
-- refer to the configuration section below
+
},
+
keys = {
+
{
+
"<leader>fk",
+
function()
+
require("which-key").show({ global = false })
+
end,
+
desc = "[F]ind [K]eymaps",
+
},
+
},
+
},
+
{
+
{
+
"uga-rosa/ccc.nvim",
+
config = function()
+
require("ccc").setup({
+
highlighter = {
+
auto_enable = true,
+
lsp = true,
+
},
+
})
+
end,
+
},
+
},
+
{
+
"petertriho/nvim-scrollbar",
+
config = function()
+
require("scrollbar").setup({})
+
end,
+
},
+
{
+
"Fildo7525/pretty_hover",
+
event = "LspAttach",
+
opts = {},
+
},
+
}
+36
.config/nvim/lua/plugins/vibe-coding.lua
···
···
+
return {
+
{
+
"zbirenbaum/copilot.lua", -- not actually the offical copilot plugin by ms
+
config = function()
+
require("copilot").setup({
+
suggestion = { enabled = false },
+
panel = { enabled = false },
+
})
+
end,
+
},
+
{
+
{
+
"CopilotC-Nvim/CopilotChat.nvim",
+
dependencies = {
+
{ "nvim-lua/plenary.nvim", branch = "master" },
+
},
+
opts = {
+
-- See Configuration section for options
+
},
+
keys = {
+
{ "<leader>ai", ":CopilotChat<CR>", mode = "n", desc = "Chat with Copilot [A][I]" },
+
{ "<leader>am", ":CopilotChatModels<CR>", mode = "n", desc = "Pick Copilot [A]i [M]odel to use" },
+
{ "<leader>ae", ":CopilotChatExplain<CR>", mode = "v", desc = "Ask Copilot [A]i to [E]xplain code" },
+
{ "<leader>af", ":CopilotChatReview<CR>", mode = "v", desc = "Ask Copilot [A]i to [R]eview the code" },
+
{ "<leader>ao", ":CopilotChatOptimise<CR>", mode = "v", desc = "Ask Copilot [A]i to [O]timise code" },
+
{ "<leader>af", ":CopilotChatFix<CR>", mode = "v", desc = "Ask Copilot [A]i to [F]ix any errors" },
+
},
+
},
+
},
+
{
+
"zbirenbaum/copilot-cmp",
+
config = function()
+
require("copilot_cmp").setup()
+
end,
+
},
+
}
+4
.config/nvim/lua/plugins/vim-be-good.lua
···
···
+
return {
+
'ThePrimeagen/vim-be-good',
+
cmd = 'VimBeGood',
+
}
+2
.config/nvim/stylua.toml
···
···
+
indent_type = "Spaces"
+
indent_width = 4