是否可以自定义XCode的缩进样式?

时间:2009-06-23 21:32:16

标签: c++ xcode formatting coding-style

例如,我不想在C ++代码中缩进名称空间,但是prefpane似乎没有任何地方可以决定这种粒度。有一些隐藏的配置文件或什么?或者我只是运气不好?

6 个答案:

答案 0 :(得分:9)

Apple的XCode文档包含full list of user preferences,其中许多没有相应的UI。我没有看到任何特定于命名空间的内容,所以我认为你可能会运气不好。

但是,我认为如果它有用,我会传递首选项列表。

答案 1 :(得分:6)

我也尝试过这样做。

答案是,在XCode中进行代码格式化的人似乎完全没有意识到除了Objective C之外还有其他语言,或者除了Apple之外的编码样式。

以下列出了人们希望在XCode中无法完成的事情。

  1. 缩进公共:或私人:只有一个空格。
  2. 缩进命名空间零空格。
  3. 参数的替代缩进,而不是相对于左括号。
  4. 最后一个需要一点讨论。有时,函数或方法名称可能很长,也可能是第一个参数,因此您也希望能够像这样缩进:

    someExcitingClass->AVeryLongMethodNameTraLaLaLaLa(
        someLongExpressionOrVariableNameGoesHere,
        anotherNameHere);
    

    当然,您可能希望提取子表达式以缩短行,但在实际代码中,这一直是出现的,并且创建子表达式只是为了使所有内容都适合合理的行长度是令人讨厌的。

    这是一个可怕的耻辱,我真的不知道该怎么做。我个人用emacs写作,只是作为一个构建系统进入XCode,但是:-并不适合所有人。

答案 2 :(得分:6)

由于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'

答案 3 :(得分:5)

我完全绕过Xcode的缩进,并在当前显示的文档上有一个调用uncrustify的用户脚本。

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

注意:

  • uncrustify必须在你的PATH中
  • 您可能需要调整配置文件的位置
  • 如果您想在Xcode中选择新代码,请取消注释两个echo语句(这也可用于制作“格式选择”脚本,而不是“全部格式化”

脚本设置:

  • 输入:整个文档
  • 目录:主目录
  • 输出:替换文档内容
  • 错误:以警告显示

答案 4 :(得分:4)

从Xcode 4.3.1开始,没有自定义命名空间缩进选项可用,但是我通过导航到Preferences-> Text Editing->缩进并禁用“语法感知缩进”克服了这种烦恼。

答案 5 :(得分:3)

另一种可能性是使用艺术风格(astyle)。可以在此处找到如何使用自动机和服务将astyle集成到XCode的教程:http://eatmyrandom.blogspot.com/2011/03/xcode-astyle-part-2-for-xcode-4x.htmlhttp://youtu.be/d8bbE6_OHGc