SAS EG Editor Macro для выполнения операции над каждой строкой выделения - PullRequest
1 голос
/ 29 мая 2019

Я использую функцию «Макросы редактора», которая является частью программного обеспечения SAS Enterprise Guide. Я написал небольшой макрос для переформатирования строки, удалив запятую в конце и переместив ее вперед (с двумя отступами перед ней). Я хотел бы улучшить это, выполнив это переформатирование для всех строк в выделении. Я надеялся повторить метод, который использует 'Ctrl' + '/', но я не смог найти никакой документации для него.

Текущий фрагмент, который работает для одной строки, приведен ниже.

Move caret to end of line
Delete previous character
Move caret to beginning of line
Indent selection
Indent selection
Insert character ('.')

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

Например, рассмотрим следующий кодовый блок.

proc sql;
create table EXAMPLE2 as select
variable1,
variable2,
variable3,
variable4
from EXAMPLE;
quit;

Приведенный выше макрос редактора при применении к первым трем переменным строкам приведет к следующему блоку кода.

proc sql;
create table EXAMPLE2 as select
    ,variable1
    ,variable2
    ,variable3
variable4
from EXAMPLE;
quit;

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

Также обратите внимание, что я не оставил бы вышеуказанный блок кода как есть - я бы переформатировал его вручную.

1 Ответ

0 голосов
/ 02 июня 2019

Вы пытались вместо этого использовать режим замены регулярных выражений редакторов?

Улучшенный редактор - это COM-объект. У COM-объекта есть макро-возможности, появившиеся в интерфейсе EG. EG не предоставляет дополнительного программного интерфейса или управления расширенным редактором. Пользовательская задача может быть написана в .NET и зарегистрирована как надстройка, задача будет иметь больший контроль над редактором или экземпляром редактора. Смотри https://communities.sas.com/t5/SAS-Enterprise-Guide/How-do-I-add-a-SAS-editor-control-to-my-Custom-Task-for-code/td-p/1895.

В статье говорится:

Вы можете просто использовать класс SAS.Tasks.Toolkit.Controls.SASTextEditorCtl.

и имеет ссылки на множество дополнительных ресурсов.

...