ObjecTips

Swift & Objective-C で iOS とか macOS とか

Xcode の Fonts & Colors その2

これの続き

Xcode の Fonts & Colors の設定画面にプリインストールされているテーマファイルは plist形式の .xccolortheme ファイルで、以下の場所に内蔵されている。
/Applications/Xcode.app/Contents/OtherFrameworks/XcodeEdit.framework/Resources/<NAME>.xccolortheme

ここには Default, Presentation Large, Print 以外の以下ものが入っている。

  • Bare.xccolortheme
  • Basic.xccolortheme
  • Dusk.xccolortheme
  • Low Key.xccolortheme
  • Midnight.xccolortheme
  • Presentation.xccolortheme
  • Spartan.xccolortheme
  • Sunset.xccolortheme

また、プリインストールの設定を編集か複製をすると plist形式の .dvtcolortheme ファイルが以下に作成される。
~/Library/Developer/Xcode/UserData/FontAndColorThemes/<NAME>.dvtcolortheme

.xccolortheme ファイルと .dvtcolortheme はどちらも plist形式だが中身は異なっている。

xccolortheme

例えば Basic.xccolortheme の中身は以下

Colors と Fonts の中でそれぞれ色とフォントが指定されている。 ここには全ての設定は記述されていない。例えば Basic.xccolortheme の場合、色に関しては BackgroundInsertionPoint のみ。フォントに関しては xcode.syntax.plain 用のフォントのみの指定がされている。
指定の無いものはデフォルト設定から引き継がれるものと思われる。

xcode.syntax.xxxx というキーで syntax のどの箇所にどの色とフォントを使用するかの指定が行われている。syntax 内にどのような区分けが存在するかは
/Applications/Xcode.app/Contents/OtherFrameworks/XcodeEdit.framework/Resources/<NAME>.xclangspec
というファイルで定義されている。
Xcode 6.3 の時点では以下の xlangspec が内蔵されている。

Ada, ARMAsm, BaseSupport, C, C++, csh, CSS, DTrace, Dylan, Fortran, GLSL, html, IntelAsm, Interfacer, Jam, Java, JavaScript, llvm, Make, man, NQC, ObjectiveC, ObjectiveC++, OpenCL, Pascal, Perl, PHP, plist, PPCAsm, Python, Rez, Ruby, sh, xcconfig, xclangspec, xcsynspec, xctxtmacro, XML

Swift が入っていないけど Swift はまた別の場所に定義ファイルがあるんだろうか。

dvtcolortheme

Basic の設定を編集すると作られる .dvtcolortheme の中身は以下

以下のキーで設定可能な色とフォントが全て指定されている。
*エディタの背景色は DVTSourceTextBackground というキーで、法則的には BackgroundColor となるのが正しいがこの一箇所のみ例外として Color が付いていない。

Colors Fonts
DVTConsoleDebuggerXXXXColor DVTConsoleDebuggerXXXXFont
DVTConsoleExectuableXXXXColor DVTConsoleExectuableXXXXFont
DVTSourceTextXXXXColor DVTSourceTextXXXXFont
DVTSourceTextSyntaxColors DVTSourceTextSyntaxFonts

DVTSourceTextSyntaxColors DVTSourceTextSyntaxFonts キーの中は辞書になっていて、xcode.syntax.xxxx で該当の箇所への色とフォントの指定を行っている。

xcsynspec

Built-in Syntax Types.xcsynspec というのが Xcode に内蔵されている。場所は以下
/Applications/Xcode.app/Contents/OtherFrameworks/XcodeEdit.framework/Resources/Built-in Syntax Types.xcsynspec

このファイルには syntax の identifier とそのデフォルト色、項目が Xcode の設定画面に表示されるか、Xcode の設定画面での表示名、Project Builder (旧Xcode) での UserDefaults のキー名、フォント指定可能か、など内部のいろいろな設定についての記述がある。