PHPackages                             evolution-cms/ecodemirror - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. evolution-cms/ecodemirror

ActiveEvolutioncms-plugin[Utility &amp; Helpers](/categories/utility)

evolution-cms/ecodemirror
=========================

CodeMirror 6 for Evolution CMS

029TypeScript

Since Jan 22Pushed 3mo agoCompare

[ Source](https://github.com/evolution-cms/eCodemirror)[ Packagist](https://packagist.org/packages/evolution-cms/ecodemirror)[ RSS](/packages/evolution-cms-ecodemirror/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

eCodeMirror (CodeMirror 6) for Evolution CMS
============================================

[](#ecodemirror-codemirror-6-for-evolution-cms)

Modern CodeMirror 6 editor package for Evolution CMS 3.5.x. This package replaces the legacy CM5 plugin with a Composer‑installed, publishable, and extensible CM6 implementation.

Requirements
------------

[](#requirements)

- PHP ^8.3
- Evolution CMS ^3.5.2
- Composer 2.2+

Install
-------

[](#install)

```
composer require evolution-cms/ecodemirror "*"
```

Register editor (optional auto‑set):

```
php artisan vendor:publish --tag=ecodemirror-config
```

Publish assets:

```
php artisan vendor:publish --tag=ecodemirror-assets
```

What gets published
-------------------

[](#what-gets-published)

- Config (single source of truth):
    - `core/custom/config/cms/settings/eCodeMirror.php`
- Assets:
    - `public/assets/plugins/eCodeMirror/dist/eCodeMirror.js`
    - `public/assets/plugins/eCodeMirror/dist/eCodeMirror.css`

System Settings (Overrides)
---------------------------

[](#system-settings-overrides)

These are overrides only. The canonical config is `core/custom/config/cms/settings/eCodeMirror.php`.

- `ecm_profile`
- `ecm_theme_mode` (auto/light/dark)
- `ecm_theme`
- `ecm_font_size`
- `ecm_line_height`
- `ecm_line_wrapping`
- `ecm_emmet`
- `ecm_search`

Config structure (publish config)
---------------------------------

[](#config-structure-publish-config)

Key sections:

- `profiles` — preset options + extensions
- `contexts` — map context → profile
- `themes` — light/dark theme mapping
- `editor` — base options (font, line height, history/state, gutters, keymap)
- `extensions` — global feature toggles
- `protected_keys` — options not overridable via params

Manager Events
--------------

[](#manager-events)

Editor is wired into manager form events:

- `OnDocFormRender`
- `OnTempFormRender`
- `OnChunkFormRender`
- `OnSnipFormRender`
- `OnPluginFormRender`
- `OnModFormRender`
- `OnTVFormRender`
- `OnRichTextEditorInit`

Build (development only)
------------------------

[](#build-development-only)

Node is required for development builds. In production, use published `public/dist`.

```
npm install
npm run build
```

Build output:

- `public/dist/eCodeMirror.js`
- `public/dist/eCodeMirror.css`

Notes
-----

[](#notes)

- Assets are cache‑busted via `?v=` fallback.
- Legacy CM5 plugin must be disabled when enabling eCodeMirror.
- Emmet is enabled via profile extensions (`emmet`), lint currently provides JSON validation when `lint` is enabled.
- For resource content, eCodeMirror activates only when richtext is disabled (no RTE), matching legacy behavior.
- If you previously published `core/custom/config/cms/settings/which_editor.php`, remove it to avoid forcing eCodeMirror as the RTE.

License
-------

[](#license)

GPL-2.0

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance53

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/9a722445bb0bad50ab37fec12236f407434df04d5b7b9051bdb26336758e209e?d=identicon)[dmi3yy](/maintainers/dmi3yy)

---

Top Contributors

[![Dmi3yy](https://avatars.githubusercontent.com/u/669491?v=4)](https://github.com/Dmi3yy "Dmi3yy (12 commits)")

### Embed Badge

![Health badge](/badges/evolution-cms-ecodemirror/health.svg)

```
[![Health](https://phpackages.com/badges/evolution-cms-ecodemirror/health.svg)](https://phpackages.com/packages/evolution-cms-ecodemirror)
```

###  Alternatives

[vladimmi/construct-static

Small Composer wrapper to implement static class constructors

172.2k1](/packages/vladimmi-construct-static)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
