add initial ClaudeWhat master
authorRobin Krens <robin@robinkrens.nl>
Thu, 2 Jan 2025 19:01:57 +0000 (20:01 +0100)
committerRobin Krens <robin@robinkrens.nl>
Thu, 2 Jan 2025 19:16:40 +0000 (20:16 +0100)
claudy.vim

index 042d6d8..931435a 100644 (file)
@@ -150,13 +150,50 @@ function! s:SendMessage()
     " Add response
     put = l:response
     " call append('$', 'Claude: ' . l:response)
     " Add response
     put = l:response
     " call append('$', 'Claude: ' . l:response)
-    put = repeat('-', 80) . '\n'
+    put = repeat('-', 80)
+    put = ''
     
     " Move cursor to new line
     normal! G
     startinsert!
 endfunction
 
     
     " Move cursor to new line
     normal! G
     startinsert!
 endfunction
 
+function! ClaudyWhat() range
+    let l:start_line = line("'<")
+    let l:end_line = line("'>")
+    let l:selected_text = join(getline(l:start_line, l:end_line))
+
+    let l:json_data = {
+        \ 'model': 'claude-3-5-sonnet-20241022',
+        \ 'max_tokens': 1024,
+        \ 'messages': [
+        \   {
+        \     'role': 'user',
+        \     'content': "What is this code doing? explain with a one-liner: " . l:selected_text
+        \   }
+        \ ]
+    \ }
+
+    let l:response = ClaudyRequest(l:json_data)
+    
+    " Create popup window
+    let l:popup_opts = {
+        \ 'line': 'cursor+1',
+        \ 'col': 'cursor',
+        \ 'pos': 'topleft',
+        \ 'padding': [0,1,0,1],
+        \ 'border': [],
+        \ 'close': 'click',
+        \ 'moved': 'any',
+        \ 'maxwidth': 50,
+        \ 'minwidth': 50,
+        \ 'wrap': 1
+    \ }
+    
+    call popup_create(l:response, l:popup_opts)
+endfunction
+
 vnoremap <leader>c :<c-u>call ClaudyRefactor()
 vnoremap <leader>i :<c-u>call ClaudyImplement()
 vnoremap <leader>c :<c-u>call ClaudyRefactor()
 vnoremap <leader>i :<c-u>call ClaudyImplement()
+vnoremap <leader>w :<c-u>call ClaudyWhat()<CR>
 vnoremap <leader>b :<c-u>call ClaudyTest()
 vnoremap <leader>b :<c-u>call ClaudyTest()