GDL: настраиваем окружение — II. Сниппеты и компиляция
Продолжение предыдущей статьи о настройке окружения GDL.
В этот раз хотелось бы обратить внимание на сниппеты и автоматический процесс сборки
Сниппеты
Сборка сниппета предельно проста: ST → Tools → New Snippet... откроет вам шаблон с таким содержанием:
<snippet>
<content><![CDATA[
Hello, ${1:this} is a ${2:snippet}.
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<!-- <tabTrigger>hello</tabTrigger> -->
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
</snippet>
Это стандартный сублимовский шаблон сниппета, который нам предстоит заточить под команды GDL. Для примера возьмем команду TEXT2:
<snippet>
<content><![CDATA[text2 ${1:x}, ${2:y}, "${3:expression}"] ]></content>
<tabTrigger>text2</tabTlgger>
<scope>source.gdl</scope>
<description>TEXT2 x, y, expression</description>
</snippet>
Разберем конструкцию сниппета:
content — непосредственно сам контент, который будет вызван сниппетом, заключается во вторых квадратных скобках; перебор переменных заключается в выражениях вида ${1:x}, где число означает порядковый номер, выстраивая последовательность, которая будет реагировать на нажатие таба, переключая переменные для редактирования; x — переменная;
tabTrigger — код (текст, команда), на который будет реагировать сниппет, в данном случае я использую ловеркейсный вид команды TEXT2;
scope — область применения сниппета,
description — собственно, описание команды, которая будет отображаться в виде подсказки;
В итоге, получаем такой вид процесса:
В целом, достаточно удобная и полезная штука — даже спустя несколько лет, я до сих пор не помню большее количество команд и, особенно, их правильный синтаксис. Подсказки же сниппетов позволяют интуитивно и быстро нащупать необходимые и правильные команды без перебора документации
Небольшая подборка сниппетов для GDL — https://github.com/Archimatika/
Руководство по созданию сниппетов — http://habrahabr.ru/post/148324/.
Компиляция
После того, как исходный код написан в
{
"cmd": ["gdl.builder.bat", "C:/Program Files (x86)/Graphisoft/Converter/LP_XMLConverter", "$file", "$file_path", "$file_base_name"],
"working_dir": "$packages"
}
Он состоит из двух частей: из файла GDL.
cmd — команда, вызывающая батник, конвертер и передающая глобальные переменные Sublim Text'a — $file, $file_path, $file_base_name, содержащие информацию об исходном файле;
working_dir — директория, содержащая озвученные скрипты, $packages — глобальная переменная, указывающая расположение пакетов редактора;
Сам батник содержит следующее:
@echo off
echo # %DATE% - %TIME% begin to build an object...
%1 xml2libpart -l UTF8 %2 %3/%4.gsm
Где мы вызываем команду конвертера и принимаем указанные ранее переменные %1, %2, %3, %4.
В итоге, если все прошло успешно, получаем небольшой рипорт:
Объект был собран и помещен в ту же папку, где находился исходный
Ссылки на билдер и батник — https://github.com/Archimatika/