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'
|
Plug 'folke/which-key.nvim'
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Claude Code
|
||||||
|
#+begin_src vimrc
|
||||||
|
Plug 'folke/snacks.nvim'
|
||||||
|
Plug 'coder/claudecode.nvim'
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Plug End
|
** Plug End
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
call plug#end()
|
call plug#end()
|
||||||
@@ -526,6 +532,13 @@ snoremap <C-K> <Esc>b[sviw<C-G>
|
|||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
autocmd FileType mail set spell spelllang=en_us,fr
|
autocmd FileType mail set spell spelllang=en_us,fr
|
||||||
autocmd FileType mail set textwidth=0
|
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)
|
function! Mailcomplete(findstart, base)
|
||||||
if a:findstart == 1
|
if a:findstart == 1
|
||||||
@@ -788,6 +801,55 @@ lua << EOF
|
|||||||
EOF
|
EOF
|
||||||
#+end_src
|
#+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
|
* Key Bindings
|
||||||
** Quit
|
** Quit
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
|
|||||||
Reference in New Issue
Block a user