Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions lua/plugins/99.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
return {
"ThePrimeagen/99",
config = function()
local _99 = require("99")

-- For logging that is to a file if you wish to trace through requests
-- for reporting bugs, i would not rely on this, but instead the provided
-- logging mechanisms within 99. This is for more debugging purposes
local cwd = vim.uv.cwd()
local basename = vim.fs.basename(cwd)
_99.setup {
provider = _99.Providers.ClaudeCodeProvider,
model = "claude-opus-4-7",
logger = {
level = _99.DEBUG,
path = "/tmp/" .. basename .. ".99.debug",
print_on_error = true,
},
-- When setting this to something that is not inside the CWD tools
-- such as claude code or opencode will have permission issues
-- and generation will fail refer to tool documentation to resolve
-- https://opencode.ai/docs/permissions/#external-directories
-- https://code.claude.com/docs/en/permissions#read-and-edit
tmp_dir = "./tmp",

--- Completions: #rules and @files in the prompt buffer
completion = {
-- I am going to disable these until i understand the
-- problem better. Inside of cursor rules there is also
-- application rules, which means i need to apply these
-- differently
-- cursor_rules = "<custom path to cursor rules>"

--- A list of folders where you have your own SKILL.md
--- Expected format:
--- /path/to/dir/<skill_name>/SKILL.md
---
--- Example:
--- Input Path:
--- "scratch/custom_rules/"
---
--- Output Rules:
--- {path = "scratch/custom_rules/vim/SKILL.md", name = "vim"},
--- ... the other rules in that dir ...
---
custom_rules = {
"scratch/custom_rules/",
},

--- Configure @file completion (all fields optional, sensible defaults)
files = {
-- enabled = true,
-- max_file_size = 102400, -- bytes, skip files larger than this
-- max_files = 5000, -- cap on total discovered files
-- exclude = { ".env", ".env.*", "node_modules", ".git", ... },
},
--- File Discovery:
--- - In git repos: Uses `git ls-files` which automatically respects .gitignore
--- - Non-git repos: Falls back to filesystem scanning with manual excludes
--- - Both methods apply the configured `exclude` list on top of gitignore

--- What autocomplete engine to use. Defaults to native (built-in) if not specified.
source = "native", -- "native" (default), "cmp", or "blink"
},

--- WARNING: if you change cwd then this is likely broken
--- ill likely fix this in a later change
---
--- md_files is a list of files to look for and auto add based on the location
--- of the originating request. That means if you are at /foo/bar/baz.lua
--- the system will automagically look for:
--- /foo/bar/AGENT.md
--- /foo/AGENT.md
--- assuming that /foo is project root (based on cwd)
md_files = {
"CLAUDE.md",
},
}

-- take extra note that i have visual selection only in v mode
-- technically whatever your last visual selection is, will be used
-- so i have this set to visual mode so i dont screw up and use an
-- old visual selection
--
-- likely ill add a mode check and assert on required visual mode
-- so just prepare for it now
vim.keymap.set("v", "<leader>9v", function()
_99.visual()
end)

--- if you have a request you dont want to make any changes, just cancel it
vim.keymap.set("n", "<leader>9x", function()
_99.stop_all_requests()
end)

vim.keymap.set("n", "<leader>9s", function()
_99.search()
end)
end,
}
24 changes: 24 additions & 0 deletions lua/plugins/claudecode.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
return {
"coder/claudecode.nvim",
dependencies = { "folke/snacks.nvim" },
config = true,
keys = {
{ "<leader>a", nil, desc = "AI/Claude Code" },
{ "<leader>ac", "<cmd>ClaudeCode<cr>", desc = "Toggle Claude" },
{ "<leader>af", "<cmd>ClaudeCodeFocus<cr>", desc = "Focus Claude" },
{ "<leader>ar", "<cmd>ClaudeCode --resume<cr>", desc = "Resume Claude" },
{ "<leader>aC", "<cmd>ClaudeCode --continue<cr>", desc = "Continue Claude" },
{ "<leader>am", "<cmd>ClaudeCodeSelectModel<cr>", desc = "Select Claude model" },
{ "<leader>ab", "<cmd>ClaudeCodeAdd %<cr>", desc = "Add current buffer" },
{ "<leader>as", "<cmd>ClaudeCodeSend<cr>", mode = "v", desc = "Send to Claude" },
{
"<leader>as",
"<cmd>ClaudeCodeTreeAdd<cr>",
desc = "Add file",
ft = { "NvimTree", "neo-tree", "oil", "minifiles", "netrw" },
},
-- Diff management
{ "<leader>aa", "<cmd>ClaudeCodeDiffAccept<cr>", desc = "Accept diff" },
{ "<leader>ad", "<cmd>ClaudeCodeDiffDeny<cr>", desc = "Deny diff" },
},
}
34 changes: 34 additions & 0 deletions lua/plugins/claudecode.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
struct Key {
lhs: &'static str,
rhs: Option<&'static str>,
desc: &'static str,
mode: Option<&'static str>,
ft: Option<&'static [&'static str]>,
}

struct Plugin {
name: &'static str,
dependencies: &'static [&'static str],
config: bool,
keys: &'static [Key],
}

const CLAUDE_CODE: Plugin = Plugin {
name: "coder/claudecode.nvim",
dependencies: &["folke/snacks.nvim"],
config: true,
keys: &[
Key { lhs: "<leader>a", rhs: None, desc: "AI/Claude Code", mode: None, ft: None },
Key { lhs: "<leader>ac", rhs: Some("<cmd>ClaudeCode<cr>"), desc: "Toggle Claude", mode: None, ft: None },
Key { lhs: "<leader>af", rhs: Some("<cmd>ClaudeCodeFocus<cr>"), desc: "Focus Claude", mode: None, ft: None },
Key { lhs: "<leader>ar", rhs: Some("<cmd>ClaudeCode --resume<cr>"), desc: "Resume Claude", mode: None, ft: None },
Key { lhs: "<leader>aC", rhs: Some("<cmd>ClaudeCode --continue<cr>"), desc: "Continue Claude", mode: None, ft: None },
Key { lhs: "<leader>am", rhs: Some("<cmd>ClaudeCodeSelectModel<cr>"), desc: "Select Claude model", mode: None, ft: None },
Key { lhs: "<leader>ab", rhs: Some("<cmd>ClaudeCodeAdd %<cr>"), desc: "Add current buffer", mode: None, ft: None },
Key { lhs: "<leader>as", rhs: Some("<cmd>ClaudeCodeSend<cr>"), desc: "Send to Claude", mode: Some("v"), ft: None },
Key { lhs: "<leader>as", rhs: Some("<cmd>ClaudeCodeTreeAdd<cr>"), desc: "Add file", mode: None, ft: Some(&["NvimTree", "neo-tree", "oil", "minifiles", "netrw"]) },
// Diff management
Key { lhs: "<leader>aa", rhs: Some("<cmd>ClaudeCodeDiffAccept<cr>"), desc: "Accept diff", mode: None, ft: None },
Key { lhs: "<leader>ad", rhs: Some("<cmd>ClaudeCodeDiffDeny<cr>"), desc: "Deny diff", mode: None, ft: None },
],
};
Loading