Как подружить интерпретатор Perl с Homesite
 

В каких только редакторах не пишут люди программы на Perl.

Мы же любим Homesite и поговорим об этом замечательном редакторе.

Главным недостатком Homesite в контексте программирования на Perl является отсутствие встроенного интерпретатора perl. Однако ничто не мешает нам связать родной интерпретатор perl с Homesite. У нас есть два пути:

  1. Вынести кнопку, запускающую интерпретатор perl применительно к текущему документу, на какую-либо панель (любую)
    или

  2. написать макрос, связывающий документ, с которым мы работаем в Homesite, с интерпретатором perl в нашей системе, а затем назначить этому макросу кнопку или шорткат (лучше шорткат, кнопку проще сделать для первого варианта)

Итак, первый вариант. Идём в меню: Options - Customize (или нажимаем Shift+F8); попадаем в окно пользовательской настройки панелей (Customize Toolbars):


рис. 1 — Окно пользовательской настройки панелей

Далее выбираем удобную для нас панель и нажимаем на кнопку Add custom Button:


рис. 2 — Нажимаем на кнопку Add custom Button

В нашем случае это панель Standart. В появившемся окне, которое называется Custom Toolbutton, выбираем тип кнопки. Вообще, при нажатии на кнопку может происходить четыре разных действия:

  • в то место, где в активном документе находится курсор, вставится открывающий и закрывающий тег;
  • появится диалоговое окно для более подробного редактирования и вставки соответствующего тега;
  • запустится внешнее приложение;
  • запустится макрос.
Нам нужно запустить внешнее приложение, поэтому мы выбираем третий вариант (Launch External Application).

 


рис. 3 — Создаём Custom Toolbutton

Параметрами кнопки, которая запускает внешнее приложения являются:

  • путь к приложению (Filename);
  • аргументы передаваемые приложению (Command Line);
  • подсказка при наведении курсора мыши на нашу кнопку (Button Hint).
Обратим особое внимание на подсказку (TIP): там говорится, что если вы хотите применить внешнее приложение к активному документу Homesite, следует передать приложению аргумент %CURRENT%. Так как мы аккуратные люди, не лишним будет передать интерпретатору вместе с нашим файлом и ключ w, чтобы получать предупреждения о возможных ошибках и неточностях в нашем сценарии.
Итак, нажимаем OK и кнопка запуска интерпретатора perl, который будет обрабатывать текущий документ, готова к работе:


рис. 4 — Кнопка готова к работе

Теперь, когда мы пишем сценарий на Perl, мы можем в любой момент сохранить документ и нажать на эту кнопку (NB: если мы нажмём на неё не сохранив документ, нам будет предложено это сделать) и проверить, как работает сценарий.

Однако же, согласитесь, очень неудобно каждый раз отрывать руки от клавиатуры и тянуться мышкой к кнопке! Наша задача — минимум телодвижений! Настало время вспомнить про второй вариант и создать макрос, который будет запускать интерпретатор при нажатии на заранее определённую комбинацию клавиш (т.н. ShortCut). Ниже приведён листинг этого скрипта (это JScript):

function Main () { 	var pathToPerl = "C:\\Perl\\bin\\Perl.exe" 	with (Application){		 		Application.ShellToApp ( 			pathToPerl + " " + " -w " 			+ Application.ActiveDocument.Filename 		) 	} }

Собственно, тут всё очевидно, в макросе используется внутренняя объектная модель Homesite (VTOM), объекты и методы VTOM достаточно подробно описаны в документации. Обратим особое внимание на необходимость экранировать слэши в переменной, в которой содержится путь к приложению.

Что теперь делать с этим скриптом? Сохраните его в любой удобной для вас папке, с любым(!) расширением, кроме BAS, VB, или VBS (дело в том, что такие файлы Homesite обрабатывает как макросы на языке VBScript все остальные файлы обрабатываются как файлы JScript).

Теперь нужно назначить комбинацию клавиш для вызова этого скрипта. Снова идём в окно пользовательской настройки панелей (Customize Toolbars): через меню, Options - Customize или Shift+F8. Там выбираем вкладку Script Shortсuts:


рис. 5 — Окно пользовательской настройки панелей, вкладка Script Shortсuts

После того, как мы нажмём на кнопку Add и укажем в стандартном окне путь к файлу макроса он окажется в списке. Нам нужно будет выбрать этот макрос в списке и назначить для него комбинацию клавиш. Затем нажать Apply и Close. Если комбинация клавиш будет занята, Homesite покажет нам предупреждение, а также то, чем занята эта комбинация, и мы сможем решить, заменять ли действие этой комбинации клавиш новым.

Теперь мы можем писать и редактировать сценарии на Perl и, не отвлекаясь на мышку, запускать интерпретатор, чтобы проверить, как работает наш сценарий. NB: если вы не сохранили файл, макрос (в отличие от метода запуска приложения прямо через кнопку) запустит perl и свяжет его с последней сохранённой версией файла папке для временных файлов, то есть, мы сможем запустить интерпретатор к несохранённому файлу, при этом не будет никаких предупреждений и нам не придётся сохранять файл, однако, изменения с момента последнего сохранения не будут учтены при работе интерпретатора Кроме того, текущим каталогом для такого временного файла будет, естественно, каталог для временных файлов, поэтому сохраняйте редактируемую программу, если её работа зависит от текущего каталога.


рис. 6 — Вот так это всё работает


FAQ 1: как сделать, чтобы окошко DOS с результатами работы скрипта не закрывалось?

- Последней командой в скрипте добавьте оператор считывания стандартного ввода <<

FAQ 2: Почему у меня не работают макросы для Homesite? Что делать?

- Макросы будут работать при том условии, что в вашей системе установлена Microsoft ActiveScripting engine (т.н. Windows Script). Windows Script устанавливается вместе с браузером Internet Explorer начиная с четвёртой версии. Скачать Windows Script можно по адресу
http://www.microsoft.com/msdownload/vbscript/scripting.asp


- Попытайтесь также осмыслить сообщения об ошибках

 
Автор: Михаил Кюршин
 
Оригинал статьи: http://woweb.ru/publ/58-1-0-446