automerge / automerge-swift-archived

Wrapper around Swift types that can be modified concurrently by different users, and merged again automatically (a CRDT).
MIT License
159 stars 14 forks source link

indexing text document and cursor tracking #55

Open munhitsu opened 1 year ago

munhitsu commented 1 year ago

To really use Automerge for Text editor one needs to keep cursor position updated while remote changes are arriving. One way of doing it is to expose 2 functions to translate from cursor Int position to ObjectID and ObjectID to a position.

Such 2 APIs will also allow to index chunks of the live documents.

The other way is to manually process remote changes and apply them to the cursor position, but it's duplicating the rust library code.

I might have a bad day but I can't figure out how to do the option 1 with the current library version.

ept commented 1 year ago

An API to translate between a cursor position as character ID and an index would be a good thing to add. It would first need to be added to the Rust core before it could be exposed to Swift. Could you open an issue for this on the automerge/automerge-rs repo please?