Можно ли настроить стиль отступа XCode? - PullRequest
20 голосов
/ 24 июня 2009

Например, я бы не хотел делать отступы для пространств имен в коде C ++, но в prefpane, похоже, нет места для принятия решения об этой детализации. Есть какой-то скрытый файл конфигурации или что-то? Или мне просто не повезло?

Ответы [ 6 ]

9 голосов
/ 24 июня 2009

Документация Apple XCode содержит полный список пользовательских настроек , многие из которых не имеют соответствующего пользовательского интерфейса. Однако я не вижу ничего специфичного для пространства имен, поэтому думаю, что вам может не повезти.

Однако я подумал, что передам список предпочтений, если он будет полезен.

6 голосов
/ 05 ноября 2014

Поскольку индентор XCode использует только лексер, а не AST, вы можете «обмануть» форматирование, определив фигурные скобки.

У меня есть:

#define NAMESPACE_OPEN(_name) namespace _name {
#define NAMESPACE_CLOSE(_name) }

#define dsmsg_namespace_open NAMESPACE_OPEN(dsmsg)
#define dsmsg_namespace_close NAMESPACE_CLOSE(dsmsg)

То есть, общее определение 'NAMESPACE_OPEN / CLOSE' и определение, характерное для моего наиболее часто используемого пространства имен 'dsmsg'. Затем, когда я хочу открыть пространство имен, я использую

dsmsg_namespace_open

... code ...

dsmsg_namespace_close

Гадкий хак, но мне очень нравится иметь определенный, названный 'close'

6 голосов
/ 05 сентября 2010

Я тоже пытался это сделать.

Ответ таков: кто бы ни занимался форматированием кода в XCode, он, похоже, совершенно не знает, что существуют языки, отличные от Objective C, или стили кодирования, отличные от Apple.

Вот список того, что можно сделать, чего нельзя сделать в XCode.

  1. Отступ публичный: или частный: только один пробел.
  2. Отступы пространства имен без пробелов.
  3. Альтернативный отступ для аргументов, НЕ относящихся к открывающей скобке.

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

someExcitingClass->AVeryLongMethodNameTraLaLaLaLa(
    someLongExpressionOrVariableNameGoesHere,
    anotherNameHere);

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

Это ужасный позор, и я действительно понятия не имею, что делать. Я лично пишу в emacs и только окунусь в XCode как систему сборки, но :-D это не для всех.

5 голосов
/ 24 июня 2009

Я вообще игнорирую отступы XCode и у меня есть скрипт пользователя, который вызывает uncrustify для отображаемого в данный момент документа.

#!/bin/sh
#echo -n "%%%{PBXSelection}%%%"
uncrustify -q -c ~/.uncrustify/sample.cfg -l oc+
#echo -n "%%%{PBXSelection}%%%"

Примечания:

  • некрутизация должна быть в вашем ПУТИ
  • вам может потребоваться настроить местоположение вашего конфигурационного файла
  • если вы хотите, чтобы новый код был выбран в Xcode, раскомментируйте два оператора echo (это также можно использовать для создания сценария «Выбор формата» вместо «Форматировать все»

Настройки скрипта:

  • Ввод: весь документ
  • Каталог: Домашний каталог
  • Вывод: заменить содержимое документа
  • Ошибки: отображение в предупреждении
4 голосов
/ 21 марта 2012

Начиная с Xcode 4.3.1, пользовательские опции отступа для пространства имен недоступны, однако я преодолел это раздражение, перейдя в «Настройки» -> «Редактирование текста» -> «Отступ» и отключив «Отступ с учетом синтаксиса».

3 голосов
/ 26 января 2012

Другая возможность - использовать Articstic Style (astyle). Учебное пособие по интеграции astyle в XCode с использованием автоматизатора и сервисов можно найти здесь: http://eatmyrandom.blogspot.com/2011/03/xcode-astyle-part-2-for-xcode-4x.html и http://youtu.be/d8bbE6_OHGc

...