Подтвердить что ты не робот

Xcode 4 с открывающейся скобой на новой линии

Кажется, что новый Xcode 4 больше не применяет XCCodeSenseFormattingOptions. По крайней мере для меня: (

В любом случае, знаете ли вы, как положить открытую фигуру в новую строку для автозаполнения в Xcode 4? Я использовал для ввода этого терминала, но он не работает для нового Xcode.

defaults write com.apple.Xcode XCCodeSenseFormattingOptions -dict BlockSeparator "\\n" PreMethodDeclSpacing ""
4b9b3361

Ответ 1

XCode 4 использует "фрагменты кода" для выполнения автозаполнения и поставляется со встроенной библиотекой из них: вы можете просмотреть библиотеку фрагмента кода, щелкнув значок { } на панели библиотеки, который, вероятно, находится на нижнюю правую часть основного окна XCode.

Все встроенные фрагменты кода XCode 4 помещают открытую скобку в ту же строку, что и оператор - это фрагмент кода XCode 4 для оператора if, например:

if (<#condition#>) {
  <#statements#>
}

Итак, если вы хотите, чтобы XCode 4 автозаполнялся следующим образом:

if (<#condition#>) 
{
  <#statements#>
}

... тогда вам придется отредактировать фрагмент кода соответственно. Это, в свою очередь, приводит к двум проблемам:

  • В XCode 4 есть 44 фрагмента кода, и вам придется редактировать их отдельно.
  • XCode 4 не позволит вам редактировать встроенные фрагменты кода.

Эти проблемы более сложны, чем простая команда defaults write, работающая в XCode 3, но это возможно, если вы решились, и вы можете редактировать списки свойств, чтобы вникать в кишки XCode 4 и изменить этот код фрагменты по одному.

/Developer/Library/Xcode/PrivatePlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets содержит библиотеку XCode 4 встроенных фрагментов кода. Это, вероятно, само собой разумеется, но вы должны сделать резервную копию этого файла перед внесением изменений и внесением изменений, а затем вы должны сделать другую резервную копию и отделить копию файла с новыми и улучшенными фрагментами кода, поскольку вы будете почти наверняка перезаписывают содержимое /Developer/Library/Xcode при установке следующей версии XCode 4. (Также возможно, что Apple изменит формат этого файла, добавит новые фрагменты кода или сделает любое количество других вещей, которые могли бы отобразить этот ответ неактивный.)

Если у вас установлен Xcode 4.3 или более поздней версии непосредственно из App Store, все находится внутри пакета Xcode.app. Путь к SystemCodeSnippets.codesnippets - /Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets.

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

<dict>
    <key>IDECodeSnippetVersion</key>
    <integer>1</integer>
    <key>IDECodeSnippetCompletionPrefix</key>
    <string>if</string>
    <key>IDECodeSnippetContents</key>
    <string>if (&lt;#condition#&gt;) {
  &lt;#statements#&gt;
}</string>
    <key>IDECodeSnippetIdentifier</key>
    <string>D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D</string>
    <key>IDECodeSnippetLanguage</key>
    <string>Xcode.SourceCodeLanguage.C</string>
    <key>IDECodeSnippetSummary</key>
    <string>Used for executing code only when a certain condition is true.</string>
    <key>IDECodeSnippetTitle</key>
    <string>If Statement</string>
    <key>IDECodeSnippetCompletionScopes</key>
    <array>
        <string>CodeBlock</string>
    </array>
</dict>

Это фрагмент кода для автозавершения оператора if. Отредактируйте IDECodeSnippetContents, чтобы поместить открытую фигуру в новую строку, сохраните свою работу и перезапустите XCode 4; если все пойдет хорошо, вы можете ввести оператор if и посмотреть результаты.

Вам нужно будет сделать как минимум полдюжины дополнительных исправлений, чтобы охватить наиболее распространенные автозаполнения (for, while и т.д.), и если вы хотите быть тщательным, то потребуется около 40 отдельных редактирует. Это большая работа, но если вы действительно хотите, чтобы XCode 4 автоматически запустил ваши скобки на отдельной строке, это можно сделать.

Ответ 4

Ознакомьтесь с моими модифицированными (системными) фрагментами для Xcode 4.2 здесь:

http://forrst.com/posts/Put_that_where_it_belongs_Xcode-PNL

Он должен заботиться обо всех соответствующих фигурных скобках для разработки iOS.

Ответ 5

В Xcode 4.3.1, если вы отредактируете следующий файл как sudo с терминала, как описано выше, Скотт Форбс, вы можете изменить, где появится открывающая фигурная скобка. Я бы подумал, что уйдет с новыми установками Xcode, поэтому я бы проголосовал за то, что это тоже ошибка с Apple.

/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

Лесли

Ответ 6

Я использовал SnippetEdit для Xcode4, и он работает потрясающе. Это в основном позволяет вам заменять старые фрагменты, заданные xcode, на новые, определенные вами самим. Подробнее здесь: https://www.macupdate.com/app/mac/43352/snippet-edit