When CodeMirror element structure changes, JS world should be notified.
- After initial page DOM loading, JS generation of hilite layer starts. I want to know when CodeMirror element creation finished.
- When source text changes significantly, I want to get notified. CodeMirror elements may have been created, or entire elements could vanish due to deletions.
Both situations may be reflected by only one event; point 1 is a special case of event 2.
- Single characters amid element content are less important; I could listen change events and follow each keystroke anyway.
In MediaWiki context mw.hook() would be preferred and robust mechanism.
- If non-MediaWiki environment needs to be supported, user defined JS Event() might be triggered.
Use cases:
- One existing feature is drawing attention on errors, here as soon as .cm-error shows up, avoiding saving and leaving before remedied.
- Another interesting issue is the occurrence of certain templates from a list of observed template names, flipping through .cm-mw-template-name and even more if connected with some template parameters which might be deprecated and should be replaced, or evaluating parameter values and warn or fix or format. Grabbing CodeMirror elements might be a new approach for next generation tools.
The other way around: CodeMirror might listen to mw.hook() and gets nudged to re-start for entire textarea content.
- Extension talk:CodeMirror #How to send a command to CodeMirror from JS? is complaining.
- Apparently current implementaton is listening to keystroke or mouse events only.
- By JavaScript activities the text might be changed, too.
- Each other single change event might be caught, too. However, it could be more efficient that JavaScript tools fire a hook event anyway, as soon as changes are completed. If CodeMirror is not active this is rather cheap. If CodeMirror is active rebuilding could be triggered after all incremental changes have been performed.