feat(editor): мультикурсор — выделить все вхождения + одновременный ввод (#196) #372

Open
agent_coder wants to merge 2 commits from feat/196-multi-cursor into develop

2 Commits

Author SHA1 Message Date
agent_coder c26d136bff test(editor): pin remote-delete cursor contract + correct scope docblock (#196 review round 1)
- F2: add a remap test for a REMOTE (meta-less) delete of a cursor's own range,
  pinning the collapse-not-drop contract — the deleted-over cursor collapses to a
  zero-width caret at the deletion point and stays in the set; others keep their
  occurrence (this is the riskiest remap path, previously covered only for insert).
- F1: reword the out-of-scope docblock — occurrences inside tables/code-blocks/
  callouts ARE matched and edited as plain text (no schema-aware cursor); they
  were never a 'deliberately not built' boundary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 04:10:08 +03:00
agent_coder 86b2d7b350 feat(editor): multi-cursor editing MVP — select all occurrences + type into all (#196)
Variant A of #196: VS Code-style multi-cursor limited to "select all
occurrences of a word (or the selection) and type into all at once", built on
top of the existing SearchAndReplace mass-transaction machinery.

- New `MultiCursor` Tiptap extension (packages/editor-ext/src/lib/multi-cursor/):
  Cmd/Ctrl+Shift+L selects all occurrences, Cmd/Ctrl+D adds the next, typing /
  Backspace / Delete apply to every cursor in ONE reverse-order transaction (so a
  single undo reverts the whole multi-edit), Esc / click / navigation collapse.
- Cursors live in plugin state and are remapped on every docChanged — covering
  remote Yjs edits (applied as ordinary transactions) with no collab-specific code.
- Extracted a shared `findOccurrences` util so SearchAndReplace and MultiCursor
  no longer duplicate the occurrence walk (behaviour-preserving).
- Conscious v1 out-of-scope boundaries (Variant B) documented in the extension.

Registered in mainExtensions; carets styled distinctly from collaborative carets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 04:10:08 +03:00