例如,我不想在C++代码中缩进名称空间,但是prefpane似乎没有任何地方可以决定这种粒度.有一些隐藏的配置文件或什么?或者我只是运气不好?
Apple的XCode文档包含用户首选项的完整列表,其中许多没有相应的UI.我没有看到任何特定于命名空间的内容,所以我认为你可能会失败.
但是,我认为如果它有用,我会传递首选项列表.
我也尝试过这样做.
答案是,无论谁在XCode中格式化代码似乎是完全不知道有其他语言比目标C,比苹果的其他编码风格.
这是一个人们希望在XCode中无法完成的事情列表.
缩进公共:或私人:只有一个空间.
缩进命名空间零空间.
参数的替代缩进不是相对于左括号.
最后一个需要一点讨论.有时,函数或方法名称可能很长,以及它的第一个参数,所以你也希望能够像这样缩进:
someExcitingClass->AVeryLongMethodNameTraLaLaLaLa( someLongExpressionOrVariableNameGoesHere, anotherNameHere);
当然,您可能希望提取子表达式以使线条更短,但在实际代码中,这一直出现,并且创建子表达式以使所有内容适合合理的线长度是令人讨厌的.
这是一个可怕的耻辱,我真的不知道该怎么做.我个人用emacs写作,只是作为一个构建系统进入XCode,但是:-并不适合所有人.
由于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'
我完全绕过了Xcode的缩进,并且有一个用户脚本在当前显示的文档上调用uncrustify。
#!/bin/sh #echo -n "%%%{PBXSelection}%%%" uncrustify -q -c ~/.uncrustify/sample.cfg -l oc+ #echo -n "%%%{PBXSelection}%%%"
笔记:
难解之谜必须在您的PATH中
您可能需要调整配置文件的位置
如果要在Xcode中选择新代码,请取消注释两个echo语句(也可以用于创建“格式选择”脚本,而不是“全部格式化”脚本)
脚本设置:
输入:整个文件
目录:主目录
输出:替换文档内容
错误:显示在警报中