Neovim plugin for neocrush integration.
- Edit Highlighting: Flash highlights on AI-generated edits (like yank highlight)
- Auto-focus: Automatically focus and scroll to edited files
- Terminal Management: Toggle/focus/restart Crush terminal
- Cursor Sync: Send cursor position to neocrush for context awareness
- Health Check: Verify setup with
:checkhealth neocrush
- Neovim >= 0.10
- neocrush binary in PATH
- crush CLI for terminal integration
- Go (for
:CrushInstallBinaries/:CrushUpdateBinaries)
-- lazy.nvim
{
'taigrr/neocrush.nvim',
event = 'VeryLazy',
opts = {
-- All options are optional with sensible defaults
highlight_group = 'IncSearch', -- Flash highlight group
highlight_duration = 900, -- Flash duration (ms)
auto_focus = true, -- Auto-focus edited files
terminal_width = 80, -- Terminal width in columns
terminal_cmd = 'crush', -- Command to run in terminal
-- Optional keybindings (none set by default)
keys = {
toggle = '<leader>cc',
focus = '<leader>cf',
logs = '<leader>cl',
cancel = '<leader>cx',
restart = '<leader>cr',
paste = '<leader>cp', -- Works in normal (clipboard) and visual (selection) mode
},
},
}Note: The plugin starts the LSP on VimEnter, so use event = 'VeryLazy' to load after UI is ready.
| Command | Description |
|---|---|
:CrushToggle |
Toggle the Crush terminal window |
:CrushOpen |
Open the Crush terminal |
:CrushClose |
Close the Crush terminal (keeps buffer) |
:CrushFocus |
Focus the Crush terminal |
:CrushWidth <n> |
Set terminal width to n columns |
:CrushLogs |
Show Crush logs in a new buffer |
:CrushCancel |
Cancel current operation (sends <Esc><Esc>) |
:CrushRestart |
Kill and restart the Crush terminal |
:CrushPaste [reg] |
Paste register (default: +) or selection |
:CrushFocusToggle |
Toggle auto-focus behavior |
:CrushFocusOn/Off |
Enable/disable auto-focus |
:CrushInstallBinaries |
Install neocrush and crush binaries (requires Go) |
:CrushUpdateBinaries |
Update binaries to latest version |
:CrushPaste defaults to system clipboard (+).
Pass a register name to paste from a specific register:
:CrushPaste a " Paste from register a
:CrushPaste " " Paste from unnamed register
:CrushPaste * " Paste from primary selection (X11)In visual mode, :CrushPaste pastes the current selection.
local crush = require('neocrush')
crush.toggle() -- Toggle terminal
crush.open() / crush.close() / crush.focus()
crush.set_width(100)
crush.logs() -- Show logs in new buffer
crush.cancel() -- Cancel operation (<Esc><Esc>)
crush.restart() -- Kill and restart terminal
crush.paste() -- Paste clipboard
crush.paste('a') -- Paste register "a"
crush.paste_selection() -- Paste visual selection
crush.toggle_auto_focus() -- Toggle auto-focus
crush.start_lsp() -- Manually start LSP
crush.get_client() -- Get LSP client instance- LSP Integration: Starts
neocrushonVimEnterwith no filetype restrictions - Edit Handler: Overrides
workspace/applyEditto flash highlight edits and scroll them into view - Cursor Sync: Sends
crush/cursorMovednotifications for context awareness - Terminal: Manages a persistent terminal buffer for the Crush CLI
Do NOT add neocrush to Mason/lspconfig. This plugin manages the LSP client directly. If you have neocrush in your LSP config, remove it.
When Crush edits open files, you may see external modification warnings.
Add vim.o.autoread = true to auto-reload unchanged files.
