Add claudecode.nvim for email refinement in neomutt
This commit is contained in:
62
vim.org
62
vim.org
@@ -131,6 +131,12 @@ Plug 'nvim-telescope/telescope-ui-select.nvim'
|
||||
Plug 'folke/which-key.nvim'
|
||||
#+end_src
|
||||
|
||||
** Claude Code
|
||||
#+begin_src vimrc
|
||||
Plug 'folke/snacks.nvim'
|
||||
Plug 'coder/claudecode.nvim'
|
||||
#+end_src
|
||||
|
||||
** Plug End
|
||||
#+begin_src vimrc
|
||||
call plug#end()
|
||||
@@ -526,6 +532,13 @@ snoremap <C-K> <Esc>b[sviw<C-G>
|
||||
#+begin_src vimrc
|
||||
autocmd FileType mail set spell spelllang=en_us,fr
|
||||
autocmd FileType mail set textwidth=0
|
||||
autocmd FileType mail lcd %:p:h
|
||||
|
||||
" Start Claude: save, open Claude, add current buffer, then ask to refine
|
||||
autocmd FileType mail nnoremap <buffer> <leader>ae <cmd>lua ClaudeMailRefine()<cr>
|
||||
|
||||
" Finish: accept diff, close Claude pane, save and quit
|
||||
autocmd FileType mail nnoremap <buffer> <leader>aq <cmd>ClaudeCodeDiffAccept<cr><cmd>ClaudeCode<cr>
|
||||
|
||||
function! Mailcomplete(findstart, base)
|
||||
if a:findstart == 1
|
||||
@@ -788,6 +801,55 @@ lua << EOF
|
||||
EOF
|
||||
#+end_src
|
||||
|
||||
** Diff wrap
|
||||
#+begin_src vimrc
|
||||
autocmd OptionSet diff if v:option_new | setlocal wrap linebreak | endif
|
||||
#+end_src
|
||||
|
||||
** =claudecode=
|
||||
#+begin_src vimrc
|
||||
lua << EOF
|
||||
require('claudecode').setup({
|
||||
split_side = "right",
|
||||
split_width_percentage = 0.35,
|
||||
})
|
||||
|
||||
function ClaudeMailRefine()
|
||||
local win = vim.api.nvim_get_current_win()
|
||||
vim.cmd('w')
|
||||
vim.cmd('ClaudeCode')
|
||||
vim.defer_fn(function()
|
||||
if vim.api.nvim_win_is_valid(win) then
|
||||
vim.api.nvim_set_current_win(win)
|
||||
end
|
||||
vim.cmd('ClaudeCodeAdd %')
|
||||
vim.defer_fn(function()
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
if name:match('claude') then
|
||||
local job_id = vim.b[buf].terminal_job_id
|
||||
if job_id then
|
||||
vim.api.nvim_chan_send(job_id, "Refine this email using a single file edit tool call: fix the subject, grammar, clarity and tone all at once. Do not make multiple edits.\r")
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end, 500)
|
||||
end, 1000)
|
||||
end
|
||||
EOF
|
||||
|
||||
nnoremap <leader>ac <cmd>ClaudeCode<cr>
|
||||
nnoremap <leader>af <cmd>ClaudeCodeFocus<cr>
|
||||
nnoremap <leader>ar <cmd>ClaudeCode --resume<cr>
|
||||
nnoremap <leader>aC <cmd>ClaudeCode --continue<cr>
|
||||
nnoremap <leader>am <cmd>ClaudeCodeSelectModel<cr>
|
||||
nnoremap <leader>ab <cmd>ClaudeCodeAdd %<cr>
|
||||
vnoremap <leader>as <cmd>ClaudeCodeSend<cr>
|
||||
nnoremap <leader>aa <cmd>ClaudeCodeDiffAccept<cr>
|
||||
nnoremap <leader>ad <cmd>ClaudeCodeDiffDeny<cr>
|
||||
#+end_src
|
||||
|
||||
* Key Bindings
|
||||
** Quit
|
||||
#+begin_src vimrc
|
||||
|
||||
Reference in New Issue
Block a user