feat(nvim): reorganize and modernize Neovim configuration
- Remove deprecated config files: git-ref.lua, git-signs.lua, diffview-config.lua, lsp-lines-config.lua, neotree-config.lua, fidget-spinner.lua, silicon-config.lua, telescope-config.lua, llm.lua - Add new configuration files: diagnostics-config.lua, git-config.lua, llm-config.lua, snacks-config.lua - Update existing config files: base.lua, dap-config.lua, init.lua, lsp-config.lua, lualine-config.lua, noice-config.lua, octo-config.lua, toggleterm-config.lua, which-key-config.lua - Update nvim and opencode module configurations
This commit is contained in:
@@ -38,14 +38,8 @@ in
|
|||||||
programs.jq = enabled;
|
programs.jq = enabled;
|
||||||
programs.pandoc = enabled;
|
programs.pandoc = enabled;
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
android-tools
|
colima
|
||||||
imagemagick
|
docker
|
||||||
python312
|
|
||||||
texliveSmall # Pandoc PDF Dep
|
|
||||||
google-cloud-sdk
|
|
||||||
tldr
|
|
||||||
|
|
||||||
# AI Assistants
|
|
||||||
reichard.qwen-code
|
reichard.qwen-code
|
||||||
codex
|
codex
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
require('aerial').setup({
|
|
||||||
on_attach = function(bufnr)
|
|
||||||
vim.keymap.set('n', '{', '<cmd>AerialPrev<CR>', {buffer = bufnr})
|
|
||||||
vim.keymap.set('n', '}', '<cmd>AerialNext<CR>', {buffer = bufnr})
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>a', '<cmd>AerialToggle!<CR>')
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
vim.cmd("colorscheme catppuccin-mocha")
|
vim.cmd("colorscheme catppuccin-mocha")
|
||||||
|
|
||||||
-- Set User Shell
|
-- Set User Shell
|
||||||
vim.o.shell = "/usr/bin/env bash"
|
vim.o.shell = require("nix-vars").bash
|
||||||
|
|
||||||
-- Set Leader
|
-- Set Leader
|
||||||
vim.keymap.set("n", "<Space>", "<Nop>", { silent = true })
|
vim.keymap.set("n", "<Space>", "<Nop>", { silent = true })
|
||||||
@@ -38,35 +38,3 @@ vim.opt.shiftwidth = 2
|
|||||||
vim.opt.foldmethod = "indent"
|
vim.opt.foldmethod = "indent"
|
||||||
vim.opt.foldnestmax = 10
|
vim.opt.foldnestmax = 10
|
||||||
vim.opt.foldlevel = 2
|
vim.opt.foldlevel = 2
|
||||||
|
|
||||||
-- Diagnostics Mappings
|
|
||||||
local diagnostics_active = true
|
|
||||||
local toggle_diagnostics = function()
|
|
||||||
diagnostics_active = not diagnostics_active
|
|
||||||
if diagnostics_active then
|
|
||||||
vim.diagnostic.enable()
|
|
||||||
else
|
|
||||||
vim.diagnostic.disable()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local diagnostics_loclist_active = false
|
|
||||||
local toggle_diagnostics_loclist = function()
|
|
||||||
diagnostics_loclist_active = not diagnostics_loclist_active
|
|
||||||
if diagnostics_loclist_active then
|
|
||||||
vim.diagnostic.setloclist()
|
|
||||||
else
|
|
||||||
vim.cmd("lclose")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
vim.keymap.set("n", "<leader>qt", toggle_diagnostics, opts)
|
|
||||||
vim.keymap.set("n", "<leader>qN", function()
|
|
||||||
vim.diagnostic.goto_prev({ float = false })
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set("n", "<leader>qn", function()
|
|
||||||
vim.diagnostic.goto_next({ float = false })
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set("n", "<leader>qq", toggle_diagnostics_loclist, opts)
|
|
||||||
vim.keymap.set("n", "<leader>qe", vim.diagnostic.open_float, opts)
|
|
||||||
|
|||||||
@@ -20,17 +20,17 @@ dapui.setup({
|
|||||||
},
|
},
|
||||||
element_mappings = {},
|
element_mappings = {},
|
||||||
expand_lines = false,
|
expand_lines = false,
|
||||||
floating = {border = "single", mappings = {close = {"q", "<Esc>"}}},
|
floating = { border = "single", mappings = { close = { "q", "<Esc>" } } },
|
||||||
force_buffers = true,
|
force_buffers = true,
|
||||||
icons = {collapsed = "", current_frame = "", expanded = ""},
|
icons = { collapsed = "", current_frame = "", expanded = "" },
|
||||||
layouts = {
|
layouts = {
|
||||||
{
|
{
|
||||||
elements = {{id = "repl", size = 0.5}, {id = "scopes", size = 0.5}},
|
elements = { { id = "repl", size = 0.5 }, { id = "scopes", size = 0.5 } },
|
||||||
position = "bottom",
|
position = "bottom",
|
||||||
size = 10
|
size = 10
|
||||||
}, {
|
}, {
|
||||||
elements = {
|
elements = {
|
||||||
{id = "breakpoints", size = 0.5}, {id = "stacks", size = 0.5}
|
{ id = "breakpoints", size = 0.5 }, { id = "stacks", size = 0.5 }
|
||||||
},
|
},
|
||||||
position = "left",
|
position = "left",
|
||||||
size = 40
|
size = 40
|
||||||
@@ -38,13 +38,13 @@ dapui.setup({
|
|||||||
},
|
},
|
||||||
mappings = {
|
mappings = {
|
||||||
edit = "e",
|
edit = "e",
|
||||||
expand = {"<CR>", "<2-LeftMouse>"},
|
expand = { "<CR>", "<2-LeftMouse>" },
|
||||||
open = "o",
|
open = "o",
|
||||||
remove = "d",
|
remove = "d",
|
||||||
repl = "r",
|
repl = "r",
|
||||||
toggle = "t"
|
toggle = "t"
|
||||||
},
|
},
|
||||||
render = {indent = 1, max_value_lines = 100}
|
render = { indent = 1, max_value_lines = 100 }
|
||||||
})
|
})
|
||||||
dapgo.setup()
|
dapgo.setup()
|
||||||
|
|
||||||
@@ -58,13 +58,13 @@ vim.api.nvim_create_autocmd("FileType", {
|
|||||||
callback = function()
|
callback = function()
|
||||||
vim.api.nvim_buf_set_keymap(0, 'n', 'c',
|
vim.api.nvim_buf_set_keymap(0, 'n', 'c',
|
||||||
"<cmd>lua require'dap'.continue()<CR>",
|
"<cmd>lua require'dap'.continue()<CR>",
|
||||||
{noremap = true, silent = true})
|
{ noremap = true, silent = true })
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Leader Keys
|
-- Create KeyMaps
|
||||||
local opts = {noremap = true, silent = true}
|
local opts = { noremap = true, silent = true }
|
||||||
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, opts)
|
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, vim.tbl_extend("force", { desc = "Toggle Breakpoint" }, opts))
|
||||||
vim.keymap.set('n', '<leader>du', dapui.toggle, opts)
|
vim.keymap.set('n', '<leader>dc', dap.continue, vim.tbl_extend("force", { desc = "Continue" }, opts))
|
||||||
vim.keymap.set('n', '<leader>dc', dap.continue, opts)
|
vim.keymap.set('n', '<leader>dt', dapgo.debug_test, vim.tbl_extend("force", { desc = "Run Test" }, opts))
|
||||||
vim.keymap.set('n', '<leader>dt', dapgo.debug_test, opts)
|
vim.keymap.set('n', '<leader>du', dapui.toggle, vim.tbl_extend("force", { desc = "Toggle UI" }, opts))
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
-- Diagnostics Mappings
|
||||||
|
local diagnostics_active = true
|
||||||
|
local toggle_diagnostics = function()
|
||||||
|
diagnostics_active = not diagnostics_active
|
||||||
|
if diagnostics_active then
|
||||||
|
vim.diagnostic.enable()
|
||||||
|
else
|
||||||
|
vim.diagnostic.disable()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local diagnostics_loclist_active = false
|
||||||
|
local toggle_diagnostics_loclist = function()
|
||||||
|
diagnostics_loclist_active = not diagnostics_loclist_active
|
||||||
|
if diagnostics_loclist_active then
|
||||||
|
vim.diagnostic.setloclist()
|
||||||
|
else
|
||||||
|
vim.cmd("lclose")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create KeyMaps
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
vim.keymap.set("n", "<leader>qN", function()
|
||||||
|
vim.diagnostic.goto_prev({ float = false })
|
||||||
|
end, vim.tbl_extend("force", { desc = "Previous Diagnostic" }, opts))
|
||||||
|
vim.keymap.set("n", "<leader>qe", vim.diagnostic.open_float,
|
||||||
|
vim.tbl_extend("force", { desc = "Open Diagnostics" }, opts))
|
||||||
|
vim.keymap.set("n", "<leader>qt", toggle_diagnostics,
|
||||||
|
vim.tbl_extend("force", { desc = "Toggle Inline Diagnostics" }, opts))
|
||||||
|
vim.keymap.set("n", "<leader>qn", function()
|
||||||
|
vim.diagnostic.goto_next({ float = false })
|
||||||
|
end, vim.tbl_extend("force", { desc = "Next Diagnostic" }, opts))
|
||||||
|
vim.keymap.set("n", "<leader>qq", toggle_diagnostics_loclist,
|
||||||
|
vim.tbl_extend("force", { desc = "Toggle Diagnostic List" }, opts))
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
vim.keymap.set('n', '<leader>go', '<cmd>DiffviewOpen<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>gO', '<cmd>DiffviewOpen origin/main...HEAD<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>gh', '<cmd>DiffviewFileHistory<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>gH',
|
|
||||||
'<cmd>DiffviewFileHistory --range=origin..HEAD<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>gc', '<cmd>DiffviewClose<CR>')
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
require("gitsigns").setup({
|
||||||
|
current_line_blame = true,
|
||||||
|
current_line_blame_opts = { delay = 0 },
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gitsigns = require("gitsigns")
|
||||||
|
|
||||||
|
local function map(mode, l, r, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.buffer = bufnr
|
||||||
|
vim.keymap.set(mode, l, r, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
map("n", "<leader>gb", gitsigns.toggle_current_line_blame, { desc = "Git Blame Line" })
|
||||||
|
map("n", "<leader>gB", function()
|
||||||
|
gitsigns.blame_line({ full = true })
|
||||||
|
end, { desc = "Git Blame Full" })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local function get_git_info()
|
||||||
|
local abs_path = vim.fn.expand("%:p")
|
||||||
|
local git_root = vim.fn.systemlist(
|
||||||
|
"git -C " .. vim.fn.escape(vim.fn.fnamemodify(abs_path, ":h"), " ") .. " rev-parse --show-toplevel"
|
||||||
|
)[1]
|
||||||
|
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local git_repo = vim.fn.system("git remote get-url origin"):match("([^/:]+/[^/.]+)%.?[^/]*$"):gsub("\n", "")
|
||||||
|
local git_branch = vim.fn.system("git rev-parse --abbrev-ref HEAD"):gsub("\n", "")
|
||||||
|
|
||||||
|
return {
|
||||||
|
file = vim.fn.fnamemodify(abs_path, ":s?" .. git_root .. "/??"),
|
||||||
|
branch = git_branch,
|
||||||
|
repo = git_repo,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy_git_link()
|
||||||
|
local git_info = get_git_info()
|
||||||
|
if git_info == nil then
|
||||||
|
vim.notify("Failed to get git info", vim.log.levels.ERROR)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local start_line = vim.fn.line("v")
|
||||||
|
local end_line = vim.fn.line(".")
|
||||||
|
|
||||||
|
local message = string.format(
|
||||||
|
"https://github.com/%s/blob/%s/%s#L%d-L%d",
|
||||||
|
git_info.repo,
|
||||||
|
git_info.branch,
|
||||||
|
git_info.file,
|
||||||
|
start_line,
|
||||||
|
end_line
|
||||||
|
)
|
||||||
|
vim.fn.setreg("+", message)
|
||||||
|
vim.notify("Copied:\n\t" .. message, vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create KeyMaps
|
||||||
|
vim.keymap.set("v", "<Leader>gy", function() copy_git_link() end, { desc = "Copy GitHub Link" })
|
||||||
|
vim.keymap.set('n', '<leader>go', '<cmd>DiffviewOpen<CR>', { desc = "Open Diff - Current" })
|
||||||
|
vim.keymap.set('n', '<leader>gO', '<cmd>DiffviewOpen origin/main...HEAD<CR>', { desc = "Open Diff - Main" })
|
||||||
|
vim.keymap.set('n', '<leader>gh', '<cmd>DiffviewFileHistory<CR>', { desc = "Diff History" })
|
||||||
|
vim.keymap.set('n', '<leader>gH', '<cmd>DiffviewFileHistory --range=origin..HEAD<CR>', { desc = "Diff History - Main" })
|
||||||
|
vim.keymap.set('n', '<leader>gc', '<cmd>DiffviewClose<CR>', { desc = "Close Diff" })
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
local function get_git_info()
|
|
||||||
local abs_path = vim.fn.expand("%:p")
|
|
||||||
local git_root = vim.fn.systemlist(
|
|
||||||
"git -C " .. vim.fn.escape(vim.fn.fnamemodify(abs_path, ":h"), " ") .. " rev-parse --show-toplevel"
|
|
||||||
)[1]
|
|
||||||
|
|
||||||
if vim.v.shell_error ~= 0 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local git_repo = vim.fn.system("git remote get-url origin"):match("([^/:]+/[^/.]+)%.?[^/]*$"):gsub("\n", "")
|
|
||||||
local git_branch = vim.fn.system("git rev-parse --abbrev-ref HEAD"):gsub("\n", "")
|
|
||||||
|
|
||||||
return {
|
|
||||||
file = vim.fn.fnamemodify(abs_path, ":s?" .. git_root .. "/??"),
|
|
||||||
branch = git_branch,
|
|
||||||
repo = git_repo,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set("v", "<Leader>gy", function()
|
|
||||||
local git_info = get_git_info()
|
|
||||||
if git_info == nil then
|
|
||||||
vim.notify("Failed to get git info", vim.log.levels.ERROR)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local start_line = vim.fn.line("v")
|
|
||||||
local end_line = vim.fn.line(".")
|
|
||||||
|
|
||||||
local message = string.format(
|
|
||||||
"https://github.com/%s/blob/%s/%s#L%d-L%d",
|
|
||||||
git_info.repo,
|
|
||||||
git_info.branch,
|
|
||||||
git_info.file,
|
|
||||||
start_line,
|
|
||||||
end_line
|
|
||||||
)
|
|
||||||
vim.fn.setreg("+", message)
|
|
||||||
vim.notify("Copied:\n\t" .. message, vim.log.levels.INFO)
|
|
||||||
end, { noremap = true, silent = true, desc = "Copy GitHub Link" })
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
require("gitsigns").setup({
|
|
||||||
current_line_blame = true,
|
|
||||||
current_line_blame_opts = { delay = 0 },
|
|
||||||
on_attach = function(bufnr)
|
|
||||||
local gitsigns = require("gitsigns")
|
|
||||||
|
|
||||||
local function map(mode, l, r, opts)
|
|
||||||
opts = opts or {}
|
|
||||||
opts.buffer = bufnr
|
|
||||||
vim.keymap.set(mode, l, r, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
map("n", "<leader>gb", gitsigns.toggle_current_line_blame)
|
|
||||||
map("n", "<leader>gB", function()
|
|
||||||
gitsigns.blame_line({ full = true })
|
|
||||||
end)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,23 +1,18 @@
|
|||||||
require("base")
|
require("base")
|
||||||
require("aerial-config")
|
|
||||||
require("autopairs-config")
|
require("autopairs-config")
|
||||||
require("cmp-config")
|
require("cmp-config")
|
||||||
require("comment-config")
|
require("comment-config")
|
||||||
require("dap-config")
|
require("dap-config")
|
||||||
require("diffview-config")
|
require("diagnostics-config")
|
||||||
require("git-ref")
|
require("git-config")
|
||||||
require("git-signs")
|
|
||||||
require("leap-config")
|
require("leap-config")
|
||||||
require("llm")
|
require("llm-config")
|
||||||
require("lsp-config")
|
require("lsp-config")
|
||||||
require("lsp-lines-config")
|
|
||||||
require("lualine-config")
|
require("lualine-config")
|
||||||
require("neotree-config")
|
|
||||||
require("noice-config")
|
require("noice-config")
|
||||||
require("numb-config")
|
require("numb-config")
|
||||||
require("octo-config")
|
require("octo-config")
|
||||||
require("silicon-config")
|
require("snacks-config")
|
||||||
require("telescope-config")
|
|
||||||
require("toggleterm-config")
|
require("toggleterm-config")
|
||||||
require("ts-config")
|
require("ts-config")
|
||||||
require("weird-chars")
|
require("weird-chars")
|
||||||
|
|||||||
67
modules/home/programs/terminal/nvim/config/lua/llm-config.lua
Executable file
67
modules/home/programs/terminal/nvim/config/lua/llm-config.lua
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
local llm_endpoint = "https://llm-api.va.reichard.io"
|
||||||
|
-- local llm_assistant_model = "gpt-oss-20b-thinking"
|
||||||
|
-- local llm_infill_model = "qwen2.5-coder-3b-instruct"
|
||||||
|
|
||||||
|
-- Available models: qwen3-30b-2507-instruct, qwen2.5-coder-3b-instruct
|
||||||
|
local llm_assistant_model = "qwen3-30b-2507-instruct"
|
||||||
|
local llm_infill_model = llm_assistant_model
|
||||||
|
|
||||||
|
-- Default Llama - Toggle Llama & Copilot
|
||||||
|
-- vim.g.copilot_filetypes = { ["*"] = false }
|
||||||
|
local current_mode = "copilot"
|
||||||
|
local function toggle_llm_fim_provider()
|
||||||
|
if current_mode == "llama" then
|
||||||
|
vim.g.copilot_filetypes = { ["*"] = true }
|
||||||
|
vim.cmd("Copilot enable")
|
||||||
|
vim.cmd("LlamaDisable")
|
||||||
|
current_mode = "copilot"
|
||||||
|
vim.notify("Copilot FIM enabled", vim.log.levels.INFO)
|
||||||
|
else
|
||||||
|
vim.g.copilot_filetypes = { ["*"] = true }
|
||||||
|
vim.cmd("Copilot disable")
|
||||||
|
vim.cmd("LlamaEnable")
|
||||||
|
current_mode = "llama"
|
||||||
|
vim.notify("Llama FIM enabled", vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- OpenCode Configuration
|
||||||
|
vim.g.opencode_opts = {
|
||||||
|
provider = {
|
||||||
|
enabled = "snacks",
|
||||||
|
snacks = {
|
||||||
|
win = {
|
||||||
|
-- position = "float",
|
||||||
|
enter = true,
|
||||||
|
width = 0.5,
|
||||||
|
-- height = 0.75,
|
||||||
|
},
|
||||||
|
start_insert = true,
|
||||||
|
auto_insert = true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Copilot Configuration
|
||||||
|
vim.g.copilot_no_tab_map = true
|
||||||
|
|
||||||
|
-- LLama LLM FIM
|
||||||
|
vim.g.llama_config = {
|
||||||
|
endpoint = llm_endpoint .. "/infill",
|
||||||
|
model = llm_infill_model,
|
||||||
|
n_predict = 2048,
|
||||||
|
ring_n_chunks = 32,
|
||||||
|
enable_at_startup = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Create KeyMaps
|
||||||
|
vim.keymap.set("n", "<leader>af", toggle_llm_fim_provider, { desc = "Toggle FIM (Llama / Copilot)" })
|
||||||
|
vim.keymap.set({ "n", "x" }, "<leader>ai", function() require("opencode").ask("@this: ", { submit = true }) end,
|
||||||
|
{ desc = "Ask OpenCode" })
|
||||||
|
vim.keymap.set({ "n", "x" }, "<leader>aa", function() require("opencode").select() end,
|
||||||
|
{ desc = "Execute OpenCode Action" })
|
||||||
|
vim.keymap.set({ "n", "t" }, "<leader>at", function() require("opencode").toggle() end, { desc = "Toggle OpenCode" })
|
||||||
|
vim.keymap.set('i', '<C-J>', 'copilot#Accept("\\<CR>")', {
|
||||||
|
expr = true,
|
||||||
|
replace_keycodes = false
|
||||||
|
})
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
local llm_endpoint = "https://llm-api.va.reichard.io"
|
|
||||||
-- local llm_assistant_model = "gpt-oss-20b-thinking"
|
|
||||||
-- local llm_infill_model = "qwen2.5-coder-3b-instruct"
|
|
||||||
|
|
||||||
local llm_assistant_model = "qwen3-30b-2507-instruct"
|
|
||||||
local llm_infill_model = llm_assistant_model
|
|
||||||
|
|
||||||
-- Default Llama - Toggle Llama & Copilot
|
|
||||||
-- vim.g.copilot_filetypes = { ["*"] = false }
|
|
||||||
local current_mode = "copilot"
|
|
||||||
local function toggle_llm_fim_provider()
|
|
||||||
if current_mode == "llama" then
|
|
||||||
vim.g.copilot_filetypes = { ["*"] = true }
|
|
||||||
vim.cmd("Copilot enable")
|
|
||||||
vim.cmd("LlamaDisable")
|
|
||||||
current_mode = "copilot"
|
|
||||||
vim.notify("Copilot FIM enabled", vim.log.levels.INFO)
|
|
||||||
else
|
|
||||||
vim.g.copilot_filetypes = { ["*"] = true }
|
|
||||||
vim.cmd("Copilot disable")
|
|
||||||
vim.cmd("LlamaEnable")
|
|
||||||
current_mode = "llama"
|
|
||||||
vim.notify("Llama FIM enabled", vim.log.levels.INFO)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.keymap.set("n", "<leader>cf", toggle_llm_fim_provider, { desc = "Toggle FIM (Llama / Copilot)" })
|
|
||||||
|
|
||||||
-- Copilot Accept Shortcut
|
|
||||||
vim.keymap.set('i', '<C-J>', 'copilot#Accept("\\<CR>")', {
|
|
||||||
expr = true,
|
|
||||||
replace_keycodes = false
|
|
||||||
})
|
|
||||||
vim.g.copilot_no_tab_map = true
|
|
||||||
|
|
||||||
-- Configure LLama LLM FIM
|
|
||||||
vim.g.llama_config = {
|
|
||||||
endpoint = llm_endpoint .. "/infill",
|
|
||||||
model = llm_infill_model,
|
|
||||||
n_predict = 2048,
|
|
||||||
ring_n_chunks = 32,
|
|
||||||
enable_at_startup = false,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Configure Code Companion
|
|
||||||
require("plugins.codecompanion.fidget-spinner"):init()
|
|
||||||
require("codecompanion").setup({
|
|
||||||
display = { chat = { window = { layout = "float", width = 0.6 } } },
|
|
||||||
adapters = {
|
|
||||||
http = {
|
|
||||||
opts = { show_defaults = false, },
|
|
||||||
["llama-swap"] = function()
|
|
||||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
|
||||||
name = "llama-swap",
|
|
||||||
formatted_name = "LlamaSwap",
|
|
||||||
schema = { model = { default = llm_assistant_model } },
|
|
||||||
env = { url = llm_endpoint },
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
copilot = require("codecompanion.adapters.http.copilot"),
|
|
||||||
},
|
|
||||||
acp = { opts = { show_defaults = false } },
|
|
||||||
},
|
|
||||||
strategies = {
|
|
||||||
chat = { adapter = "llama-swap" },
|
|
||||||
inline = { adapter = "llama-swap" },
|
|
||||||
cmd = { adapter = "llama-swap" },
|
|
||||||
},
|
|
||||||
chat = { dispay = "telescope" },
|
|
||||||
memory = {
|
|
||||||
opts = { chat = { enabled = true } },
|
|
||||||
default = {
|
|
||||||
description = "Collection of common files for all projects",
|
|
||||||
files = {
|
|
||||||
".clinerules",
|
|
||||||
".cursorrules",
|
|
||||||
".goosehints",
|
|
||||||
".rules",
|
|
||||||
".windsurfrules",
|
|
||||||
".github/copilot-instructions.md",
|
|
||||||
"AGENT.md",
|
|
||||||
"AGENTS.md",
|
|
||||||
".cursor/rules/",
|
|
||||||
{ path = "CLAUDE.md", parser = "claude" },
|
|
||||||
{ path = "CLAUDE.local.md", parser = "claude" },
|
|
||||||
{ path = "~/.claude/CLAUDE.md", parser = "claude" },
|
|
||||||
},
|
|
||||||
is_default = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -20,6 +20,15 @@ require('render-markdown').setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
------------------------------------------------------
|
||||||
|
---------------------- LSP Lines ---------------------
|
||||||
|
------------------------------------------------------
|
||||||
|
require("lsp_lines").setup()
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = false,
|
||||||
|
virtual_lines = true,
|
||||||
|
})
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-------------------- Built-in LSP --------------------
|
-------------------- Built-in LSP --------------------
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
@@ -27,8 +36,6 @@ local nix_vars = require("nix-vars")
|
|||||||
|
|
||||||
local augroup = vim.api.nvim_create_augroup("LspFormatting", { clear = false })
|
local augroup = vim.api.nvim_create_augroup("LspFormatting", { clear = false })
|
||||||
local on_attach = function(client, bufnr)
|
local on_attach = function(client, bufnr)
|
||||||
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
|
||||||
|
|
||||||
if client:supports_method("textDocument/formatting") then
|
if client:supports_method("textDocument/formatting") then
|
||||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
@@ -40,17 +47,25 @@ local on_attach = function(client, bufnr)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
|
-- Create KeyMaps
|
||||||
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
|
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
||||||
vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration, bufopts)
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, vim.tbl_extend("force", { desc = 'Hover documentation' }, bufopts))
|
||||||
vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition, bufopts)
|
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help,
|
||||||
vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation, bufopts)
|
vim.tbl_extend("force", { desc = "Show signature help" }, bufopts))
|
||||||
vim.keymap.set("n", "<leader>ln", vim.lsp.buf.rename, bufopts)
|
vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration,
|
||||||
vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references, bufopts)
|
vim.tbl_extend("force", { desc = "Go to declaration" }, bufopts))
|
||||||
vim.keymap.set("n", "<leader>lt", vim.lsp.buf.type_definition, bufopts)
|
vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition,
|
||||||
|
vim.tbl_extend("force", { desc = "Go to definition" }, bufopts))
|
||||||
|
vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation,
|
||||||
|
vim.tbl_extend("force", { desc = "Go to implementation" }, bufopts))
|
||||||
|
vim.keymap.set("n", "<leader>ln", vim.lsp.buf.rename, vim.tbl_extend("force", { desc = "Rename symbol" }, bufopts))
|
||||||
|
vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references,
|
||||||
|
vim.tbl_extend("force", { desc = "Show references" }, bufopts))
|
||||||
|
vim.keymap.set("n", "<leader>lt", vim.lsp.buf.type_definition,
|
||||||
|
vim.tbl_extend("force", { desc = "Go to type definition" }, bufopts))
|
||||||
vim.keymap.set("n", "<leader>lf", function()
|
vim.keymap.set("n", "<leader>lf", function()
|
||||||
vim.lsp.buf.format({ async = true, timeout_ms = 2000 })
|
vim.lsp.buf.format({ async = true, timeout_ms = 2000 })
|
||||||
end, bufopts)
|
end, vim.tbl_extend("force", { desc = "Format file" }, bufopts))
|
||||||
end
|
end
|
||||||
|
|
||||||
local on_attach_no_formatting = function(client, bufnr)
|
local on_attach_no_formatting = function(client, bufnr)
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
require("lsp_lines").setup()
|
|
||||||
vim.diagnostic.config({
|
|
||||||
virtual_text = false,
|
|
||||||
virtual_lines = true,
|
|
||||||
})
|
|
||||||
@@ -50,5 +50,8 @@ end
|
|||||||
|
|
||||||
require("lualine").setup({
|
require("lualine").setup({
|
||||||
options = { theme = "catppuccin" },
|
options = { theme = "catppuccin" },
|
||||||
sections = { lualine_c = { { pr_status } } },
|
sections = {
|
||||||
|
lualine_c = { { pr_status } },
|
||||||
|
lualine_z = { require("opencode").statusline }
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
require("neo-tree").setup({ window = { mappings = { ["<space>"] = "none" } } })
|
|
||||||
vim.keymap.set("n", "<leader>t", ":Neotree toggle<CR>", { silent = true })
|
|
||||||
@@ -1,26 +1,14 @@
|
|||||||
-- Noice Doc Scrolling
|
|
||||||
vim.keymap.set("n", "<c-f>", function()
|
|
||||||
if not require("noice.lsp").scroll(4) then return "<c-f>" end
|
|
||||||
end, {silent = true, expr = true})
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<c-b>", function()
|
|
||||||
if not require("noice.lsp").scroll(-4) then return "<c-b>" end
|
|
||||||
end, {silent = true, expr = true})
|
|
||||||
|
|
||||||
-- Noice Setup
|
-- Noice Setup
|
||||||
require("noice").setup({
|
require("noice").setup({
|
||||||
lsp = {
|
-- Ignore (Snacks Priority)
|
||||||
override = {
|
routes = {
|
||||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
{
|
||||||
["vim.lsp.util.stylize_markdown"] = true,
|
filter = { event = "ui", kind = "input", },
|
||||||
["cmp.entry.get_documentation"] = false
|
opts = { skip = true },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filter = { event = "ui", kind = "select", },
|
||||||
|
opts = { skip = true },
|
||||||
},
|
},
|
||||||
signature = {enabled = false}
|
|
||||||
},
|
},
|
||||||
presets = {
|
|
||||||
command_palette = true, -- position the cmdline and popupmenu together
|
|
||||||
long_message_to_split = true, -- long messages will be sent to a split
|
|
||||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
|
||||||
lsp_doc_border = false -- add a border to hover docs and signature help
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
require("octo").setup()
|
require("octo").setup()
|
||||||
|
|
||||||
|
-- Create KeyMaps
|
||||||
vim.keymap.set("n", "<leader>rs", "<cmd>Octo review start<cr>")
|
vim.keymap.set("n", "<leader>rs", "<cmd>Octo review start<cr>")
|
||||||
vim.keymap.set("n", "<leader>rd", "<cmd>Octo review discard<cr>")
|
vim.keymap.set("n", "<leader>rd", "<cmd>Octo review discard<cr>")
|
||||||
vim.keymap.set("n", "<leader>rr", "<cmd>Octo review resume<cr>")
|
vim.keymap.set("n", "<leader>rr", "<cmd>Octo review resume<cr>")
|
||||||
@@ -8,23 +9,5 @@ vim.keymap.set("n", "<leader>rca", "<cmd>Octo review comments<cr>")
|
|||||||
vim.keymap.set("n", "<leader>rcs", "<cmd>Octo comment suggest<cr>")
|
vim.keymap.set("n", "<leader>rcs", "<cmd>Octo comment suggest<cr>")
|
||||||
vim.keymap.set("n", "<leader>rcc", "<cmd>Octo comment add<cr>")
|
vim.keymap.set("n", "<leader>rcc", "<cmd>Octo comment add<cr>")
|
||||||
vim.keymap.set("n", "<leader>rcr", "<cmd>Octo comment reply<cr>")
|
vim.keymap.set("n", "<leader>rcr", "<cmd>Octo comment reply<cr>")
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>pd", "<cmd>Octo pr diff<cr>")
|
vim.keymap.set("n", "<leader>pd", "<cmd>Octo pr diff<cr>")
|
||||||
vim.keymap.set("n", "<leader>pc", "<cmd>Octo pr changes<cr>")
|
vim.keymap.set("n", "<leader>pc", "<cmd>Octo pr changes<cr>")
|
||||||
|
|
||||||
-- vim.api.nvim_create_autocmd("FileType", {
|
|
||||||
-- pattern = "octo",
|
|
||||||
-- callback = function()
|
|
||||||
-- vim.keymap.set("n", "<leader>rs", "<cmd>Octo review start<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rd", "<cmd>Octo review discard<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rr", "<cmd>Octo review resume<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>re", "<cmd>Octo review submit<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rca", "<cmd>Octo review comments<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rcs", "<cmd>Octo comment suggest<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rcc", "<cmd>Octo comment add<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>rcr", "<cmd>Octo comment reply<cr>", { buffer = true })
|
|
||||||
--
|
|
||||||
-- vim.keymap.set("n", "<leader>pd", "<cmd>Octo pr diff<cr>", { buffer = true })
|
|
||||||
-- vim.keymap.set("n", "<leader>pc", "<cmd>Octo pr changes<cr>", { buffer = true })
|
|
||||||
-- end,
|
|
||||||
-- })
|
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
local progress = require("fidget.progress")
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M:init()
|
|
||||||
local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "User" }, {
|
|
||||||
pattern = "CodeCompanionRequestStarted",
|
|
||||||
group = group,
|
|
||||||
callback = function(request)
|
|
||||||
local handle = M:create_progress_handle(request)
|
|
||||||
M:store_progress_handle(request.data.id, handle)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "User" }, {
|
|
||||||
pattern = "CodeCompanionRequestFinished",
|
|
||||||
group = group,
|
|
||||||
callback = function(request)
|
|
||||||
local handle = M:pop_progress_handle(request.data.id)
|
|
||||||
if handle then
|
|
||||||
M:report_exit_status(handle, request)
|
|
||||||
handle:finish()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
M.handles = {}
|
|
||||||
|
|
||||||
function M:store_progress_handle(id, handle)
|
|
||||||
M.handles[id] = handle
|
|
||||||
end
|
|
||||||
|
|
||||||
function M:pop_progress_handle(id)
|
|
||||||
local handle = M.handles[id]
|
|
||||||
M.handles[id] = nil
|
|
||||||
return handle
|
|
||||||
end
|
|
||||||
|
|
||||||
function M:create_progress_handle(request)
|
|
||||||
return progress.handle.create({
|
|
||||||
title = " Requesting assistance (" .. request.data.strategy .. ")",
|
|
||||||
message = "In progress...",
|
|
||||||
lsp_client = {
|
|
||||||
name = M:llm_role_title(request.data.adapter),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
function M:llm_role_title(adapter)
|
|
||||||
local parts = {}
|
|
||||||
table.insert(parts, adapter.formatted_name)
|
|
||||||
if adapter.model and adapter.model ~= "" then
|
|
||||||
table.insert(parts, "(" .. adapter.model .. ")")
|
|
||||||
end
|
|
||||||
return table.concat(parts, " ")
|
|
||||||
end
|
|
||||||
|
|
||||||
function M:report_exit_status(handle, request)
|
|
||||||
if request.data.status == "success" then
|
|
||||||
handle.message = "Completed"
|
|
||||||
elseif request.data.status == "error" then
|
|
||||||
handle.message = " Error"
|
|
||||||
else
|
|
||||||
handle.message = " Cancelled"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
local silicon = require('silicon')
|
|
||||||
silicon.setup({})
|
|
||||||
|
|
||||||
vim.keymap.set('v', '<Leader>ss', function() silicon.visualise_api({}) end)
|
|
||||||
vim.keymap.set('v', '<Leader>sb',
|
|
||||||
function() silicon.visualise_api({show_buf = true}) end)
|
|
||||||
vim.keymap.set('n', '<Leader>sv',
|
|
||||||
function() silicon.visualise_api({visible = true}) end)
|
|
||||||
vim.keymap.set('n', '<Leader>sb',
|
|
||||||
function() silicon.visualise_api({show_buf = true}) end)
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
-- Snacks Setup
|
||||||
|
local snacks = require("snacks")
|
||||||
|
snacks.setup({
|
||||||
|
input = { enabled = true, style = "popup" },
|
||||||
|
select = { enabled = true, style = "popup" },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Create KeyMaps
|
||||||
|
vim.keymap.set("n", "<leader>fb", snacks.picker.buffers, { desc = "Buffers" })
|
||||||
|
vim.keymap.set("n", "<leader>fd", snacks.picker.diagnostics, { desc = "Diagnostics" })
|
||||||
|
vim.keymap.set("n", "<leader>ff", snacks.picker.files, { desc = "Find Files" })
|
||||||
|
vim.keymap.set("n", "<leader>fg", snacks.picker.grep, { desc = "Grep Files" })
|
||||||
|
vim.keymap.set("n", "<leader>fh", snacks.picker.help, { desc = "Help Tags" })
|
||||||
|
vim.keymap.set("n", "<leader>fj", snacks.picker.jumps, { desc = "Jump List" })
|
||||||
|
vim.keymap.set("n", "<leader>fl", function() snacks.terminal("lazygit") end, { desc = "LazyGit" })
|
||||||
|
vim.keymap.set("n", "<leader>fp", snacks.picker.gh_pr, { desc = "GitHub Pull Requests" })
|
||||||
|
vim.keymap.set("n", "<leader>fs", snacks.picker.lsp_symbols, { desc = "Symbols" })
|
||||||
|
vim.keymap.set("n", "<leader>fu", snacks.picker.undo, { desc = "Undo History" })
|
||||||
|
vim.keymap.set("n", "gI", snacks.picker.lsp_implementations, { desc = "LSP Implementations" })
|
||||||
|
vim.keymap.set("n", "gi", snacks.picker.lsp_incoming_calls, { desc = "LSP Incoming Calls" })
|
||||||
|
vim.keymap.set("n", "go", snacks.picker.lsp_outgoing_calls, { desc = "LSP Outgoing Calls" })
|
||||||
|
vim.keymap.set("n", "gr", snacks.picker.lsp_references, { desc = "LSP References" })
|
||||||
|
vim.keymap.set("n", [[<c-\>]], function() snacks.terminal() end, { desc = "Toggle Terminal" })
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
require("telescope").setup({
|
|
||||||
extensions = {
|
|
||||||
fzf = {
|
|
||||||
fuzzy = true,
|
|
||||||
override_generic_sorter = true,
|
|
||||||
override_file_sorter = true,
|
|
||||||
case_mode = "smart_case",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
require("telescope").load_extension("fzf")
|
|
||||||
require("telescope").load_extension("ui-select")
|
|
||||||
require("telescope").load_extension("undo")
|
|
||||||
|
|
||||||
local builtin = require("telescope.builtin")
|
|
||||||
vim.keymap.set("n", "<leader>ff", builtin.find_files)
|
|
||||||
vim.keymap.set("n", "<leader>fg", builtin.live_grep)
|
|
||||||
vim.keymap.set("n", "<leader>fb", builtin.buffers)
|
|
||||||
vim.keymap.set("n", "<leader>fh", builtin.help_tags)
|
|
||||||
vim.keymap.set("n", "<leader>fj", builtin.jumplist)
|
|
||||||
vim.keymap.set("n", "<leader>fu", "<cmd>Telescope undo<cr>")
|
|
||||||
vim.keymap.set("n", "<leader>fp", "<cmd>Octo pr list<cr>")
|
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
require("toggleterm").setup({open_mapping = [[<c-\>]]})
|
-- require("toggleterm").setup({open_mapping = [[<c-\>]]})
|
||||||
|
--
|
||||||
-- Get PR status on terminal load
|
-- -- Get PR status on terminal load
|
||||||
-- require("toggleterm").setup({
|
-- -- require("toggleterm").setup({
|
||||||
-- open_mapping = [[<c-\>]],
|
-- -- open_mapping = [[<c-\>]],
|
||||||
-- on_create = function(term)
|
-- -- on_create = function(term)
|
||||||
-- vim.cmd("startinsert")
|
-- -- vim.cmd("startinsert")
|
||||||
-- term:send("gh pr checks")
|
-- -- term:send("gh pr checks")
|
||||||
|
-- -- end
|
||||||
|
-- -- })
|
||||||
|
--
|
||||||
|
-- -- Duplicate C-w & Esc Behavior
|
||||||
|
-- function _G.set_terminal_keymaps()
|
||||||
|
-- local opts = {buffer = 0}
|
||||||
|
-- vim.opt.signcolumn = "no"
|
||||||
|
-- vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||||
|
-- vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||||
-- end
|
-- end
|
||||||
-- })
|
--
|
||||||
|
-- vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
||||||
-- Duplicate C-w & Esc Behavior
|
|
||||||
function _G.set_terminal_keymaps()
|
|
||||||
local opts = {buffer = 0}
|
|
||||||
vim.opt.signcolumn = "no"
|
|
||||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
|
||||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
|
||||||
|
|||||||
@@ -1,52 +1,9 @@
|
|||||||
local wk = require("which-key")
|
local wk = require("which-key")
|
||||||
|
|
||||||
wk.setup({})
|
|
||||||
|
|
||||||
wk.add({
|
wk.add({
|
||||||
{ "<C-k>", desc = "Signature Help" },
|
{ "<leader>a", group = "LLM" }, -- llm-config.lua
|
||||||
{ "K", desc = "Definition Hover" },
|
{ "<leader>f", group = "Find" }, -- snacks-config.lua
|
||||||
{ "<leader>a", desc = "Aerial" },
|
{ "<leader>l", group = "LSP" }, -- lsp-config.lua
|
||||||
{ "<leader>c", desc = "CodeCompanion" },
|
{ "<leader>g", group = "Git" }, -- git-config.lua
|
||||||
{ "<leader>cn", "<cmd>CodeCompanionChat<cr>", desc = "New Chat", mode = { "v", "n" } },
|
{ "<leader>q", group = "Diagnostics" }, -- diagnostics-config.lua
|
||||||
{ "<leader>ct", "<cmd>CodeCompanionChat Toggle<cr>", desc = "Toggle Chat" },
|
{ "<leader>d", group = "Debug" }, -- dap-config.lua
|
||||||
{ "<leader>ci", "<cmd>CodeCompanion<cr>", desc = "Inline Prompt", mode = "v" },
|
|
||||||
{ "<leader>db", desc = "Toggle Breakpoint" },
|
|
||||||
{ "<leader>dc", desc = "Continue" },
|
|
||||||
{ "<leader>d", group = "Debug" },
|
|
||||||
{ "<leader>dt", desc = "Run Test" },
|
|
||||||
{ "<leader>du", desc = "Toggle UI" },
|
|
||||||
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Find Buffer" },
|
|
||||||
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find File" },
|
|
||||||
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
|
|
||||||
{ "<leader>f", group = "Find - Telescope" },
|
|
||||||
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Help Tags" },
|
|
||||||
{ "<leader>fj", "<cmd>Telescope jumplist<cr>", desc = "Jump List" },
|
|
||||||
{ "<leader>fp", "<cmd>Octo pr list<cr>", desc = "PR List" },
|
|
||||||
{ "<leader>gB", desc = "Git Blame Full" },
|
|
||||||
{ "<leader>gb", desc = "Git Blame Line" },
|
|
||||||
{ "<leader>gc", "<cmd>DiffviewClose<cr>", desc = "Close Diff" },
|
|
||||||
{ "<leader>g", group = "DiffView" },
|
|
||||||
{ "<leader>gh", "<cmd>DiffviewFileHistory<cr>", desc = "Diff History" },
|
|
||||||
{ "<leader>gH", "<cmd>DiffviewFileHistory --range=origin..HEAD<cr>", desc = "Diff History - Main" },
|
|
||||||
{ "<leader>go", "<cmd>DiffviewOpen<cr>", desc = "Open Diff - Current" },
|
|
||||||
{ "<leader>gO", "<cmd>DiffviewOpen origin/main...HEAD<cr>", desc = "Open Diff - Main" },
|
|
||||||
{ "<leader>lD", desc = "Declaration" },
|
|
||||||
{ "<leader>ld", desc = "Definition" },
|
|
||||||
{ "<leader>lf", desc = "Format" },
|
|
||||||
{ "<leader>l", group = "LSP" },
|
|
||||||
{ "<leader>li", desc = "Implementation" },
|
|
||||||
{ "<leader>ln", desc = "Rename" },
|
|
||||||
{ "<leader>lr", desc = "References" },
|
|
||||||
{ "<leader>lt", desc = "Type Definition" },
|
|
||||||
{ "<leader>qe", desc = "Open Diagnostic Float" },
|
|
||||||
{ "<leader>q", group = "Diagnostics" },
|
|
||||||
{ "<leader>qn", desc = "Next Diagnostic" },
|
|
||||||
{ "<leader>qN", desc = "Previous Diagnostic" },
|
|
||||||
{ "<leader>qq", desc = "Toggle Diagnostic List" },
|
|
||||||
{ "<leader>qt", desc = "Toggle Inline Diagnostics" },
|
|
||||||
{ "<leader>sb", desc = "Buffer Screenshot", mode = { "n", "v" } },
|
|
||||||
{ "<leader>s", group = "Screenshot", mode = { "n", "v" } },
|
|
||||||
{ "<leader>ss", desc = "Selected Screenshot", mode = "v" },
|
|
||||||
{ "<leader>sv", desc = "Visual Screenshot" },
|
|
||||||
{ "<leader>t", desc = "NeoTree" },
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
{ pkgs
|
{
|
||||||
, lib
|
pkgs,
|
||||||
, config
|
lib,
|
||||||
, namespace
|
config,
|
||||||
, ...
|
namespace,
|
||||||
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
@@ -39,26 +40,20 @@ in
|
|||||||
# -------------------
|
# -------------------
|
||||||
# ----- Helpers -----
|
# ----- Helpers -----
|
||||||
# -------------------
|
# -------------------
|
||||||
aerial-nvim # Code Outline
|
|
||||||
codecompanion-nvim # CodeCompanion
|
|
||||||
comment-nvim # Code Comments
|
comment-nvim # Code Comments
|
||||||
copilot-vim # GitHub Copilot
|
copilot-vim # GitHub Copilot
|
||||||
diffview-nvim # Diff View
|
diffview-nvim # Diff View
|
||||||
fidget-nvim # Notification Helper
|
|
||||||
gitsigns-nvim # Git Blame
|
gitsigns-nvim # Git Blame
|
||||||
leap-nvim # Quick Movement
|
leap-nvim # Quick Movement
|
||||||
markdown-preview-nvim # Markdown Preview
|
markdown-preview-nvim # Markdown Preview
|
||||||
neo-tree-nvim # File Explorer
|
|
||||||
none-ls-nvim # Formatters
|
none-ls-nvim # Formatters
|
||||||
numb-nvim # Peek / Jump to Lines
|
numb-nvim # Peek / Jump to Lines
|
||||||
nvim-autopairs # Automatically Close Pairs (),[],{}
|
nvim-autopairs # Automatically Close Pairs (),[],{}
|
||||||
octo-nvim # Git Octo
|
octo-nvim # Git Octo
|
||||||
render-markdown-nvim # Markdown Renderer
|
render-markdown-nvim # Markdown Renderer
|
||||||
telescope-fzf-native-nvim # Faster Telescope
|
snacks-nvim # OpenCode
|
||||||
|
snacks-nvim # Snacks
|
||||||
telescope-nvim # Fuzzy Finder
|
telescope-nvim # Fuzzy Finder
|
||||||
telescope-ui-select-nvim # UI
|
|
||||||
telescope-undo-nvim # Undo Tree
|
|
||||||
toggleterm-nvim # Terminal Helper
|
|
||||||
vim-nix # Nix Helpers
|
vim-nix # Nix Helpers
|
||||||
which-key-nvim # Shortcut Helper
|
which-key-nvim # Shortcut Helper
|
||||||
|
|
||||||
@@ -84,6 +79,22 @@ in
|
|||||||
nvim-dap-go
|
nvim-dap-go
|
||||||
nvim-dap-ui
|
nvim-dap-ui
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# ----- OPENCODE -----
|
||||||
|
# --------------------
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
pname = "opencode.nvim";
|
||||||
|
version = "2025-12-17";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "NickvanDyke";
|
||||||
|
repo = "opencode.nvim";
|
||||||
|
rev = "39a246b597d6050ca319142b5af5a8b81c74e7d9";
|
||||||
|
hash = "sha256-h/Zttho/grrpmcklld15NNGf+3epqLg8RmmRW8eApSo=";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/NickvanDyke/opencode.nvim/";
|
||||||
|
meta.hydraPlatforms = [ ];
|
||||||
|
})
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
# -- NONE-LS EXTRAS --
|
# -- NONE-LS EXTRAS --
|
||||||
# --------------------
|
# --------------------
|
||||||
@@ -100,22 +111,6 @@ in
|
|||||||
meta.homepage = "https://github.com/nvimtools/none-ls-extras.nvim/";
|
meta.homepage = "https://github.com/nvimtools/none-ls-extras.nvim/";
|
||||||
})
|
})
|
||||||
|
|
||||||
# -------------------
|
|
||||||
# ----- Silicon -----
|
|
||||||
# -------------------
|
|
||||||
(pkgs.vimUtils.buildVimPlugin {
|
|
||||||
pname = "silicon.lua";
|
|
||||||
version = "2025-10-28";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "0oAstro";
|
|
||||||
repo = "silicon.lua";
|
|
||||||
rev = "54682647a7c1c773dc4c9ab2bc309114a3b9e96f";
|
|
||||||
sha256 = "sha256-lM7ALmYHGN5SKftfD7YBPh1gGKORbS6EMXS/ZQXDMSI=";
|
|
||||||
};
|
|
||||||
doCheck = false;
|
|
||||||
meta.homepage = "https://github.com/0oAstro/silicon.lua";
|
|
||||||
})
|
|
||||||
|
|
||||||
# -------------------
|
# -------------------
|
||||||
# ---- LLAMA.VIM ----
|
# ---- LLAMA.VIM ----
|
||||||
# -------------------
|
# -------------------
|
||||||
@@ -133,15 +128,7 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
# Toggle Term
|
# LSP
|
||||||
bashInteractive
|
|
||||||
|
|
||||||
# Telescope Dependencies
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
tree-sitter
|
|
||||||
|
|
||||||
# LSP Dependencies
|
|
||||||
eslint_d
|
eslint_d
|
||||||
go
|
go
|
||||||
golangci-lint
|
golangci-lint
|
||||||
@@ -164,8 +151,9 @@ in
|
|||||||
sqlfluff
|
sqlfluff
|
||||||
stylua
|
stylua
|
||||||
|
|
||||||
# Silicon
|
# Tools
|
||||||
silicon
|
ripgrep
|
||||||
|
lazygit
|
||||||
];
|
];
|
||||||
|
|
||||||
extraConfig = ":luafile ~/.config/nvim/lua/init.lua";
|
extraConfig = ":luafile ~/.config/nvim/lua/init.lua";
|
||||||
@@ -181,6 +169,7 @@ in
|
|||||||
# Generate Nix Vars
|
# Generate Nix Vars
|
||||||
"nvim/lua/nix-vars.lua".text = ''
|
"nvim/lua/nix-vars.lua".text = ''
|
||||||
local nix_vars = {
|
local nix_vars = {
|
||||||
|
bash = "${pkgs.bashInteractive}/bin/bash",
|
||||||
clangd = "${pkgs.clang-tools}/bin/clangd",
|
clangd = "${pkgs.clang-tools}/bin/clangd",
|
||||||
golintls = "${pkgs.golangci-lint-langserver}/bin/golangci-lint-langserver",
|
golintls = "${pkgs.golangci-lint-langserver}/bin/golangci-lint-langserver",
|
||||||
gopls = "${pkgs.gopls}/bin/gopls",
|
gopls = "${pkgs.gopls}/bin/gopls",
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ in
|
|||||||
gopls = {
|
gopls = {
|
||||||
type = "local";
|
type = "local";
|
||||||
command = [
|
command = [
|
||||||
"gopls"
|
"${pkgs.gopls}/bin/gopls"
|
||||||
"mcp"
|
"mcp"
|
||||||
];
|
];
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user