CodeMirror — это встраиваемая в веб‑приложения JavaScript‑библиотека для редактирования исходного кода в браузере с подсветкой синтаксиса, структурированной навигацией и поддержкой множества языков программирования. Библиотека предоставляет визуальный компонент редактора, который можно интегрировать в страницы и одностраничные приложения, управлять через API и расширять с помощью плагинов и модулей. CodeMirror ориентирован на гибкость оформления, настройку поведения редактирования и расширяемость для различных сценариев разработки, от простых текстовых полей до полноценных онлайн‑IDE.
Исторически CodeMirror развивался как лёгкая и настраиваемая альтернатива встроенным textarea с подсветкой синтаксиса и удобными функциями редактирования. В реализации делается упор на модульную архитектуру: ядро обеспечивает базовый рендеринг, курсор и обработку ввода, а дополнительные возможности реализуются как опции или плагины. Библиотека применялась в образовательных проектах, документации с примерами кода, веб‑редакторах и облачных инструментах разработки. Из доступных сведений следует, что реализация и набор функций варьируются между выпусками и ветками развития, поэтому конкретные детали API могут отличаться в разных версиях.
- Подсветка синтаксиса: поддержка множества языков через режимы или парсеры, позволяющая выделять ключевые слова, строки, комментарии и другие токены.
 - Редактирование и навигация: поддержка многострочного ввода, выделения, отступов, автодополнения и перехода по символам и строкам.
 - Расширяемый API: модульный интерфейс для подключения плагинов, пользовательских команд, событий и интеграции с внешними инструментами.
 - Темы и оформление: возможность настраивать внешний вид через темы, стили и параметры визуализации без изменения логики редактора.
 - События и обработчики: события для отслеживания изменений текста, положения курсора, фокуса и других взаимодействий пользователя.
 - Поддержка плагинов: экосистема дополнений для автодополнения, проверки синтаксиса, фрагментов кода и интеграции с системами сборки или отладки.
 - Производительность: оптимизации для работы с большими файлами и уменьшения перерисовки, позволяющие поддерживать отзывчивость интерфейса.
 - Доступность и управление вводом: функции, облегчающие работу с клавиатурой, управление буфером обмена и взаимодействие с браузерными событиями.