Xcode 8.3.3 C++ 中的错误语法突出显示

Xcode 8.3.3 Bad Syntax Highlighting in C++

我注意到一些相当特殊的语法突出了不一致之处。 classifelsewhilebreak 关键字由于某种原因没有着色。即使在更改颜色主题并重新启动 Xcode 后,此问题仍然存在。我正在使用 Civic 主题,它是 Xcode 中的默认主题之一。该问题似乎是特定于语言的,因为这只发生在 C++ 中,而 objective-c 或 Python.

则不会。

我找到了一个远非理想的解决方案,从它的外观来看,它似乎是一个 Xcode 错误。

  1. 打开Preferenceswindow
  2. 转到 Locations 选项卡
  3. 单击 /Users/Library/Developer/Xcode/DerivedData
  4. 旁边的箭头
  5. 转到User Data
  6. 转到FontAndColorThemes
  7. 用Xcode

    打开任何.xccolortheme文件
    <key>xcode.syntax.identifier.class</key>
    <string>0.115602 0.660894 0.635056 1</string>
    <key>xcode.syntax.identifier.class.system</key>
    <string>0.221291 0.537118 0.556094 1</string> # change this line
    
    <key>xcode.syntax.identifier.function</key>
    <string>0.115602 0.660894 0.635056 1</string>
    <key>xcode.syntax.identifier.function.system</key>
    <string>0.221291 0.537118 0.556094 1</string>
    

xcode.syntax.identifier.class.system 的颜色代码与 xcode.syntax.identifier.function.system 的颜色代码不同,这导致 class 关键字未被着色。所以解决方案是让它们相同。对所有其他关键字执行相同的操作。

出于某种我无法理解的原因,为单一颜色主题更改该行会自动修复所有颜色主题的此错误。此外,我还没有弄清楚为什么这个错误是特定于 C++ 的语言。尽管如此,该解决方案仍然有效。