[EVO] Update CodeMirror-MODx 1.1 b

Изменения по сравнению с прошлой версией:
- удалена поддержка selectionMatches
- добавлен плагин Emmet и поддержка им тегов MODx(в тестовом тежиме)
- создана и сделана ветка compressed(все файлы сжаты удалены лишнии)
- исправлен баг с табами
- доработана подсветка MODx
- добавлена поддержка подсветки файлов в "Управление файлами" (необходимо изменить файл files.dynamic.php)
- добавлено сохранение фулскрин режима
- горячие клавиши вынесены в codemirror.plugin.php


Последняя версия на гитхабе: github.com/Mihanik71/CodeMirror-MODx


Файлы
  • cm папка с используемыми файлами
    • lib папка с «ядром» CodeMirror
    • mode папка с файлами для подсветки синтаксиса
    • theme папка с темами
    • addon-compressed.js все дополнения для сборки
    • codemirror.files.php версия для подсветки в менеджере файлов
    • emmet-compressed.js стандартный Emmet для MODx, но с внесёнными своими тегами
  • codemirror.plugin.php основной файл плагина
  • codemirror.plugin.tpl настройки по умолчанию

Файл addon-compressed.js сейчас содержит сжатую версию:
  • /addon/mode/overlay.js
  • /addon/fold/foldcode.js
  • /addon/fold/brace-fold.js
  • /addon/fold/xml-fold.js
  • функции для фулскрина

Mode:
В этой папке находятся файлы для подсветки того или иного языка:
  • css-compressed.js подсветка css
  • htmlmixed-compressed.js подсветка html, xml и вложенных js и css
  • javascript-compressed.js подсветка js
  • php-compressed.js подсветка php и вложенного htmlmixed
  • sql-compressed.js подсветка sql(для менеджера файлов)

Горячие клавиши:
При обычном редактировании:
  • Ctrl-Space сворачивание/разворачивания таба
  • F11 включить/выключить FullScreen
  • Esc выключить FullScreen
  • Tab Emmet
  • Ctrl-S «сохранить»
  • Ctrl-E «сохранить и продолжить»
  • Ctrl-Q «сохранить и закрыть»
  • Ctrl-B «сохранить и создать новый»

При редактировании файлов:
  • Ctrl-Space сворачивание/разворачивания таба
  • F11 включить/выключить FullScreen
  • Esc выключить FullScreen
  • Tab Emmet

Подсветка MODx:
СтрокаCSS селектор
{{text}}.cm-modxChunk
[[text]].cm-modxSnippet
[!text!].cm-modxSnippetNoCache
[*text*].cm-modxTv
[+text+].cm-modxPlaceholder
[(text)].cm-modxVariable
[~text~].cm-modxUrl
[^text^].cm-modxConfig
&text=.cm-attribute

Так же работает подсветка сниппетов с параметрами.

FullScreen:
Теперь для каждой страницы сохраняется включён или выключен фуллскрин для того что бы не выбивало из него при сохранении и для удобства редактирования больших файлов.

Emmet:
По совету akool добавлена поддержка Emmet. Полная документация.

Но остановлюсь подробнее только о тегах которые были самостоятельно добавлены:
СокращениеНа что меняется
!dit[!Ditto? &parents=`` &tpl=`` &sortDir=`ASC` &paginate=`0` &display=`3`!]
dit[[Ditto? &parents=`` &tpl=`` &sortDir=`ASC` &paginate=`0` &display=`3`]]
!dittto[!Ditto? &parents=`` &tpl=`` &sortDir=`ASC` &paginate=`0` &display=`3`!]
dittto[[Ditto? &parents=`` &tpl=`` &sortDir=`ASC` &paginate=`0` &display=`3`]]
thumb[[phpthumb? &input=`[+image+]` &options=`w=150,h=76,far=C,bg=FFFFFF`]]
!thumb[!phpthumb? &input=`[+image+]` &options=`w=150,h=76,far=C,bg=FFFFFF`!]
!evo[!EvoGallery? &display=`images`!]
evo[[EvoGallery? &display=`images`]]
cheader{{header}}
chead{{head}}
con[+content+]
content[+content+]
foo{{footer}}
cfooter{{footer}}

Хотелось бы расширить поддерживаемые теги и для этого важно знать ваше мнение.

Подсветка в Файловом менеджере:
Добавлена подсветка в Файловом менеджере. Для подключения необходимо добавить:
$_CM_BASE = 'assets/plugins/codemirror/';
$_CM_URL = $modx->config['site_url'] . $_CM_BASE;
require(MODX_BASE_PATH. $_CM_BASE .'cm/codemirror.files.php');

после 449 строки в файле /manager/actions/files.dynamic.php

Поддерживаемые форматы:
  • *.css
  • *.js
  • *.html
  • *.xml
  • *.php
  • *.sql
остальные открываются в редакторе но с подсветкой синтаксиса html.

За время использования неудобство в скорости возникло только тогда когда открыл для редактирования файл emmet.js величиной в 13 тысяч строк(возникла задержка в 5 секунд).

Буду благодарен за отзывы и предложения

10 комментариев

avatar
Здорово, особенно интересно увидеть emmet в работе, не знаю как это будет на практике но по описанию супер.
Спасибо!
avatar
На практике, редактировать html и css с emmet — быстро, удобно и приятно. А вот модыксовые сниппеты — интересно как будет.
avatar
modx сниппеты просто изумительно нужно только составить правильный список
того как надо
avatar
И прописать шпаргалку где-то близенько, чтоб можно было кликнуть и посмотреть не отходя от редактирования.
avatar
да по логике нужно
имяснипета
! имясниппета

этого было бы для начала с головой
а чанки и так не долго писать )
avatar
Пятерка вам за работу на благо общества. И дополнительный пирожок с полки за такое хорошо составленное описание.
Теперь и пользоваться удобнее и описание позволяет разобраться людям как этим удобством управлять.
avatar
Обновил версию до 1.2

- Довавлен поиск (пример использования http://codemirror.net/demo/search.html)
- Маркеры теперь сворачивают код в таб
- Сохраняется история редактирования (отменить, повторить, положение курсора)
- Добавлено documentDirty=true; при изменении содержимого

Скачать можно: github.com/Mihanik71/CodeMirror-MODx
avatar
Плагин в сборке 1.0.10-d5.3.
Периодически глючит при редактировании кода.
При попытке поставить после закрывающего тега новый открывающий, кидает его до закрывающего.
При попытке закрыть тег, кидает закрывающую скобку перед последней буквой названия тега.
И другие подобные пляски не поддающиеся пониманию, т.к. они не всегда и не везде возникают и закономерности установить не удалось. В итоге чтобы отредактировать код приходится вообще отключать этот плагин.
Если глюки не устранить, придется вернуться к прежней версии, ибо с этой работать стало невозможно.
avatar
Не уж то один я не использую mac? У меня не работает история. После сохранения возврат по истории не осуществляется. Пишет следующее: Uncaught TypeError: Cannot read property 'slice' of undefined
Просто интересно. Или никто не знает о существовании данной функции…
avatar
На самом деле, не из-за этой ошибки не работает. Без ошибок не работает. Историю то пишет, а вот пользоваться ей браузер отказывается.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.