refactor(core): simplify session management and add Avante plugin

This commit is contained in:
Prad Nukala committed 2025-11-18 10:13:30 -05:00
1 parent e4c3e21d9b
commit a1907c44c8
2 files changed
+143 -71

No files matched your search

+22 -71
View File
@@ -14,62 +14,6 @@ local file_filter = ignore_patterns.create_picker_filter()
return {
"AstroNvim/astrocore",
dependencies = {
{
"coder/claudecode.nvim",
dependencies = { "folke/snacks.nvim" },
config = true,
opts = {
auto_start = true,
focus_after_send = true,
track_selection = true,
terminal = {
split_side = "right", -- "left" or "right"
split_width_percentage = 0.30,
provider = "external", -- "auto", "snacks", "native", "external", "none", or custom provider table
auto_close = true,
snacks_win_opts = {}, -- Opts to pass to `Snacks.terminal.open()` - see Floating Window section below
-- Provider-specific options
provider_opts = {
-- Command for external terminal provider. Can be:
external_terminal_cmd = "ghostty --working-directory %s -e %s",
},
},
},
},
{
"pittcat/claude-fzf.nvim",
dependencies = {
"ibhagwan/fzf-lua",
"coder/claudecode.nvim",
},
init = function()
-- Remove problematic Chinese help file to avoid encoding error
local zh_doc = vim.fn.stdpath "data" .. "/lazy/claude-fzf.nvim/doc/claude-fzf-zh.txt"
if vim.fn.filereadable(zh_doc) == 1 then vim.fn.delete(zh_doc) end
end,
opts = {
auto_context = true,
batch_size = 10,
},
cmd = {
"ClaudeFzf",
"ClaudeFzfFiles",
"ClaudeFzfGrep",
"ClaudeFzfBuffers",
"ClaudeFzfGitFiles",
"ClaudeFzfDirectory",
},
keys = {
{ "<C-a><C-f>", "<cmd>ClaudeFzfFiles<cr>", desc = "Claude: Add files" },
{ "<C-a><C-f>g", "<cmd>ClaudeFzfGrep<cr>", desc = "Claude: Search and add" },
{ "<C-a><C-f>b", "<cmd>ClaudeFzfBuffers<cr>", desc = "Claude: Add buffers" },
{ "<C-a><C-f>G", "<cmd>ClaudeFzfGitFiles<cr>", desc = "Claude: Add Git files" },
{ "<C-a><C-f>d", "<cmd>ClaudeFzfDirectory<cr>", desc = "Claude: Add directory files" },
},
},
},
---@type AstroCoreOpts
opts = {
@@ -260,6 +204,11 @@ return {
["K"] = { function() vim.diagnostic.goto_prev() end, desc = "Previous diagnostic" },
["L"] = { "<Cmd>BufferLineCycleNext<CR>", desc = "Next buffer" },
["H"] = { "<Cmd>BufferLineCyclePrev<CR>", desc = "Previous buffer" },
-- Window navigation
["<C-h>"] = { "<C-w>h", desc = "Navigate to left window" },
["<C-j>"] = { "<C-w>j", desc = "Navigate to bottom window" },
["<C-k>"] = { "<C-w>k", desc = "Navigate to top window" },
["<C-l>"] = { "<C-w>l", desc = "Navigate to right window" },
["<C-e>"] = { "<Cmd>Neotree toggle<CR>", desc = "Open Explorer" },
["<C-m>"] = { "<Cmd>OverseerRun<CR>", desc = "Run Overseer" },
["<leader><leader>"] = {
@@ -564,16 +513,16 @@ return {
desc = "Find Service files",
},
["<C-j><C-j>"] = { function() terminals.scratch_toggle() end, desc = "Open Scratch Terminal" },
-- AI/Assistant mappings (Claude Code)
["<C-a>"] = { nil, desc = "AI/Claude Code" },
["<C-a><C-a>"] = { "<cmd>ClaudeCode<cr>", desc = "Toggle Claude" },
["<C-a>f"] = { "<cmd>ClaudeCodeFocus<cr>", desc = "Focus Claude" },
["<C-a>C"] = { "<cmd>ClaudeCode --resume<cr>", desc = "Resume Claude" },
["<C-a>c"] = { "<cmd>ClaudeCode --continue<cr>", desc = "Continue Claude" },
["<C-a>m"] = { "<cmd>ClaudeCodeSelectModel<cr>", desc = "Select Claude model" },
["<C-a>a"] = { "<cmd>ClaudeCodeAdd %<cr>", desc = "Add current buffer" },
["<C-y>"] = { "<cmd>ClaudeCodeDiffAccept<cr>", desc = "Accept diff" },
["<C-n>"] = { "<cmd>ClaudeCodeDiffDeny<cr>", desc = "Deny diff" },
-- AI/Assistant mappings (Avante)
["<C-a>"] = { nil, desc = "Avante AI" },
["<C-a><C-a>"] = { "<cmd>AvanteToggle<cr>", desc = "Toggle Avante" },
["<C-a>a"] = { "<cmd>AvanteAsk<cr>", desc = "Ask Avante" },
["<C-a>e"] = { "<cmd>AvanteEdit<cr>", desc = "Edit with Avante" },
["<C-a>r"] = { "<cmd>AvanteRefresh<cr>", desc = "Refresh Avante" },
["<C-a>f"] = { "<cmd>AvanteFocus<cr>", desc = "Focus Avante" },
["<C-a>c"] = { "<cmd>AvanteChat<cr>", desc = "Avante Chat" },
["<C-a>s"] = { "<cmd>AvanteSwitchProvider<cr>", desc = "Switch Provider" },
["<C-a>C"] = { "<cmd>AvanteClear<cr>", desc = "Clear Avante" },
-- UI Toggles with Snacks
["<leader>u"] = { desc = "UI Toggles" },
["<leader>ud"] = {
@@ -662,10 +611,12 @@ return {
},
v = {
["<C-e>"] = { "<Cmd>Neotree toggle<CR>", desc = "Open Explorer" },
["<C-c>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" }, -- Modified to save and close buffer
["<C-x>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" }, -- Added C-x for visual mode
-- Claude Code visual mode
["<C-a>"] = { "<cmd>ClaudeCodeSend<cr>", desc = "Send to Claude" },
["<C-c>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-x>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
-- Avante visual mode mappings
["<C-a>"] = { "<cmd>AvanteAsk<cr>", desc = "Ask Avante with selection" },
["<C-a>e"] = { "<cmd>AvanteEdit<cr>", desc = "Edit selection with Avante" },
["<C-a>r"] = { "<cmd>AvanteReplace<cr>", desc = "Replace with Avante" },
["D"] = {
function()
-- Yank the visual selection to register v
@@ -716,7 +667,7 @@ return {
["<C-t><C-t>"] = { terminals.mk_toggle, desc = "Taskfile Toggle" },
["<C-e>"] = { "<Cmd>Neotree toggle<CR>", desc = "Open Explorer" },
-- Paste from system clipboard
["<C-p>"] = { "<cmd>ClaudeCodePaste<cr>", desc = "Paste from system clipboard" },
["<C-p>"] = { function() vim.cmd('normal! "+p') end, desc = "Paste from system clipboard" },
["<C-b>f"] = {
function() require("snacks").picker.buffers() end,
desc = "Find buffers",
+121
View File
@@ -0,0 +1,121 @@
--- Avante.nvim - AI pair programming assistant
--- @module plugins.avante
return {
"yetone/avante.nvim",
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
-- ⚠️ must add this setting! ! !
build = vim.fn.has("win32") ~= 0
and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
or "make",
event = "VeryLazy",
version = false, -- Never set this value to "*"! Never!
---@module 'avante'
---@type avante.Config
opts = {
-- add any opts here
-- this file can contain specific instructions for your project
instructions_file = "avante.md",
-- for example
provider = "claude",
providers = {
claude = {
endpoint = "https://api.anthropic.com",
model = "claude-sonnet-4-20250514",
timeout = 30000, -- Timeout in milliseconds
extra_request_body = {
temperature = 0.75,
max_tokens = 20480,
},
},
moonshot = {
endpoint = "https://api.moonshot.ai/v1",
model = "kimi-k2-0711-preview",
timeout = 30000, -- Timeout in milliseconds
extra_request_body = {
temperature = 0.75,
max_tokens = 32768,
},
},
},
-- Keybindings for navigation within Avante windows
mappings = {
--- @class AvanteConflictMappings
diff = {
ours = "co",
theirs = "ct",
all_theirs = "ca",
both = "cb",
cursor = "cc",
next = "]x",
prev = "[x",
},
suggestion = {
accept = "<M-l>",
next = "<M-]>",
prev = "<M-[>",
dismiss = "<C-]>",
},
jump = {
next = "]]",
prev = "[[",
},
submit = {
normal = "<CR>",
insert = "<C-s>",
},
sidebar = {
apply_all = "A",
apply_cursor = "a",
switch_windows = "<Tab>",
reverse_switch_windows = "<S-Tab>",
},
},
windows = {
position = "right", -- the position of the sidebar
wrap = true, -- similar to vim.o.wrap
width = 30, -- default % based on available width
sidebar_header = {
align = "center", -- left, center, right for title
rounded = true,
},
},
},
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
--- The below dependencies are optional,
"nvim-mini/mini.pick", -- for file_selector provider mini.pick
"nvim-telescope/telescope.nvim", -- for file_selector provider telescope
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
"ibhagwan/fzf-lua", -- for file_selector provider fzf
"stevearc/dressing.nvim", -- for input provider dressing
"folke/snacks.nvim", -- for input provider snacks
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
"zbirenbaum/copilot.lua", -- for providers='copilot'
{
-- support for image pasting
"HakonHarnes/img-clip.nvim",
event = "VeryLazy",
opts = {
-- recommended settings
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
},
-- required for Windows users
use_absolute_path = true,
},
},
},
{
-- Make sure to set this up properly if you have lazy=true
"MeanderingProgrammer/render-markdown.nvim",
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
}