outwiker_logo

ru_outwiker


OutWiker - Программа для хранения заметок


Previous Entry Share Next Entry
OutWiker 2.0.0.802 и плагин Markdown
питекантроп с лампой
jenyay wrote in ru_outwiker
Сегодня выложил новую нестабильную версию OutWiker с очень важными изменениями.

Во время разработки OutWiker я очень бережно отношусь к обратной совместимости. Программа не должна падать или выдавать непонятные пользователю сообщения об ошибках после очередного обновления как самой программы, так и плагинов. Однако в процессе развития иногда хочется переделать какой внутренний участок кода, который уже может использоваться каким-нибудь плагином. Момент перехода от версии 1.x к 2.0 - удачное время, когда можно немного поломать обратную совместимость, чтобы облегчить дальнейшее развитие. Но если у пользователей установлены плагины для старых версий программы, то программа в любом случае не должна падать, плагины должны просто отключаться, и при этом еще сообщать пользователю причину своего отключения. Именно это я и сделал в данной версии.



Я не буду описывать здесь все подробности работы с плагинами (в будущем надо будет переписать статью про создание плагинов, она теперь местами устарела), скажу лишь только, что теперь у каждого внутреннего компонента OutWiker есть номер версии, а каждый плагин теперь должен иметь файл plugin.xml, в котором среди прочей информации и плагине (в основном не обязательной) должны быть требования к версиям этих компонентов.

При этом появилась такая особенность загрузки плагинов: если, например, компонент имеет версию 1.4, а плагин требует версию 1.3, то все будет работать, а если плагину требуется версия компонента 1.5, то плагин будет отключен, но будет показан в списке плагинов, и если его выбрать в списке, то мы увидим сообщение о том, что плагин рассчитан на более новую версию OutWiker.
plugin_from_future

Но может быть и обратная ситуация, когда плагин требует компонент версии 1.5, а в OutWiker этот компонент имеет версию 2.0 (увеличение первой цифры значит, что были внесены изменения, ломающие обратную совместимость). В этом случае плагин также будет отключен, а в его описании будет написано, что плагин не рассчитан на такую свежую версию OutWiker, и нужно обновить плагин.
plugin_outdated

Плагин может заявлять, что умеет работать с несколькими версиями одного и того же компонента. Но обо всех подробностях я напишу в отдельной статье для разработчиков плагинов.

Как это ни печально, но при добавлении такой особенности загрузки плагинов, все старые плагины будут отключены, как устаревшие. Но это не страшно, потому что я их уже все обновил, чтобы они могли работать, как в старых, так и в новых версиях OutWiker. Для добавления совместимости нужно было только исправить или создать файл plugin.xml, не трогая основной код. Единственное исключение - плагин WebPage, который теперь существует в двух версиях - для OutWiker 1.9 и для 2.0.

А теперь то, что подтолкнуло меня на такие изменения - плагин Markdown. Именно при его создании возникло желание сильно упростить один внутренний компонент, который оставался нетронутым несколько лет.

Уже давно меня просили сделать страницу, разметка которой задается с помощью языка Markdown. Наконец, готова первая версия, в которой есть поддержка базового языка Markdown без каких-либо расширений этого языка, их я собираюсь добавлять в следующих версиях. Поскольку сам я этот язык недолюбливаю (на мой взгляд другие викиязыки более логичные), то жду от вас предложения, какие расширения нужны в первую очередь. Пока я собираюсь ориентироваться на поддержку возможностей, используемых на github.

После установки плагина Markdown, страницу в этом формате вы можете создавать, как страницы встроенных типов.
dialog

В редакторе есть подсветка основных элементов языка Markdown: заголовков, ссылок, выделение текста полужирным шрифтом и курсивом.
markdown_code

В режиме просмотра эта страница выглядит следующим образом:
markdown_view

Стили оформления также работают и для Markdown-страниц.
markdown_style

Для основных элементов языка Markdown на панель инструментов выведены кнопки.
markdown_toolbar

На этом пока все, еще раз напоминаю, что после обновления нужно будет обновить и используемые плагины.

?

Log in

No account? Create an account