CotEditor

CotEditor 7.0での重要な変更

注記: ここに記載の内容は、CotEditor 7.0.0のプレリリース版を元に作成されています。正式版のCotEditor 7では内容が変更される場合があります。

2026年リリースのCotEditor 7.0.0で、シンタックス定義の仕様が改訂されました。従来は.yml拡張子を持つYAMLフォーマットでしたが、新しいフォーマットは独自の.cotsyntax拡張子を持つパッケージ方式のファイルになりました。

CotEditorに内蔵されている70種類のシンタックスは、すべてこの新しいフォーマットに移行しています。また、過去にユーザが作成したカスタムシンタックスについても新しいフォーマットへ自動的に移行されるので、基本的にはユーザは何も気にせずにすぐにCotEditor 7を使い始められます。

一方で、CotEditor 7はシンタックス定義のフォーマット改訂のみでなく機能の改良も多く含むので、カスタムシンタックスでCotEditor 7の機能を十分に活かすには、シンタックス定義の調整が必要になる場合があります。そこで、このページでは、カスタムシンタックスを作成しているユーザ向けに、CotEditor 7でのシンタックス定義の変更について解説します。

CotEditor 7.0.0 のリリースノート

新フォーマットへの移行

ユーザが作成したカスタムシンタックスは、CotEditor 7の初回起動時に新しいフォーマットへ自動的に移行されます。それに対して、CotEditorに内蔵されているシンタックスのカスタマイズについては、その内容は一度クリアされCotEditor 7には引き継がれません。必要に応じて再度設定してください。

ヒント: 今までのカスタムシンタックスは、「~/Library/Containers/com.coteditor.CotEditor/Data/Library/Application Support/CotEditor/Syntaxes (Legacy, before 7.0)」フォルダに残されます。CotEditor 7以降はこれらのファイルは使わないので、必要がなければ削除しても構いません。

注記: ベータ期間中は、移行されたシンタックスは通常のSyntaxesフォルダではなく、仮の「Syntaxes (Upcoming 7.0)」フォルダに保存されます。このフォルダは正式版のリリース時に削除され、移行されたシンタックスは通常のSyntaxesフォルダに配置されます。

正規表現方式とtree-sitter方式

CotEditor 7では、内蔵シンタックスのうち下記の22種類に限り、シンタックスのパースに汎用パーサであるtree-sitterを使用するようになりました:

tree-sitter対応シンタックス
C、C#、C++、CSS、Go、HTML、Java、JavaScript、Kotlin、LaTeX、Lua、Makefile、Markdown(アウトライン抽出のみ)、PHP、Python、Ruby、Rust、Scala、Shell Script、SQL、Swift、TypeScript

上記以外の内蔵シンタックスやユーザが作成するカスタムシンタックスでは、従来のパターンマッチングによる正規表現ベースのパース方式が使われます。

tree-sitterによるハイライトやアウトライン抽出のルールはアプリによって管理されているため、これらの機能に関しては、ユーザがカスタマイズしたり、別のシンタックスにtree-sitter対応を追加したりすることはできません。一方で、正規表現ベースのシンタックスはハイライトルールやアウトライン抽出パターンのカスタマイズができ、シンタックスエディタで、内蔵シンタックスを調整したり、新しいシンタックスを一から作成したりできます。

区切り文字の定義

CotEditorでは、コメントや文字列の区切り文字("…"など)については通常のパターンマッチングと別方式でパースすることで、文字列の内部にコメント開始記号が含まれるような入れ子関係の状況でも正しくハイライトできるようにしていました。CotEditor 7ではこの仕組みを強化し、区切り文字については専用の定義を設けることでより破綻の少ないパースを実現します。

また、この区切り文字定義は、シンタックスハイライトのほかに、コメントアウトコマンドや自動インデントなどテキスト編集中のエディタの振る舞いでも参照されます。

シンタックスエディタに新設された「区切り文字」のペインで、これらの定義が編集できます。

コメント記号

従来のCotEditorは、コメント記号として、各シンタックスにインラインコメント・ブロックコメントそれぞれ1種類のコメント記号しか登録できませんでした。CotEditor 7では、複数のコメント記号を追加できるようになりました。

また、インラインコメントには「行頭のみ」、ブロックコメントには「ネスト」という新しいオプションも追加されています。シンタックスの文法に合わせてこれらのオプションを適切に設定することで、より破綻の少ないハイライトを実現できます。

インデント

CotEditorには、改行した行のインデントに合わせて次の行のインデントを調整する「入力中に自動でインデント」というオプションがあります。従来はシンタックスに関わらず「:」や「{」の直後の改行で自動的に次の行のインデントレベルを一つ上げていました。CotEditor 7では、インデントの「ブロック区切り」を設定することで、インデントのレベルを変更するトークンをシンタックスごとに設定できるようになりました。

暗黙の区切り文字考慮の廃止

従来のCotEditorでは、シンタックスハイライトの定義から区切り文字相当の定義を自動で選別してハイライトに使用していましたが、新しい方式ではこの暗黙の区切り文字抽出は実施されなくなりました。また、従来は、すべてのシンタックスで一貫して「\」(バックスラッシュ)をエスケープ記号として扱っていましたが、この暗黙のエスケープも廃止し、文字列・文字区切りごとに明示的に指定したエスケープ文字のみを使用します。

したがって、文字列や文字、コメント記号などの入れ子構造を考慮したハイライトをしたい場合は、この区切り文字の定義を活用してください。なお、従来のシンタックス解析で「区切り文字のような定義」と判断されていた定義については、CotEditor 7でのカスタムシンタックスの移行時に、自動的にこの新しい区切り文字定義に定義を移す処理をしています。

アウトライン抽出

アウトライン抽出ルールに「種類」というオプションが追加されました。抽出したアウトライン項目に種類に応じたアイコンが付けられるようになったほか、一部の項目種類ではアウトラインの折りたたみが可能になります。

アウトラインの階層化

CotEditor 7では、tree-sitter方式のシンタックスではアウトラインが階層化され、アウトラインメニューで折り畳みができるようになりました。一方、ユーザがカスタマイズできる正規表現方式では、この機能は、アウトライン項目の種類がレベル付きの「見出し」のときに限定して有効になります。レベル付きの見出しとして定義したアウトライン項目はパーサが自動でインデントを追加するので、抽出ルールの「表示パターン」にインデントを含める必要はありません。

アウトライン項目のスタイル指定の廃止

従来のCotEditorでは、アウトライン項目ごとに太字やアンダーラインなどの表示スタイルを設定することができましたが、CotEditor 7ではこの機能は廃止されました。「種類」オプションが「コンテナ」か「マーク」のときのみ、自動的に太字になります。

正規表現ベースのハイライトの定義

パターンマッチングルールに新たに「複数行」というオプションが追加されました。これが有効なときは、改行を含み複数行にまたがる一致のハイライトを許容します。デフォルトはオフです。