add neovim config
This commit is contained in:
commit
a61afa3889
11
dot_config/nvim/after/plugin/animate.lua
Normal file
11
dot_config/nvim/after/plugin/animate.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, animate = pcall(require, "mini.animate")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
animate.setup({
|
||||||
|
-- Keep it subtle: enable cursor + scroll, disable resize/open/close if you want less motion
|
||||||
|
resize = { enable = false },
|
||||||
|
open = { enable = false },
|
||||||
|
close = { enable = false },
|
||||||
|
})
|
||||||
21
dot_config/nvim/after/plugin/bufferline.lua
Normal file
21
dot_config/nvim/after/plugin/bufferline.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, bufferline = pcall(require, "bufferline")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
bufferline.setup({
|
||||||
|
options = {
|
||||||
|
diagnostics = "nvim_lsp",
|
||||||
|
show_buffer_close_icons = true,
|
||||||
|
show_close_icon = false,
|
||||||
|
separator_style = "slant",
|
||||||
|
offsets = {
|
||||||
|
{
|
||||||
|
filetype = "NvimTree",
|
||||||
|
text = "File Explorer",
|
||||||
|
text_align = "left",
|
||||||
|
separator = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
51
dot_config/nvim/after/plugin/chatgpt.lua
Normal file
51
dot_config/nvim/after/plugin/chatgpt.lua
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, chatgpt = pcall(require, "chatgpt")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
chatgpt.setup({
|
||||||
|
-- Personality + language
|
||||||
|
system_prompt = [[
|
||||||
|
You are Burke, a senior software engineer and pragmatic coding assistant.
|
||||||
|
Always respond in Serbian (Cyrillic).
|
||||||
|
Be concise, direct, and practical.
|
||||||
|
If the user is casual or jokes, respond casually.
|
||||||
|
If the user asks about code, focus on actionable solutions, not theory.
|
||||||
|
When unsure, ask a short clarifying question.
|
||||||
|
]],
|
||||||
|
|
||||||
|
-- Model choice: smart but not insane on cost
|
||||||
|
openai_params = {
|
||||||
|
model = "gpt-4.1",
|
||||||
|
max_tokens = 4096,
|
||||||
|
temperature = 0.4,
|
||||||
|
top_p = 1,
|
||||||
|
frequency_penalty = 0,
|
||||||
|
presence_penalty = 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- UI / UX
|
||||||
|
popup_layout = {
|
||||||
|
default = "center",
|
||||||
|
center = {
|
||||||
|
width = "82%",
|
||||||
|
height = "82%",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Terminal-safe keymaps
|
||||||
|
keymaps = {
|
||||||
|
close = { "<Esc>" },
|
||||||
|
submit = "<C-Enter>",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Small quality-of-life tweaks
|
||||||
|
yank_register = "+",
|
||||||
|
edit_with_instructions = {
|
||||||
|
diff = true, -- show diff when modifying code
|
||||||
|
keymaps = {
|
||||||
|
accept = "<C-y>",
|
||||||
|
reject = "<C-n>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
50
dot_config/nvim/after/plugin/cmp.lua
Normal file
50
dot_config/nvim/after/plugin/cmp.lua
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok_cmp, cmp = pcall(require, "cmp")
|
||||||
|
if not ok_cmp then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok_snip, luasnip = pcall(require, "luasnip")
|
||||||
|
if not ok_snip then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||||
|
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
}),
|
||||||
|
})
|
||||||
80
dot_config/nvim/after/plugin/dap.lua
Normal file
80
dot_config/nvim/after/plugin/dap.lua
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok_dap, dap = pcall(require, "dap")
|
||||||
|
if not ok_dap then return end
|
||||||
|
|
||||||
|
local ok_dapui, dapui = pcall(require, "dapui")
|
||||||
|
if not ok_dapui then return end
|
||||||
|
|
||||||
|
dapui.setup({
|
||||||
|
layouts = {
|
||||||
|
{
|
||||||
|
elements = {
|
||||||
|
{ id = "scopes", size = 0.35 },
|
||||||
|
{ id = "breakpoints", size = 0.20 },
|
||||||
|
{ id = "stacks", size = 0.25 },
|
||||||
|
{ id = "watches", size = 0.20 },
|
||||||
|
},
|
||||||
|
position = "left",
|
||||||
|
size = 45,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
elements = {
|
||||||
|
{ id = "repl", size = 0.50 },
|
||||||
|
{ id = "console", size = 0.50 },
|
||||||
|
},
|
||||||
|
position = "bottom",
|
||||||
|
size = 12,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Auto open/close dapui
|
||||||
|
dap.listeners.after.event_initialized["dapui_config"] = function()
|
||||||
|
dapui.open()
|
||||||
|
end
|
||||||
|
dap.listeners.before.event_terminated["dapui_config"] = function()
|
||||||
|
dapui.close()
|
||||||
|
end
|
||||||
|
dap.listeners.before.event_exited["dapui_config"] = function()
|
||||||
|
dapui.close()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Visible signs in gutter
|
||||||
|
vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DiagnosticError" })
|
||||||
|
vim.fn.sign_define("DapBreakpointCondition", { text = "◆", texthl = "DiagnosticWarn" })
|
||||||
|
vim.fn.sign_define("DapLogPoint", { text = "◆", texthl = "DiagnosticInfo" })
|
||||||
|
vim.fn.sign_define("DapStopped", { text = "▶", texthl = "DiagnosticOk" })
|
||||||
|
|
||||||
|
-- Keymaps
|
||||||
|
vim.keymap.set("n", "<F5>", dap.continue, { desc = "DAP continue" })
|
||||||
|
vim.keymap.set("n", "<F10>", dap.step_over, { desc = "DAP step over" })
|
||||||
|
vim.keymap.set("n", "<F11>", dap.step_into, { desc = "DAP step into" })
|
||||||
|
vim.keymap.set("n", "<F12>", dap.step_out, { desc = "DAP step out" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { desc = "DAP toggle breakpoint" })
|
||||||
|
vim.keymap.set("n", "<leader>dB", function()
|
||||||
|
dap.set_breakpoint(vim.fn.input("Breakpoint condition: "))
|
||||||
|
end, { desc = "DAP conditional breakpoint" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>dc", dap.clear_breakpoints, { desc = "DAP clear breakpoints" })
|
||||||
|
vim.keymap.set("n", "<leader>dl", function()
|
||||||
|
dap.run_last()
|
||||||
|
end, { desc = "DAP run last" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>dr", dap.repl.open, { desc = "DAP REPL" })
|
||||||
|
vim.keymap.set("n", "<leader>du", dapui.toggle, { desc = "DAP UI toggle" })
|
||||||
|
|
||||||
|
-- Evaluate helpers
|
||||||
|
vim.keymap.set("n", "<leader>de", function()
|
||||||
|
dapui.eval()
|
||||||
|
end, { desc = "DAP eval under cursor" })
|
||||||
|
|
||||||
|
vim.keymap.set("v", "<leader>de", function()
|
||||||
|
dapui.eval()
|
||||||
|
end, { desc = "DAP eval selection" })
|
||||||
|
|
||||||
|
-- Optional: hover to eval during debug (nice IDE behavior)
|
||||||
|
vim.keymap.set("n", "<leader>dh", function()
|
||||||
|
dapui.eval()
|
||||||
|
end, { desc = "DAP hover eval" })
|
||||||
19
dot_config/nvim/after/plugin/dashboard.lua
Normal file
19
dot_config/nvim/after/plugin/dashboard.lua
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, db = pcall(require, "dashboard")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
db.setup({
|
||||||
|
theme = "hyper",
|
||||||
|
config = {
|
||||||
|
week_header = { enable = true },
|
||||||
|
shortcut = {
|
||||||
|
{ desc = "Files", group = "Label", key = "f", action = "Telescope find_files" },
|
||||||
|
{ desc = "Grep", group = "Label", key = "g", action = "Telescope live_grep" },
|
||||||
|
{ desc = "Config", group = "Label", key = "c", action = "edit ~/.config/nvim/init.lua" },
|
||||||
|
{ desc = "Quit", group = "Label", key = "q", action = "qa" },
|
||||||
|
},
|
||||||
|
project = { enable = true, limit = 8 },
|
||||||
|
mru = { limit = 10 },
|
||||||
|
},
|
||||||
|
})
|
||||||
9
dot_config/nvim/after/plugin/dressing.lua
Normal file
9
dot_config/nvim/after/plugin/dressing.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, dressing = pcall(require, "dressing")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
dressing.setup({
|
||||||
|
input = { border = "rounded" },
|
||||||
|
select = { backend = { "telescope", "builtin" } },
|
||||||
|
})
|
||||||
43
dot_config/nvim/after/plugin/git-colors.lua
Normal file
43
dot_config/nvim/after/plugin/git-colors.lua
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local function set_hl(group, opts)
|
||||||
|
vim.api.nvim_set_hl(0, group, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, tn = pcall(require, "tokyonight.colors")
|
||||||
|
if not ok then
|
||||||
|
-- Fallback links
|
||||||
|
set_hl("NvimTreeGitDirty", { link = "DiagnosticWarn" })
|
||||||
|
set_hl("NvimTreeGitNew", { link = "DiagnosticHint" })
|
||||||
|
set_hl("NvimTreeGitStaged", { link = "DiagnosticOk" })
|
||||||
|
set_hl("NvimTreeGitDeleted", { link = "DiagnosticError" })
|
||||||
|
set_hl("NvimTreeGitRenamed", { link = "DiagnosticInfo" })
|
||||||
|
set_hl("NvimTreeGitIgnored", { link = "Comment" })
|
||||||
|
|
||||||
|
set_hl("GitSignsAdd", { link = "DiagnosticOk" })
|
||||||
|
set_hl("GitSignsChange", { link = "DiagnosticWarn" })
|
||||||
|
set_hl("GitSignsDelete", { link = "DiagnosticError" })
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local c = tn.setup()
|
||||||
|
|
||||||
|
-- Nvim-tree git highlights (strong + readable)
|
||||||
|
set_hl("NvimTreeGitDirty", { fg = c.yellow, bold = true }) -- modified
|
||||||
|
set_hl("NvimTreeGitNew", { fg = c.green, bold = true }) -- untracked/new
|
||||||
|
set_hl("NvimTreeGitStaged", { fg = c.green, bold = true }) -- staged
|
||||||
|
set_hl("NvimTreeGitDeleted", { fg = c.red, bold = true }) -- deleted
|
||||||
|
set_hl("NvimTreeGitRenamed", { fg = c.blue, bold = true, italic = true }) -- renamed
|
||||||
|
set_hl("NvimTreeGitMerged", { fg = c.magenta, bold = true, italic = true }) -- merged/unmerged flavor
|
||||||
|
|
||||||
|
-- Ignored: dim / almost invisible
|
||||||
|
-- blend makes it translucent (works best in GUIs/truecolor terminals)
|
||||||
|
set_hl("NvimTreeGitIgnored", { fg = c.comment, italic = true, blend = 70 })
|
||||||
|
|
||||||
|
-- GitSigns gutter to match (clean VS vibe)
|
||||||
|
set_hl("GitSignsAdd", { fg = c.green, bold = true })
|
||||||
|
set_hl("GitSignsChange", { fg = c.yellow, bold = true })
|
||||||
|
set_hl("GitSignsDelete", { fg = c.red, bold = true })
|
||||||
|
|
||||||
|
-- Also make blame text subtle if you enabled it
|
||||||
|
set_hl("GitSignsCurrentLineBlame", { fg = c.comment, italic = true })
|
||||||
10
dot_config/nvim/after/plugin/gitsigns.lua
Normal file
10
dot_config/nvim/after/plugin/gitsigns.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, gitsigns = pcall(require, "gitsigns")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
gitsigns.setup({
|
||||||
|
signcolumn = true,
|
||||||
|
current_line_blame = true,
|
||||||
|
current_line_blame_opts = { delay = 500 },
|
||||||
|
})
|
||||||
9
dot_config/nvim/after/plugin/indent.lua
Normal file
9
dot_config/nvim/after/plugin/indent.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, ibl = pcall(require, "ibl")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
ibl.setup({
|
||||||
|
indent = { char = "▏" },
|
||||||
|
scope = { enabled = true },
|
||||||
|
})
|
||||||
14
dot_config/nvim/after/plugin/lualine.lua
Normal file
14
dot_config/nvim/after/plugin/lualine.lua
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, lualine = pcall(require, "lualine")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
lualine.setup({
|
||||||
|
options = {
|
||||||
|
theme = "tokyonight",
|
||||||
|
icons_enabled = true,
|
||||||
|
section_separators = { left = "", right = "" },
|
||||||
|
component_separators = { left = "", right = "" },
|
||||||
|
globalstatus = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
11
dot_config/nvim/after/plugin/neoscroll.lua
Normal file
11
dot_config/nvim/after/plugin/neoscroll.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, neoscroll = pcall(require, "neoscroll")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
neoscroll.setup({
|
||||||
|
mappings = { "<C-u>", "<C-d>", "<C-b>", "<C-f>", "zt", "zz", "zb" },
|
||||||
|
hide_cursor = true,
|
||||||
|
stop_eof = true,
|
||||||
|
respect_scrolloff = true,
|
||||||
|
})
|
||||||
53
dot_config/nvim/after/plugin/noice.lua
Normal file
53
dot_config/nvim/after/plugin/noice.lua
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok_notify, notify = pcall(require, "notify")
|
||||||
|
if ok_notify then
|
||||||
|
notify.setup({
|
||||||
|
stages = "fade_in_slide_out",
|
||||||
|
timeout = 2000,
|
||||||
|
render = "wrapped-compact",
|
||||||
|
})
|
||||||
|
vim.notify = notify
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok_noice, noice = pcall(require, "noice")
|
||||||
|
if not ok_noice then return end
|
||||||
|
|
||||||
|
noice.setup({
|
||||||
|
presets = {
|
||||||
|
bottom_search = true,
|
||||||
|
command_palette = true,
|
||||||
|
long_message_to_split = true,
|
||||||
|
inc_rename = false,
|
||||||
|
lsp_doc_border = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
cmdline = {
|
||||||
|
enabled = true,
|
||||||
|
view = "cmdline_popup",
|
||||||
|
format = {
|
||||||
|
-- Force / to use the popup view
|
||||||
|
search_down = {
|
||||||
|
kind = "search",
|
||||||
|
pattern = "^/",
|
||||||
|
icon = " ",
|
||||||
|
lang = "regex",
|
||||||
|
view = "cmdline_popup",
|
||||||
|
},
|
||||||
|
-- Force ? to use the popup view as well
|
||||||
|
search_up = {
|
||||||
|
kind = "search",
|
||||||
|
pattern = "^%?",
|
||||||
|
icon = " ",
|
||||||
|
lang = "regex",
|
||||||
|
view = "cmdline_popup",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
progress = { enabled = true },
|
||||||
|
hover = { enabled = true },
|
||||||
|
signature = { enabled = true },
|
||||||
|
},
|
||||||
|
})
|
||||||
59
dot_config/nvim/after/plugin/nvim-tree.lua
Normal file
59
dot_config/nvim/after/plugin/nvim-tree.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
-- English comments only.
|
||||||
|
local ok, nvimtree = pcall(require, "nvim-tree")
|
||||||
|
if not ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
nvimtree.setup({
|
||||||
|
disable_netrw = true,
|
||||||
|
hijack_netrw = true,
|
||||||
|
|
||||||
|
view = {
|
||||||
|
width = 32,
|
||||||
|
side = "left",
|
||||||
|
preserve_window_proportions = true
|
||||||
|
},
|
||||||
|
|
||||||
|
renderer = {
|
||||||
|
root_folder_label = false,
|
||||||
|
highlight_git = true,
|
||||||
|
highlight_opened_files = "name",
|
||||||
|
icons = {
|
||||||
|
show = {
|
||||||
|
file = true,
|
||||||
|
folder = true,
|
||||||
|
folder_arrow = true,
|
||||||
|
git = true
|
||||||
|
},
|
||||||
|
glyphs = {
|
||||||
|
git = {
|
||||||
|
unstaged = "✗", -- modified
|
||||||
|
staged = "✓",
|
||||||
|
untracked = "★",
|
||||||
|
renamed = "➜",
|
||||||
|
deleted = "",
|
||||||
|
ignored = "◌",
|
||||||
|
unmerged = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true,
|
||||||
|
ignore = false,
|
||||||
|
show_on_dirs = true,
|
||||||
|
show_on_open_dirs = true
|
||||||
|
},
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
dotfiles = false
|
||||||
|
},
|
||||||
|
|
||||||
|
actions = {
|
||||||
|
open_file = {
|
||||||
|
quit_on_open = false, -- keep tree open like VS Code
|
||||||
|
resize_window = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
18
dot_config/nvim/after/plugin/theme.lua
Normal file
18
dot_config/nvim/after/plugin/theme.lua
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
-- TokyoNight config
|
||||||
|
require("tokyonight").setup({
|
||||||
|
style = "night",
|
||||||
|
transparent = false,
|
||||||
|
terminal_colors = true,
|
||||||
|
styles = {
|
||||||
|
comments = { italic = true },
|
||||||
|
keywords = { italic = false },
|
||||||
|
functions = {},
|
||||||
|
variables = {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd.colorscheme("tokyonight")
|
||||||
51
dot_config/nvim/after/plugin/toggleterm.lua
Normal file
51
dot_config/nvim/after/plugin/toggleterm.lua
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, toggleterm = pcall(require, "toggleterm")
|
||||||
|
if not ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
toggleterm.setup({
|
||||||
|
open_mapping = [[<c-\>]], -- Ctrl + \
|
||||||
|
direction = "float", -- "horizontal" | "vertical" | "tab" | "float"
|
||||||
|
close_on_exit = true,
|
||||||
|
start_in_insert = true,
|
||||||
|
shade_terminals = true,
|
||||||
|
float_opts = {
|
||||||
|
border = "rounded",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Terminal mode keymaps (quality of life)
|
||||||
|
function _G.set_terminal_keymaps()
|
||||||
|
local opts = { buffer = 0, silent = true }
|
||||||
|
-- Exit terminal insert mode
|
||||||
|
vim.keymap.set("t", "<Esc>", [[<C-\><C-n>]], opts)
|
||||||
|
-- Navigate windows from terminal
|
||||||
|
vim.keymap.set("t", "<C-h>", [[<C-\><C-n><C-w>h]], opts)
|
||||||
|
vim.keymap.set("t", "<C-j>", [[<C-\><C-n><C-w>j]], opts)
|
||||||
|
vim.keymap.set("t", "<C-k>", [[<C-\><C-n><C-w>k]], opts)
|
||||||
|
vim.keymap.set("t", "<C-l>", [[<C-\><C-n><C-w>l]], opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.cmd([[autocmd! TermOpen term://* lua set_terminal_keymaps()]])
|
||||||
|
|
||||||
|
-- LazyGit terminal
|
||||||
|
|
||||||
|
local ok_term, Term = pcall(require, "toggleterm.terminal")
|
||||||
|
if not ok_term then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local lazygit = Term.Terminal:new({
|
||||||
|
cmd = "lazygit",
|
||||||
|
hidden = true,
|
||||||
|
direction = "float",
|
||||||
|
float_opts = { border = "rounded" },
|
||||||
|
})
|
||||||
|
|
||||||
|
function _G.LazygitToggle()
|
||||||
|
lazygit:toggle()
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>gg", "<cmd>lua LazygitToggle()<CR>", { silent = true, desc = "LazyGit" })
|
||||||
12
dot_config/nvim/after/plugin/treesitter.lua
Normal file
12
dot_config/nvim/after/plugin/treesitter.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, configs = pcall(require, "nvim-treesitter.configs")
|
||||||
|
if not ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
configs.setup({
|
||||||
|
ensure_installed = { "lua", "vim", "vimdoc", "rust", "toml", "json" },
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
})
|
||||||
9
dot_config/nvim/after/plugin/whichkey.lua
Normal file
9
dot_config/nvim/after/plugin/whichkey.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local ok, wk = pcall(require, "which-key")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
wk.setup({
|
||||||
|
plugins = { spelling = true },
|
||||||
|
window = { border = "rounded" },
|
||||||
|
})
|
||||||
39
dot_config/nvim/init.lua
Normal file
39
dot_config/nvim/init.lua
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
-- Bootstrap packer.nvim if not installed
|
||||||
|
local ensure_packer = function()
|
||||||
|
local fn = vim.fn
|
||||||
|
local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
|
||||||
|
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--depth",
|
||||||
|
"1",
|
||||||
|
"https://github.com/wbthomason/packer.nvim",
|
||||||
|
install_path,
|
||||||
|
})
|
||||||
|
vim.cmd("packadd packer.nvim")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local packer_bootstrap = ensure_packer()
|
||||||
|
|
||||||
|
-- Load core config
|
||||||
|
require("core.options")
|
||||||
|
require("core.keymaps")
|
||||||
|
require("core.lsp")
|
||||||
|
require("lang.rust")
|
||||||
|
|
||||||
|
|
||||||
|
-- Load plugins (packer startup)
|
||||||
|
require("plugins")
|
||||||
|
|
||||||
|
-- If packer was just installed, sync plugins once
|
||||||
|
if packer_bootstrap then
|
||||||
|
require("packer").sync()
|
||||||
|
end
|
||||||
66
dot_config/nvim/lua/core/keymaps.lua
Normal file
66
dot_config/nvim/lua/core/keymaps.lua
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
|
local keymap = vim.keymap.set
|
||||||
|
local opts = { silent = true }
|
||||||
|
|
||||||
|
-- Basic
|
||||||
|
keymap("n", "<leader>w", ":w<CR>", opts)
|
||||||
|
keymap("n", "<leader>q", ":q<CR>", opts)
|
||||||
|
|
||||||
|
-- Better window navigation
|
||||||
|
keymap("n", "<C-h>", "<C-w>h", opts)
|
||||||
|
keymap("n", "<C-j>", "<C-w>j", opts)
|
||||||
|
keymap("n", "<C-k>", "<C-w>k", opts)
|
||||||
|
keymap("n", "<C-l>", "<C-w>l", opts)
|
||||||
|
|
||||||
|
-- Resize splits
|
||||||
|
keymap("n", "<C-Up>", ":resize -2<CR>", opts)
|
||||||
|
keymap("n", "<C-Down>", ":resize +2<CR>", opts)
|
||||||
|
keymap("n", "<C-Left>", ":vertical resize -2<CR>", opts)
|
||||||
|
keymap("n", "<C-Right>", ":vertical resize +2<CR>", opts)
|
||||||
|
|
||||||
|
-- Clear search highlight
|
||||||
|
keymap("n", "<leader>h", ":nohlsearch<CR>", opts)
|
||||||
|
|
||||||
|
-- Telescope
|
||||||
|
keymap("n", "<leader>ff", "<cmd>Telescope find_files<CR>", opts)
|
||||||
|
keymap("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", opts)
|
||||||
|
keymap("n", "<leader>fb", "<cmd>Telescope buffers<CR>", opts)
|
||||||
|
keymap("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", opts)
|
||||||
|
|
||||||
|
-- Trouble
|
||||||
|
keymap("n", "<leader>xx", "<cmd>TroubleToggle<CR>", opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<S-l>", ":BufferLineCycleNext<CR>", { silent = true, desc = "Next buffer" })
|
||||||
|
vim.keymap.set("n", "<S-h>", ":BufferLineCyclePrev<CR>", { silent = true, desc = "Prev buffer" })
|
||||||
|
vim.keymap.set("n", "<leader>bd", ":bdelete<CR>", { silent = true, desc = "Delete buffer" })
|
||||||
|
|
||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local tb = require("telescope.builtin")
|
||||||
|
|
||||||
|
-- LSP via Telescope (IDE-like)
|
||||||
|
vim.keymap.set("n", "<leader>gd", tb.lsp_definitions, { silent = true, desc = "LSP definitions" })
|
||||||
|
vim.keymap.set("n", "<leader>gr", tb.lsp_references, { silent = true, desc = "LSP references" })
|
||||||
|
vim.keymap.set("n", "<leader>gi", tb.lsp_implementations, { silent = true, desc = "LSP implementations" })
|
||||||
|
vim.keymap.set("n", "<leader>gt", tb.lsp_type_definitions, { silent = true, desc = "LSP type definitions" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ss", tb.lsp_document_symbols, { silent = true, desc = "Document symbols" })
|
||||||
|
vim.keymap.set("n", "<leader>sS", tb.lsp_workspace_symbols, { silent = true, desc = "Workspace symbols" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>sd", tb.diagnostics, { silent = true, desc = "Diagnostics (Telescope)" })
|
||||||
|
|
||||||
|
-- ChatGPT
|
||||||
|
vim.keymap.set("n", "<leader>cc", "<cmd>ChatGPT<CR>", { desc = "ChatGPT" })
|
||||||
|
vim.keymap.set("n", "<leader>ce", "<cmd>ChatGPTExplain<CR>", { desc = "Explain code" })
|
||||||
|
vim.keymap.set("n", "<leader>cf", "<cmd>ChatGPTFix<CR>", { desc = "Fix code" })
|
||||||
|
vim.keymap.set("n", "<leader>co", "<cmd>ChatGPTOptimize<CR>", { desc = "Optimize code" })
|
||||||
|
vim.keymap.set("n", "<leader>ct", "<cmd>ChatGPTTests<CR>", { desc = "Generate tests" })
|
||||||
|
|
||||||
|
vim.keymap.set("v", "<leader>ce", "<cmd>ChatGPTExplain<CR>", { desc = "Explain selection" })
|
||||||
|
vim.keymap.set("v", "<leader>cf", "<cmd>ChatGPTFix<CR>", { desc = "Fix selection" })
|
||||||
|
vim.keymap.set("v", "<leader>co", "<cmd>ChatGPTOptimize<CR>", { desc = "Optimize selection" })
|
||||||
|
|
||||||
67
dot_config/nvim/lua/core/lsp.lua
Normal file
67
dot_config/nvim/lua/core/lsp.lua
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
-- English comments only.
|
||||||
|
-- LSP capabilities for completion
|
||||||
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
|
||||||
|
-- Shared on_attach (LSP keymaps)
|
||||||
|
local on_attach = function(_, bufnr)
|
||||||
|
local opts = {
|
||||||
|
buffer = bufnr,
|
||||||
|
silent = true
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||||
|
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
|
||||||
|
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
|
||||||
|
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||||
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||||
|
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ds", vim.lsp.buf.document_symbol, opts)
|
||||||
|
vim.keymap.set("n", "<leader>ws", vim.lsp.buf.workspace_symbol, opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||||
|
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||||
|
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, opts)
|
||||||
|
vim.keymap.set("n", "<leader>dl", vim.diagnostic.setloclist, opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>f", function()
|
||||||
|
vim.lsp.buf.format({
|
||||||
|
async = true
|
||||||
|
})
|
||||||
|
end, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Better diagnostics UI defaults
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = true,
|
||||||
|
signs = true,
|
||||||
|
underline = true,
|
||||||
|
update_in_insert = false,
|
||||||
|
severity_sort = true,
|
||||||
|
float = {
|
||||||
|
border = "rounded"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Neovim 0.11+ API: configure + enable
|
||||||
|
-- See :help lspconfig-nvim-0.11
|
||||||
|
vim.lsp.config("rust_analyzer", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = {
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
checkOnSave = true,
|
||||||
|
check = {
|
||||||
|
command = "clippy"
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
allFeatures = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable({"rust_analyzer"})
|
||||||
45
dot_config/nvim/lua/core/options.lua
Normal file
45
dot_config/nvim/lua/core/options.lua
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
local opt = vim.opt
|
||||||
|
|
||||||
|
-- General
|
||||||
|
opt.encoding = "utf-8"
|
||||||
|
opt.mouse = "a"
|
||||||
|
opt.clipboard = "unnamedplus"
|
||||||
|
opt.swapfile = false
|
||||||
|
opt.backup = false
|
||||||
|
opt.undofile = true
|
||||||
|
opt.hidden = true
|
||||||
|
|
||||||
|
-- UI
|
||||||
|
opt.number = true
|
||||||
|
opt.relativenumber = true
|
||||||
|
opt.cursorline = true
|
||||||
|
opt.termguicolors = true
|
||||||
|
opt.signcolumn = "yes"
|
||||||
|
opt.wrap = false
|
||||||
|
opt.scrolloff = 8
|
||||||
|
opt.sidescrolloff = 8
|
||||||
|
|
||||||
|
-- Splits
|
||||||
|
opt.splitbelow = true
|
||||||
|
opt.splitright = true
|
||||||
|
|
||||||
|
-- Tabs / Indent
|
||||||
|
opt.expandtab = true
|
||||||
|
opt.tabstop = 2
|
||||||
|
opt.shiftwidth = 2
|
||||||
|
opt.smartindent = true
|
||||||
|
|
||||||
|
-- Search
|
||||||
|
opt.ignorecase = true
|
||||||
|
opt.smartcase = true
|
||||||
|
opt.incsearch = true
|
||||||
|
opt.hlsearch = false
|
||||||
|
|
||||||
|
-- Performance
|
||||||
|
opt.updatetime = 300
|
||||||
|
opt.timeoutlen = 500
|
||||||
|
|
||||||
|
-- Better completion menu
|
||||||
|
opt.completeopt = { "menu", "menuone", "noselect" }
|
||||||
101
dot_config/nvim/lua/lang/rust.lua
Normal file
101
dot_config/nvim/lua/lang/rust.lua
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
-- English comments only.
|
||||||
|
|
||||||
|
-- =========================
|
||||||
|
-- Formatting (Conform)
|
||||||
|
-- =========================
|
||||||
|
local ok_conform, conform = pcall(require, "conform")
|
||||||
|
if ok_conform then
|
||||||
|
conform.setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
rust = { "rustfmt" },
|
||||||
|
},
|
||||||
|
format_on_save = function(_)
|
||||||
|
return { timeout_ms = 2000, lsp_fallback = true }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>rf", function()
|
||||||
|
if ok_conform then
|
||||||
|
conform.format({ timeout_ms = 2000, lsp_fallback = true })
|
||||||
|
else
|
||||||
|
vim.lsp.buf.format({ async = true })
|
||||||
|
end
|
||||||
|
end, { desc = "Rust format" })
|
||||||
|
|
||||||
|
-- =========================
|
||||||
|
-- Cargo -> Quickfix
|
||||||
|
-- =========================
|
||||||
|
local function cargo_to_quickfix(cmd)
|
||||||
|
local output = vim.fn.systemlist(cmd)
|
||||||
|
vim.fn.setqflist({}, " ", { title = cmd, lines = output })
|
||||||
|
vim.cmd("copen")
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>rr", function() cargo_to_quickfix("cargo run") end, { desc = "Cargo run (quickfix)" })
|
||||||
|
vim.keymap.set("n", "<leader>rt", function() cargo_to_quickfix("cargo test") end, { desc = "Cargo test (quickfix)" })
|
||||||
|
vim.keymap.set("n", "<leader>rc", function() cargo_to_quickfix("cargo check") end, { desc = "Cargo check (quickfix)" })
|
||||||
|
vim.keymap.set("n", "<leader>rl", function() cargo_to_quickfix("cargo clippy") end, { desc = "Cargo clippy (quickfix)" })
|
||||||
|
vim.keymap.set("n", "<leader>rb", function() cargo_to_quickfix("cargo build") end, { desc = "Cargo build (quickfix)" })
|
||||||
|
|
||||||
|
-- =========================
|
||||||
|
-- DAP (Rust adapter + configurations)
|
||||||
|
-- =========================
|
||||||
|
local ok_dap, dap = pcall(require, "dap")
|
||||||
|
if not ok_dap then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rust_default_binary()
|
||||||
|
-- Try to read package name from Cargo.toml (common single-crate case).
|
||||||
|
local cargo_toml = vim.fn.getcwd() .. "/Cargo.toml"
|
||||||
|
if vim.fn.filereadable(cargo_toml) == 1 then
|
||||||
|
for _, line in ipairs(vim.fn.readfile(cargo_toml)) do
|
||||||
|
local name = line:match('^name%s*=%s*"(.-)"')
|
||||||
|
if name then
|
||||||
|
return vim.fn.getcwd() .. "/target/debug/" .. name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return vim.fn.getcwd() .. "/target/debug/"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- codelldb adapter (installed via Mason)
|
||||||
|
local mason_path = vim.fn.stdpath("data") .. "/mason"
|
||||||
|
local codelldb_path = mason_path .. "/packages/codelldb/extension/adapter/codelldb"
|
||||||
|
|
||||||
|
dap.adapters.codelldb = {
|
||||||
|
type = "server",
|
||||||
|
port = "${port}",
|
||||||
|
executable = {
|
||||||
|
command = codelldb_path,
|
||||||
|
args = { "--port", "${port}" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.configurations.rust = {
|
||||||
|
{
|
||||||
|
name = "Debug (default binary)",
|
||||||
|
type = "codelldb",
|
||||||
|
request = "launch",
|
||||||
|
program = function()
|
||||||
|
local default_path = rust_default_binary()
|
||||||
|
return vim.fn.input("Path to executable: ", default_path, "file")
|
||||||
|
end,
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
stopOnEntry = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "Debug tests (cargo test)",
|
||||||
|
type = "codelldb",
|
||||||
|
request = "launch",
|
||||||
|
-- This runs the test binary; you'll pick it once, then you can use <leader>dl (run last).
|
||||||
|
program = function()
|
||||||
|
-- Tip: run `cargo test --no-run` once, then pick the produced test binary.
|
||||||
|
local default_path = vim.fn.getcwd() .. "/target/debug/deps/"
|
||||||
|
return vim.fn.input("Path to test executable: ", default_path, "file")
|
||||||
|
end,
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
stopOnEntry = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
129
dot_config/nvim/lua/plugins.lua
Normal file
129
dot_config/nvim/lua/plugins.lua
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
-- English comments only.
|
||||||
|
vim.cmd([[packadd packer.nvim]])
|
||||||
|
|
||||||
|
return require("packer").startup(function(use)
|
||||||
|
-- Packer can manage itself
|
||||||
|
use("wbthomason/packer.nvim")
|
||||||
|
|
||||||
|
-- LSP
|
||||||
|
use("neovim/nvim-lspconfig")
|
||||||
|
|
||||||
|
-- Mason (LSP/DAP/formatters installer)
|
||||||
|
use({
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
config = function()
|
||||||
|
require("mason").setup()
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
use({
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
after = "mason.nvim",
|
||||||
|
config = function()
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = {"rust_analyzer" -- Add more later: "ts_ls", "gopls", "pyright", ...
|
||||||
|
},
|
||||||
|
automatic_installation = true
|
||||||
|
})
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Autocomplete
|
||||||
|
use("hrsh7th/nvim-cmp")
|
||||||
|
use("hrsh7th/cmp-nvim-lsp")
|
||||||
|
use("L3MON4D3/LuaSnip")
|
||||||
|
|
||||||
|
-- Treesitter
|
||||||
|
use({
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
run = function()
|
||||||
|
pcall(vim.cmd, "TSUpdate")
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Telescope
|
||||||
|
use({
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
requires = {"nvim-lua/plenary.nvim"},
|
||||||
|
config = function()
|
||||||
|
require("telescope").setup({})
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Trouble (diagnostics list)
|
||||||
|
use({
|
||||||
|
"folke/trouble.nvim",
|
||||||
|
requires = {"nvim-tree/nvim-web-devicons"},
|
||||||
|
config = function()
|
||||||
|
require("trouble").setup({})
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Formatting (conform)
|
||||||
|
use({"stevearc/conform.nvim"})
|
||||||
|
|
||||||
|
-- Debugging
|
||||||
|
-- Debugging
|
||||||
|
use("mfussenegger/nvim-dap")
|
||||||
|
|
||||||
|
use({
|
||||||
|
"rcarriga/nvim-dap-ui",
|
||||||
|
requires = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" -- REQUIRED dependency
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("dapui").setup()
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Optional icons (used by trouble/telescope)
|
||||||
|
use("nvim-tree/nvim-web-devicons")
|
||||||
|
|
||||||
|
-- Eye candy
|
||||||
|
use("folke/tokyonight.nvim")
|
||||||
|
use("nvim-lualine/lualine.nvim")
|
||||||
|
use("lewis6991/gitsigns.nvim")
|
||||||
|
use("lukas-reineke/indent-blankline.nvim")
|
||||||
|
use("stevearc/dressing.nvim")
|
||||||
|
|
||||||
|
use({
|
||||||
|
"akinsho/bufferline.nvim",
|
||||||
|
tag = "*",
|
||||||
|
requires = {"nvim-tree/nvim-web-devicons"}
|
||||||
|
})
|
||||||
|
|
||||||
|
use("MunifTanjim/nui.nvim")
|
||||||
|
|
||||||
|
use({"rcarriga/nvim-notify"})
|
||||||
|
|
||||||
|
use({
|
||||||
|
"folke/noice.nvim",
|
||||||
|
requires = {"MunifTanjim/nui.nvim", "rcarriga/nvim-notify"}
|
||||||
|
})
|
||||||
|
|
||||||
|
use({
|
||||||
|
"nvimdev/dashboard-nvim",
|
||||||
|
requires = {"nvim-tree/nvim-web-devicons"}
|
||||||
|
})
|
||||||
|
|
||||||
|
use("folke/which-key.nvim")
|
||||||
|
|
||||||
|
use("karb94/neoscroll.nvim")
|
||||||
|
use("echasnovski/mini.animate")
|
||||||
|
|
||||||
|
use({
|
||||||
|
"nvim-tree/nvim-tree.lua",
|
||||||
|
requires = {"nvim-tree/nvim-web-devicons"}
|
||||||
|
})
|
||||||
|
|
||||||
|
use({
|
||||||
|
"akinsho/toggleterm.nvim",
|
||||||
|
tag = "*"
|
||||||
|
})
|
||||||
|
|
||||||
|
use({
|
||||||
|
"jackMort/ChatGPT.nvim",
|
||||||
|
requires = {"MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim"}
|
||||||
|
})
|
||||||
|
|
||||||
|
use("github/copilot.vim")
|
||||||
|
end)
|
||||||
292
dot_config/nvim/plugin/packer_compiled.lua
Normal file
292
dot_config/nvim/plugin/packer_compiled.lua
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
-- Automatically generated packer.nvim plugin loader code
|
||||||
|
|
||||||
|
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
|
||||||
|
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_command('packadd packer.nvim')
|
||||||
|
|
||||||
|
local no_errors, error_msg = pcall(function()
|
||||||
|
|
||||||
|
_G._packer = _G._packer or {}
|
||||||
|
_G._packer.inside_compile = true
|
||||||
|
|
||||||
|
local time
|
||||||
|
local profile_info
|
||||||
|
local should_profile = false
|
||||||
|
if should_profile then
|
||||||
|
local hrtime = vim.loop.hrtime
|
||||||
|
profile_info = {}
|
||||||
|
time = function(chunk, start)
|
||||||
|
if start then
|
||||||
|
profile_info[chunk] = hrtime()
|
||||||
|
else
|
||||||
|
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
time = function(chunk, start) end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function save_profiles(threshold)
|
||||||
|
local sorted_times = {}
|
||||||
|
for chunk_name, time_taken in pairs(profile_info) do
|
||||||
|
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
|
||||||
|
end
|
||||||
|
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
|
||||||
|
local results = {}
|
||||||
|
for i, elem in ipairs(sorted_times) do
|
||||||
|
if not threshold or threshold and elem[2] > threshold then
|
||||||
|
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if threshold then
|
||||||
|
table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
|
||||||
|
end
|
||||||
|
|
||||||
|
_G._packer.profile_output = results
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[Luarocks path setup]], true)
|
||||||
|
local package_path_str = "/home/wann/.cache/nvim/packer_hererocks/2.1.1767980792/share/lua/5.1/?.lua;/home/wann/.cache/nvim/packer_hererocks/2.1.1767980792/share/lua/5.1/?/init.lua;/home/wann/.cache/nvim/packer_hererocks/2.1.1767980792/lib/luarocks/rocks-5.1/?.lua;/home/wann/.cache/nvim/packer_hererocks/2.1.1767980792/lib/luarocks/rocks-5.1/?/init.lua"
|
||||||
|
local install_cpath_pattern = "/home/wann/.cache/nvim/packer_hererocks/2.1.1767980792/lib/lua/5.1/?.so"
|
||||||
|
if not string.find(package.path, package_path_str, 1, true) then
|
||||||
|
package.path = package.path .. ';' .. package_path_str
|
||||||
|
end
|
||||||
|
|
||||||
|
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
|
||||||
|
package.cpath = package.cpath .. ';' .. install_cpath_pattern
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[Luarocks path setup]], false)
|
||||||
|
time([[try_loadstring definition]], true)
|
||||||
|
local function try_loadstring(s, component, name)
|
||||||
|
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
|
||||||
|
if not success then
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[try_loadstring definition]], false)
|
||||||
|
time([[Defining packer_plugins]], true)
|
||||||
|
_G.packer_plugins = {
|
||||||
|
["ChatGPT.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/ChatGPT.nvim",
|
||||||
|
url = "https://github.com/jackMort/ChatGPT.nvim"
|
||||||
|
},
|
||||||
|
LuaSnip = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/LuaSnip",
|
||||||
|
url = "https://github.com/L3MON4D3/LuaSnip"
|
||||||
|
},
|
||||||
|
["bufferline.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/bufferline.nvim",
|
||||||
|
url = "https://github.com/akinsho/bufferline.nvim"
|
||||||
|
},
|
||||||
|
["cmp-nvim-lsp"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
|
||||||
|
url = "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||||
|
},
|
||||||
|
["conform.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/conform.nvim",
|
||||||
|
url = "https://github.com/stevearc/conform.nvim"
|
||||||
|
},
|
||||||
|
["copilot.vim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/copilot.vim",
|
||||||
|
url = "https://github.com/github/copilot.vim"
|
||||||
|
},
|
||||||
|
["dashboard-nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/dashboard-nvim",
|
||||||
|
url = "https://github.com/nvimdev/dashboard-nvim"
|
||||||
|
},
|
||||||
|
["dressing.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/dressing.nvim",
|
||||||
|
url = "https://github.com/stevearc/dressing.nvim"
|
||||||
|
},
|
||||||
|
["gitsigns.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/gitsigns.nvim",
|
||||||
|
url = "https://github.com/lewis6991/gitsigns.nvim"
|
||||||
|
},
|
||||||
|
["indent-blankline.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim",
|
||||||
|
url = "https://github.com/lukas-reineke/indent-blankline.nvim"
|
||||||
|
},
|
||||||
|
["lualine.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/lualine.nvim",
|
||||||
|
url = "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
},
|
||||||
|
["mason-lspconfig.nvim"] = {
|
||||||
|
config = { "\27LJ\2\n™\1\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\21ensure_installed\1\0\2\27automatic_installation\2\21ensure_installed\0\1\2\0\0\18rust_analyzer\nsetup\20mason-lspconfig\frequire\0" },
|
||||||
|
load_after = {},
|
||||||
|
loaded = true,
|
||||||
|
needs_bufread = false,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/opt/mason-lspconfig.nvim",
|
||||||
|
url = "https://github.com/williamboman/mason-lspconfig.nvim"
|
||||||
|
},
|
||||||
|
["mason.nvim"] = {
|
||||||
|
after = { "mason-lspconfig.nvim" },
|
||||||
|
config = { "\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\nmason\frequire\0" },
|
||||||
|
loaded = true,
|
||||||
|
only_config = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/mason.nvim",
|
||||||
|
url = "https://github.com/williamboman/mason.nvim"
|
||||||
|
},
|
||||||
|
["mini.animate"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/mini.animate",
|
||||||
|
url = "https://github.com/echasnovski/mini.animate"
|
||||||
|
},
|
||||||
|
["neoscroll.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/neoscroll.nvim",
|
||||||
|
url = "https://github.com/karb94/neoscroll.nvim"
|
||||||
|
},
|
||||||
|
["noice.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/noice.nvim",
|
||||||
|
url = "https://github.com/folke/noice.nvim"
|
||||||
|
},
|
||||||
|
["nui.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nui.nvim",
|
||||||
|
url = "https://github.com/MunifTanjim/nui.nvim"
|
||||||
|
},
|
||||||
|
["nvim-cmp"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-cmp",
|
||||||
|
url = "https://github.com/hrsh7th/nvim-cmp"
|
||||||
|
},
|
||||||
|
["nvim-dap"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-dap",
|
||||||
|
url = "https://github.com/mfussenegger/nvim-dap"
|
||||||
|
},
|
||||||
|
["nvim-dap-ui"] = {
|
||||||
|
config = { "\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\ndapui\frequire\0" },
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-dap-ui",
|
||||||
|
url = "https://github.com/rcarriga/nvim-dap-ui"
|
||||||
|
},
|
||||||
|
["nvim-lspconfig"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-lspconfig",
|
||||||
|
url = "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
},
|
||||||
|
["nvim-nio"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-nio",
|
||||||
|
url = "https://github.com/nvim-neotest/nvim-nio"
|
||||||
|
},
|
||||||
|
["nvim-notify"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-notify",
|
||||||
|
url = "https://github.com/rcarriga/nvim-notify"
|
||||||
|
},
|
||||||
|
["nvim-tree.lua"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
|
||||||
|
url = "https://github.com/nvim-tree/nvim-tree.lua"
|
||||||
|
},
|
||||||
|
["nvim-treesitter"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-treesitter",
|
||||||
|
url = "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
["nvim-web-devicons"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/nvim-web-devicons",
|
||||||
|
url = "https://github.com/nvim-tree/nvim-web-devicons"
|
||||||
|
},
|
||||||
|
["packer.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/packer.nvim",
|
||||||
|
url = "https://github.com/wbthomason/packer.nvim"
|
||||||
|
},
|
||||||
|
["plenary.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/plenary.nvim",
|
||||||
|
url = "https://github.com/nvim-lua/plenary.nvim"
|
||||||
|
},
|
||||||
|
["telescope.nvim"] = {
|
||||||
|
config = { "\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14telescope\frequire\0" },
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/telescope.nvim",
|
||||||
|
url = "https://github.com/nvim-telescope/telescope.nvim"
|
||||||
|
},
|
||||||
|
["toggleterm.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/toggleterm.nvim",
|
||||||
|
url = "https://github.com/akinsho/toggleterm.nvim"
|
||||||
|
},
|
||||||
|
["tokyonight.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/tokyonight.nvim",
|
||||||
|
url = "https://github.com/folke/tokyonight.nvim"
|
||||||
|
},
|
||||||
|
["trouble.nvim"] = {
|
||||||
|
config = { "\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\ftrouble\frequire\0" },
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/trouble.nvim",
|
||||||
|
url = "https://github.com/folke/trouble.nvim"
|
||||||
|
},
|
||||||
|
["which-key.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/wann/.local/share/nvim/site/pack/packer/start/which-key.nvim",
|
||||||
|
url = "https://github.com/folke/which-key.nvim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
time([[Defining packer_plugins]], false)
|
||||||
|
-- Config for: telescope.nvim
|
||||||
|
time([[Config for telescope.nvim]], true)
|
||||||
|
try_loadstring("\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14telescope\frequire\0", "config", "telescope.nvim")
|
||||||
|
time([[Config for telescope.nvim]], false)
|
||||||
|
-- Config for: nvim-dap-ui
|
||||||
|
time([[Config for nvim-dap-ui]], true)
|
||||||
|
try_loadstring("\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\ndapui\frequire\0", "config", "nvim-dap-ui")
|
||||||
|
time([[Config for nvim-dap-ui]], false)
|
||||||
|
-- Config for: mason.nvim
|
||||||
|
time([[Config for mason.nvim]], true)
|
||||||
|
try_loadstring("\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\nmason\frequire\0", "config", "mason.nvim")
|
||||||
|
time([[Config for mason.nvim]], false)
|
||||||
|
-- Config for: trouble.nvim
|
||||||
|
time([[Config for trouble.nvim]], true)
|
||||||
|
try_loadstring("\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\ftrouble\frequire\0", "config", "trouble.nvim")
|
||||||
|
time([[Config for trouble.nvim]], false)
|
||||||
|
-- Load plugins in order defined by `after`
|
||||||
|
time([[Sequenced loading]], true)
|
||||||
|
vim.cmd [[ packadd mason-lspconfig.nvim ]]
|
||||||
|
|
||||||
|
-- Config for: mason-lspconfig.nvim
|
||||||
|
try_loadstring("\27LJ\2\n™\1\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\21ensure_installed\1\0\2\27automatic_installation\2\21ensure_installed\0\1\2\0\0\18rust_analyzer\nsetup\20mason-lspconfig\frequire\0", "config", "mason-lspconfig.nvim")
|
||||||
|
|
||||||
|
time([[Sequenced loading]], false)
|
||||||
|
|
||||||
|
_G._packer.inside_compile = false
|
||||||
|
if _G._packer.needs_bufread == true then
|
||||||
|
vim.cmd("doautocmd BufRead")
|
||||||
|
end
|
||||||
|
_G._packer.needs_bufread = false
|
||||||
|
|
||||||
|
if should_profile then save_profiles() end
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
if not no_errors then
|
||||||
|
error_msg = error_msg:gsub('"', '\\"')
|
||||||
|
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue
Block a user