Как получить вывод пользовательского скрипта Xcode для автоматического отступа?

Проблема

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

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1 to:date2 intoMOC:mockRawMOC];

в многострочный оператор:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1
                                                         to:date2
                                                    intoMOC:mockRawMOC];

Что я пробовал

У меня есть простой рубиновый скрипт, который почти доводит меня до цели.

#!/usr/bin/env ruby
s = STDIN.read
s.gsub!(/(:.+?\w) (\w.+?)/,'\1' + "\n\t" +'\2')
print s

Когда я устанавливаю вывод на «Заменить выделение», я получаю следующее:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1
     to:date2
     intoMOC:mockRawMOC];

Когда я устанавливаю вывод «Поместить в буфер обмена», а затем вставляю его, я получаю желаемый результат:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1
                                                         to:date2
                                                    intoMOC:mockRawMOC];

Однако это два нажатия клавиш, что неуклюже.

Любые идеи, как я могу заставить замененный текст подчиняться правилам автоматического отступа Xcode?


person John Gallagher    schedule 03.04.2010    source источник


Ответы (1)


Проверьте предварительно установленный скрипт на предмет «Преобразование табуляции в пробелы» и то, как он выполняет встроенный скрипт Apple. Используйте это, чтобы указать XCode выполнить пункт меню

Правка > Формат > Повторный отступ

Я не уверен, как вы это делаете с ruby, и не знаю подробностей о содержимом applescript, но я бы поспорил, что это довольно прямолинейно.

person ohhorob    schedule 04.04.2010
comment
Спасибо за предложение. Я могу заставить Xcode изменить отступ через Applescript, но, поскольку он выполняется до выделения, он не имеет никакого эффекта. Думаю, мне пока придется жить с отступами мусора. - person John Gallagher; 05.04.2010