Emacs для начинающих

       

Встраивание команд оболочки


Для такого встраивания требуется редактирование меню Shell (через выбор Preferences - Default Settings - Customize Menu - Shell Menu). Выбрав соответствующие пункты приведенной последовательности, вызываем панель Shell Commands (рис. 3) и выбираем из списка доступных команд пункт New. Подобно тому, как это проделывалось для макросов, заполняем поля Menu Entry, т. е. имени команды (оно также может быть иерархически построено и привязано к языковому режиму меню), Accelerator (для закрепления комбинаций клавиш) и Mnemonic (для выделения литеры быстрого вызова).

Рис. 3. Панель Shell Commands.

Затем определяемся с входными элементами команды в строке переключателей Command Input. Здесь можно предписать команде исполняться либо для выделенного фрагмента (selection), либо для текущего окна (window), либо для каждого элемента документа (either), либо ни для чего (none). Объяснить смысл каждого переключателя в общем виде я несколько затрудняюсь, но на практике смысл их для каждой конкретной команды обычно достаточно прозрачен.

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

Следующая ниже группа переключателей при установке в положение On предписывает:

  • замещать элемент ввода элементом вывода (Output replace input);
  • сохранять текущий файл перед выполнением команды (Save file before executing command);
  • перечитывать его после выполнения команды (Re-load file after execute command).

Определившись и с этим, можно непосредственно задавать команду вместе со всеми требуемыми параметрами и их значениями. Это делается в поле ввода команды (Shell Command to Execute), точно так же, как в командной строке консоли или терминального окна.

Однако можно и набрать команду непосредственно в поле редактирования NEdit, после чего просто скопировать ее (с помощью мыши или клавишных комбинаций) в поле ввода команды. Преимущество последнего способа в том, что предварительно (с помощью меню Shell - Execute Command Line) можно проверить работоспособность команды, поскольку она запускает на выполнение ту строку текущего файла, на которой зафиксирован курсор (разумеется, если эта строка имеет смысл и синтаксически правильна). В противном случае в теле документа автоматически появится сообщение об ошибке. Например:

netscape An error occurred running /usr/lib/netscape/netscape-communicator.


Или даже полная справка по использованию команды, как в случае

ispell Usage: ispell [-dfile | -pfile | -wchars | -Wn | -t | -n | -x | -b | -S | -B | -C | -P | -m | -Lcontext | -M | -N | -Ttype | -V] file

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

Завершив создание новой команды, принимаем введенные изменения (при помощи экранной кнопки Apply) или выходим из режима редактирования Shell, нажав OK. Затем, проверив правильность созданной команды, сохраняем ситуацию (через Save Defaults) для использования в дальнейшем.

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


Содержание раздела