@@ -59,7 +59,7 @@ Using [lazy.nvim](https://github.com/folke/lazy.nvim):
59
59
" <leader>as" ,
60
60
" <cmd>ClaudeCodeTreeAdd<cr>" ,
61
61
desc = " Add file" ,
62
- ft = { " NvimTree" , " neo-tree" },
62
+ ft = { " NvimTree" , " neo-tree" , " oil " },
63
63
},
64
64
},
65
65
}
@@ -214,77 +214,225 @@ For deep technical details, see [ARCHITECTURE.md](./ARCHITECTURE.md).
214
214
215
215
See [ DEVELOPMENT.md] ( ./DEVELOPMENT.md ) for build instructions and development guidelines. Tests can be run with ` make test ` .
216
216
217
- ## Advanced Setup
217
+ ## Configuration
218
+
219
+ ### Quick Setup
220
+
221
+ For most users, the default configuration is sufficient:
222
+
223
+ ``` lua
224
+ {
225
+ " coder/claudecode.nvim" ,
226
+ dependencies = {
227
+ " folke/snacks.nvim" , -- optional
228
+ },
229
+ config = true ,
230
+ keys = {
231
+ { " <leader>a" , nil , desc = " AI/Claude Code" },
232
+ { " <leader>ac" , " <cmd>ClaudeCode<cr>" , desc = " Toggle Claude" },
233
+ { " <leader>af" , " <cmd>ClaudeCodeFocus<cr>" , desc = " Focus Claude" },
234
+ { " <leader>ar" , " <cmd>ClaudeCode --resume<cr>" , desc = " Resume Claude" },
235
+ { " <leader>aC" , " <cmd>ClaudeCode --continue<cr>" , desc = " Continue Claude" },
236
+ { " <leader>as" , " <cmd>ClaudeCodeSend<cr>" , mode = " v" , desc = " Send to Claude" },
237
+ {
238
+ " <leader>as" ,
239
+ " <cmd>ClaudeCodeTreeAdd<cr>" ,
240
+ desc = " Add file" ,
241
+ ft = { " NvimTree" , " neo-tree" , " oil" },
242
+ },
243
+ },
244
+ }
245
+ ```
246
+
247
+ ### Advanced Configuration
218
248
219
249
<details >
220
- <summary >Full configuration with all options</summary >
250
+ <summary >Complete configuration options</summary >
221
251
222
252
``` lua
223
253
{
224
254
" coder/claudecode.nvim" ,
225
255
dependencies = {
226
256
" folke/snacks.nvim" , -- Optional for enhanced terminal
227
257
},
258
+ keys = {
259
+ { " <leader>a" , nil , desc = " AI/Claude Code" },
260
+ { " <leader>ac" , " <cmd>ClaudeCode<cr>" , desc = " Toggle Claude" },
261
+ { " <leader>af" , " <cmd>ClaudeCodeFocus<cr>" , desc = " Focus Claude" },
262
+ { " <leader>ar" , " <cmd>ClaudeCode --resume<cr>" , desc = " Resume Claude" },
263
+ { " <leader>aC" , " <cmd>ClaudeCode --continue<cr>" , desc = " Continue Claude" },
264
+ { " <leader>as" , " <cmd>ClaudeCodeSend<cr>" , mode = " v" , desc = " Send to Claude" },
265
+ {
266
+ " <leader>as" ,
267
+ " <cmd>ClaudeCodeTreeAdd<cr>" ,
268
+ desc = " Add file" ,
269
+ ft = { " NvimTree" , " neo-tree" , " oil" },
270
+ },
271
+ },
228
272
opts = {
229
- -- Server options
230
- port_range = { min = 10000 , max = 65535 },
231
- auto_start = true ,
232
- log_level = " info" ,
233
-
234
- -- Terminal options
273
+ -- Server Configuration
274
+ port_range = { min = 10000 , max = 65535 }, -- WebSocket server port range
275
+ auto_start = true , -- Auto-start server on Neovim startup
276
+ log_level = " info" , -- "trace", "debug", "info", "warn", "error"
277
+ terminal_cmd = nil , -- Custom terminal command (default: "claude")
278
+
279
+ -- Selection Tracking
280
+ track_selection = true , -- Enable real-time selection tracking
281
+ visual_demotion_delay_ms = 50 , -- Delay before demoting visual selection (ms)
282
+
283
+ -- Connection Management
284
+ connection_wait_delay = 200 , -- Wait time after connection before sending queued @ mentions (ms)
285
+ connection_timeout = 10000 , -- Max time to wait for Claude Code connection (ms)
286
+ queue_timeout = 5000 , -- Max time to keep @ mentions in queue (ms)
287
+
288
+ -- Terminal Configuration
235
289
terminal = {
236
- split_side = " right" ,
237
- split_width_percentage = 0.3 ,
238
- provider = " auto" , -- "auto" (default), "snacks", or "native"
239
- auto_close = true , -- Auto-close terminal after command completion
290
+ split_side = " right" , -- "left" or "right"
291
+ split_width_percentage = 0.30 , -- Width as percentage (0.0 to 1.0)
292
+ provider = " auto" , -- "auto", "snacks", or "native"
293
+ show_native_term_exit_tip = true , -- Show exit tip for native terminal
294
+ auto_close = true , -- Auto-close terminal after command completion
240
295
},
241
296
242
- -- Diff options
297
+ -- Diff Integration
243
298
diff_opts = {
244
- auto_close_on_accept = true ,
245
- vertical_split = true ,
299
+ auto_close_on_accept = true , -- Close diff view after accepting changes
300
+ show_diff_stats = true , -- Show diff statistics
301
+ vertical_split = true , -- Use vertical split for diffs
302
+ open_in_current_tab = true , -- Open diffs in current tab vs new tab
246
303
},
247
304
},
248
- config = true ,
305
+ }
306
+ ```
307
+
308
+ </details >
309
+
310
+ ### Configuration Options Explained
311
+
312
+ #### Server Options
313
+
314
+ - ** ` port_range ` ** : Port range for the WebSocket server that Claude connects to
315
+ - ** ` auto_start ` ** : Whether to automatically start the integration when Neovim starts
316
+ - ** ` terminal_cmd ` ** : Override the default "claude" command (useful for custom Claude installations)
317
+ - ** ` log_level ` ** : Controls verbosity of plugin logs
318
+
319
+ #### Selection Tracking
320
+
321
+ - ** ` track_selection ` ** : Enables real-time selection updates sent to Claude
322
+ - ** ` visual_demotion_delay_ms ` ** : Time to wait before switching from visual selection to cursor position tracking
323
+
324
+ #### Connection Management
325
+
326
+ - ** ` connection_wait_delay ` ** : Prevents overwhelming Claude with rapid @ mentions after connection
327
+ - ** ` connection_timeout ` ** : How long to wait for Claude to connect before giving up
328
+ - ** ` queue_timeout ` ** : How long to keep queued @ mentions before discarding them
329
+
330
+ #### Terminal Configuration
331
+
332
+ - ** ` split_side ` ** : Which side to open the terminal split (` "left" ` or ` "right" ` )
333
+ - ** ` split_width_percentage ` ** : Terminal width as a fraction of screen width (0.1 = 10%, 0.5 = 50%)
334
+ - ** ` provider ` ** : Terminal implementation to use:
335
+ - ` "auto" ` : Try snacks.nvim, fallback to native
336
+ - ` "snacks" ` : Force snacks.nvim (requires folke/snacks.nvim)
337
+ - ` "native" ` : Use built-in Neovim terminal
338
+ - ** ` show_native_term_exit_tip ` ** : Show help text for exiting native terminal
339
+ - ** ` auto_close ` ** : Automatically close terminal when commands finish
340
+
341
+ #### Diff Options
342
+
343
+ - ** ` auto_close_on_accept ` ** : Close diff view after accepting changes with ` :w ` or ` <leader>da `
344
+ - ** ` show_diff_stats ` ** : Display diff statistics (lines added/removed)
345
+ - ** ` vertical_split ` ** : Use vertical split layout for diffs
346
+ - ** ` open_in_current_tab ` ** : Open diffs in current tab instead of creating new tabs
347
+
348
+ ### Example Configurations
349
+
350
+ #### Minimal Configuration
351
+
352
+ ``` lua
353
+ {
354
+ " coder/claudecode.nvim" ,
249
355
keys = {
250
356
{ " <leader>a" , nil , desc = " AI/Claude Code" },
251
357
{ " <leader>ac" , " <cmd>ClaudeCode<cr>" , desc = " Toggle Claude" },
252
358
{ " <leader>af" , " <cmd>ClaudeCodeFocus<cr>" , desc = " Focus Claude" },
359
+ { " <leader>ar" , " <cmd>ClaudeCode --resume<cr>" , desc = " Resume Claude" },
360
+ { " <leader>aC" , " <cmd>ClaudeCode --continue<cr>" , desc = " Continue Claude" },
253
361
{ " <leader>as" , " <cmd>ClaudeCodeSend<cr>" , mode = " v" , desc = " Send to Claude" },
254
362
{
255
363
" <leader>as" ,
256
364
" <cmd>ClaudeCodeTreeAdd<cr>" ,
257
365
desc = " Add file" ,
258
- ft = { " NvimTree" , " neo-tree" },
366
+ ft = { " NvimTree" , " neo-tree" , " oil " },
259
367
},
260
- { " <leader>ao" , " <cmd>ClaudeCodeOpen<cr>" , desc = " Open Claude" },
261
- { " <leader>ax" , " <cmd>ClaudeCodeClose<cr>" , desc = " Close Claude" },
368
+ },
369
+ opts = {
370
+ log_level = " warn" , -- Reduce log verbosity
371
+ auto_start = false , -- Manual startup only
262
372
},
263
373
}
264
374
```
265
375
266
- </details >
267
-
268
- ### Terminal Auto-Close Behavior
269
-
270
- The ` auto_close ` option controls what happens when Claude commands finish:
271
-
272
- ** When ` auto_close = true ` (default):**
273
-
274
- - Terminal automatically closes after command completion
275
- - Error notifications shown for failed commands (non-zero exit codes)
276
- - Clean workflow for quick command execution
376
+ #### Power User Configuration
277
377
278
- ** When ` auto_close = false ` :**
378
+ ``` lua
379
+ {
380
+ " coder/claudecode.nvim" ,
381
+ keys = {
382
+ { " <leader>a" , nil , desc = " AI/Claude Code" },
383
+ { " <leader>ac" , " <cmd>ClaudeCode<cr>" , desc = " Toggle Claude" },
384
+ { " <leader>af" , " <cmd>ClaudeCodeFocus<cr>" , desc = " Focus Claude" },
385
+ { " <leader>ar" , " <cmd>ClaudeCode --resume<cr>" , desc = " Resume Claude" },
386
+ { " <leader>aC" , " <cmd>ClaudeCode --continue<cr>" , desc = " Continue Claude" },
387
+ { " <leader>as" , " <cmd>ClaudeCodeSend<cr>" , mode = " v" , desc = " Send to Claude" },
388
+ {
389
+ " <leader>as" ,
390
+ " <cmd>ClaudeCodeTreeAdd<cr>" ,
391
+ desc = " Add file" ,
392
+ ft = { " NvimTree" , " neo-tree" , " oil" },
393
+ },
394
+ },
395
+ opts = {
396
+ log_level = " debug" ,
397
+ visual_demotion_delay_ms = 100 , -- Slower selection demotion
398
+ connection_wait_delay = 500 , -- Longer delay for @ mention batching
399
+ terminal = {
400
+ split_side = " left" ,
401
+ split_width_percentage = 0.4 , -- Wider terminal
402
+ provider = " snacks" ,
403
+ auto_close = false , -- Keep terminal open to review output
404
+ },
405
+ diff_opts = {
406
+ vertical_split = false , -- Horizontal diffs
407
+ open_in_current_tab = false , -- New tabs for diffs
408
+ },
409
+ },
410
+ }
411
+ ```
279
412
280
- - Terminal stays open after command completion
281
- - Allows reviewing command output and any error messages
282
- - Useful for debugging or when you want to see detailed output
413
+ #### Custom Claude Installation
283
414
284
415
``` lua
285
- terminal = {
286
- provider = " snacks" ,
287
- auto_close = false , -- Keep terminal open to review output
416
+ {
417
+ " coder/claudecode.nvim" ,
418
+ keys = {
419
+ { " <leader>a" , nil , desc = " AI/Claude Code" },
420
+ { " <leader>ac" , " <cmd>ClaudeCode<cr>" , desc = " Toggle Claude" },
421
+ { " <leader>af" , " <cmd>ClaudeCodeFocus<cr>" , desc = " Focus Claude" },
422
+ { " <leader>ar" , " <cmd>ClaudeCode --resume<cr>" , desc = " Resume Claude" },
423
+ { " <leader>aC" , " <cmd>ClaudeCode --continue<cr>" , desc = " Continue Claude" },
424
+ { " <leader>as" , " <cmd>ClaudeCodeSend<cr>" , mode = " v" , desc = " Send to Claude" },
425
+ {
426
+ " <leader>as" ,
427
+ " <cmd>ClaudeCodeTreeAdd<cr>" ,
428
+ desc = " Add file" ,
429
+ ft = { " NvimTree" , " neo-tree" , " oil" },
430
+ },
431
+ },
432
+ opts = {
433
+ terminal_cmd = " /opt/claude/bin/claude" , -- Custom Claude path
434
+ port_range = { min = 20000 , max = 25000 }, -- Different port range
435
+ },
288
436
}
289
437
```
290
438
0 commit comments