Встраивая CodeMirror 5.7 в свой редактор кода на DevelStudio я наконец-то допер до того какова должна быть правильная схема взаимодействия JavaScript из втроенного Chromium и собственно самого PHP кода.
JavaScript вызывает PHP.call в том месте когда надо передать текст из JavaScript.
При этом управление попадает в PHP DevelStudio в определенную функцию. Функция эта одна, она принимает текст и кладет его например в memo.
В нашей с вами задаче весь код необходимо писать на PHP, работать с JavaScript не нужно, ввиду того что это другой язык, он имеет свой regexp, у него какая-то странная событийная модель ломающая голову простому процедурщику.
Представим что нам надо реализовать 10 функций по обработке текста в редакторе.
Каждая должна брать текст из CodeMirror textarea (Chromium), делать там обработку текста и класть обратно.
Класть в CodeMirror можно одной функцией. Это просто и удобно, а вот пришедший код в memo не совсем ясно как обрабатывать по той причине что приходит код асинхронно и попадает неизвестно когда в memo.
Вот тут и заковырка, которую пришлось решить так:
Это готовое решение, все работает как часы и взаимодействие налажено.
Конечно скажете вы, мог бы написать все на том же nodeJS, но там нет такого удобного дизайнера как в DevelStudio. Да и нативное приложение получится убогое нативное приложение где один Хромиум.