Xcode 4 с открывающей скобкой на новой линии - PullRequest
25 голосов
/ 25 февраля 2011

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

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

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

Ответы [ 6 ]

29 голосов
/ 23 апреля 2011

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

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

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

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

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

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

  1. В XCode 4 встроено 44 фрагмента кода, и вам придется редактировать каждый по отдельности.
  2. 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 голосов
/ 22 апреля 2011

Нет способа сделать это в Xcode 4. Пожалуйста, сообщите об ошибке .

2 голосов
/ 24 января 2014

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

2 голосов
/ 09 марта 2012

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

/ Применения / Xcode.app / Содержание / Plugins / IDECodeSnippetLibrary.ideplugin / Содержание / Ресурсы / SystemCodeSnippets.codesnippets

Лесли

2 голосов
/ 12 октября 2011

Проверьте мои измененные (общесистемные) фрагменты для Xcode 4.2 здесь:

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

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

2 голосов
/ 21 июня 2011

Просто создайте код пользователя, который переопределяет версию Apple.Сделайте это, введя в поле ярлыка завершения то же имя, что и во фрагменте по умолчанию.Посмотрите это видео, чтобы узнать, как это сделать: http://s3.amazonaws.com/screencasts.pragmaticstudio.com/017_custom_code_snippets.mov

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...