# Overwrite mode in v6?

**URL:** <https://discuss.codemirror.net/t/overwrite-mode-in-v6/8741>\
**Category:** v6\
**Created:** [October 24, 2024, 10:47pm UTC](https://discuss.codemirror.net/t/overwrite-mode-in-v6/8741 "2024-10-24T22:47:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![personalizedrefriger](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/personalizedrefriger/32/2193_2.png) [@personalizedrefriger](https://discuss.codemirror.net/u/personalizedrefriger)\
**Post date:** [October 24, 2024, 10:47pm UTC](https://discuss.codemirror.net/t/overwrite-mode-in-v6/8741/1 "2024-10-24T22:47:12Z")

</div>

Hi,

CodeMirror 5 supported toggling [overwrite mode](https://codemirror.net/5/doc/manual.html#toggleOverwrite) when pressing insert. Is there a built-in way to enable overwrite mode in CodeMirror 6?

---

<div class="post-metadata">

**Author:** ![marijn](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/marijn/32/136_2.png) [@marijn](https://discuss.codemirror.net/u/marijn)\
**Post date:** [October 25, 2024, 5:44am UTC](https://discuss.codemirror.net/t/overwrite-mode-in-v6/8741/2 "2024-10-25T05:44:04Z")

</div>

No, version 6 doesn’t have an implementation of overwrite. It should be possible to implement it as an extension using an [input handler](https://codemirror.net/docs/ref/#view.EditorView%5EinputHandler).

---

<div class="post-metadata">

**Author:** ![personalizedrefriger](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/personalizedrefriger/32/2193_2.png) [@personalizedrefriger](https://discuss.codemirror.net/u/personalizedrefriger)\
**Post date:** [October 25, 2024, 8:27pm UTC](https://discuss.codemirror.net/t/overwrite-mode-in-v6/8741/3 "2024-10-25T20:27:18Z")

</div>

Thank you for the suggestion! I’m linking to [a try-it editor draft implementation](https://codemirror.net/try/?c=aW1wb3J0IHtiYXNpY1NldHVwLCBFZGl0b3JWaWV3fSBmcm9tICJjb2RlbWlycm9yIgppbXBvcnQge2phdmFzY3JpcHR9IGZyb20gIkBjb2RlbWlycm9yL2xhbmctamF2YXNjcmlwdCIKaW1wb3J0IHtrZXltYXB9IGZyb20gIkBjb2RlbWlycm9yL3ZpZXciCmltcG9ydCB7U3RhdGVGaWVsZCwgRmFjZXQsIEVkaXRvclNlbGVjdGlvbiwgU3RhdGVFZmZlY3R9IGZyb20gIkBjb2RlbWlycm9yL3N0YXRlIgoKY29uc3Qgb3ZlcndyaXRlTW9kZUZhY2V0ID0gRmFjZXQuZGVmaW5lKHsKICBjb21iaW5lOiAodmFsdWVzKSA9PiB2YWx1ZXNbMF0gPz8gZmFsc2UsCiAgZW5hYmxlczogc2VsZiA9PiBbCiAgICBFZGl0b3JWaWV3LmlucHV0SGFuZGxlci5vZigoCiAgICAgIHZpZXcsIGZyb20sIHRvLCB0ZXh0LCBpbnNlcnQsCiAgICApID0+IHsKICAgICAgaWYgKHZpZXcuc3RhdGUuZmFjZXQoc2VsZikgJiYgdGV4dCkgewogICAgICAgIGNvbnN0IG9yaWdpbmFsVHJhbnNhY3Rpb24gPSBpbnNlcnQoKTsKICAgICAgICBjb25zdCBuZXdTdGF0ZTEgPSBvcmlnaW5hbFRyYW5zYWN0aW9uLnN0YXRlOwogICAgICAgIGNvbnN0IGVtcHR5U2VsZWN0aW9uczEgPSBuZXdTdGF0ZTEuc2VsZWN0aW9uLnJhbmdlcy5maWx0ZXIoCiAgICAgICAgICByYW5nZSA9PiByYW5nZS5lbXB0eSwKICAgICAgICApOwogICAgICAgIAogICAgICAgIHZpZXcuZGlzcGF0Y2goWwogICAgICAgICAgb3JpZ2luYWxUcmFuc2FjdGlvbiwKICAgICAgICAgIG5ld1N0YXRlMS51cGRhdGUoewogICAgICAgICAgICBjaGFuZ2VzOiBlbXB0eVNlbGVjdGlvbnMxLmZpbHRlcihyYW5nZSA9PiB7CiAgICAgICAgICAgICAgY29uc3QgbGluZSA9IG5ld1N0YXRlMS5kb2MubGluZUF0KHJhbmdlLnRvKTsKICAgICAgICAgICAgICByZXR1cm4gcmFuZ2UudG8gPCBsaW5lLnRvOwogICAgICAgICAgICB9KS5tYXAoc2VsID0+IHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgZnJvbTogc2VsLnRvLAogICAgICAgICAgICAgICAgdG86IHNlbC50byArIDEsCiAgICAgICAgICAgICAgICBpbnNlcnQ6ICcnLAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pLAogICAgICAgICAgfSksCiAgICAgICAgXSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSksCiAgICBFZGl0b3JWaWV3LnRoZW1lKHsKICAgICAgJyYuLW92ZXJ3cml0ZSAuY20tY3Vyc29yJzogewogICAgICAgIGJvcmRlckxlZnRXaWR0aDogJzAuNWVtJywKICAgICAgfQogICAgfSksCiAgXSwKfSk7Cgpjb25zdCB0b2dnbGVPdmVyd3JpdGUgPSBTdGF0ZUVmZmVjdC5kZWZpbmUoKTsKY29uc3Qgb3ZlcndyaXRlTW9kZVN0YXRlID0gU3RhdGVGaWVsZC5kZWZpbmUoewogIGNyZWF0ZTogKCkgPT4gdHJ1ZSwKICB1cGRhdGUob2xkVmFsdWUsIHRyKSB7CiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykgewogICAgICBpZiAoZS5pcyh0b2dnbGVPdmVyd3JpdGUpKSB7CiAgICAgICAgcmV0dXJuIGUudmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBvbGRWYWx1ZTsKICB9LAogIHByb3ZpZGU6IChmaWVsZCkgPT4gWwogICAgb3ZlcndyaXRlTW9kZUZhY2V0LmZyb20oZmllbGQpLAogICAgRWRpdG9yVmlldy5lZGl0b3JBdHRyaWJ1dGVzLmZyb20oZmllbGQsIG9uID0+ICh7CiAgICAgIGNsYXNzOiBvbiA/ICctb3ZlcndyaXRlJyA6ICcnLAogICAgfSkpLAogIF0sCn0pOwoKY29uc3QgdG9nZ2xlYWJsZU92ZXJ3cmlnaHQgPSBbCiAgb3ZlcndyaXRlTW9kZVN0YXRlLAogIGtleW1hcC5vZih7CiAgICBrZXk6ICdJbnNlcnQnLAogICAgcnVuKHZpZXcpIHsKICAgICAgdmlldy5kaXNwYXRjaCh7CiAgICAgICAgZWZmZWN0czogdG9nZ2xlT3ZlcndyaXRlLm9mKCF2aWV3LnN0YXRlLmZpZWxkKG92ZXJ3cml0ZU1vZGVTdGF0ZSkpLAogICAgICB9KTsKICAgIH0sCiAgfSksCl0KCm5ldyBFZGl0b3JWaWV3KHsKICBkb2M6ICJjb25zb2xlLmxvZygnaGVsbG8nKVxuIiwKICBleHRlbnNpb25zOiBbCiAgICBiYXNpY1NldHVwLAogICAgamF2YXNjcmlwdCgpLAogICAgdG9nZ2xlYWJsZU92ZXJ3cmlnaHQsCiAgXSwKICBwYXJlbnQ6IGRvY3VtZW50LmJvZHkKfSk7Cg==) and [a more complete implementation](https://github.com/laurent22/joplin/blob/4c07f4430c87ae0d1b314a38d17bf0e068d776ef/packages/editor/CodeMirror/utils/overwriteModeExtension.ts).

**Edited** : Linked to more complete implementation.
