AppleScriptやJavaScript for Automation(JXA)を使って、書類の作成や編集、選択範囲の操作、エディタウインドウの制御など、CotEditorのさまざまな作業を自動化できます。このページでは、CotEditorが提供するスクリプトインターフェイスについて、利用できるクラスやコマンドを説明します。
CotEditorは、システム標準のスクリプティング用語に加えて、独自のクラスやコマンドを提供しています。これにより、スクリプトからCotEditorの書類や機能をより直接的に操作できます。また、特定のイベントに応じてスクリプトを自動的に実行するためのスクリプトフックも利用できます。詳しくは、特定のイベントでスクリプトを実行するを参照してください。
CotEditorにおけるAppleScriptサポートの仕様は、スクリプトエディタのライブラリでも確認できます。用語解説を開くには次のようにします:
MacでCotEditorアプリ
に移動します。
「ヘルプ」>「CotEditorスクリプトガイド」>「AppleScript用語説明」と選択します。
CotEditorでのAppleScript対応のバージョン履歴については、AppleScriptで異なるバージョンのCotEditorに対応するを参照してください。
クラス
documentCotEditor書類
contents:
書類の内容テキスト(text型)
text:
書類の内容テキスト(text型)
editable:
書類が編集可能かどうか(boolean型)CotEditor 5.1で追加
CotEditor 4.4で廃止length:
書類のUTF-16単位の字数(int型)
selection:
書類の選択内容オブジェクト(text selection型)
encoding:
テキストエンコーディング(text型)
IANA charset:
テキストエンコーディングのIANA charset名(text型、Shift_JIS, EUC-JPなど)
has BOM:
テキストエンコーディングでBOMがあるかどうか(boolean型)CotEditor 4.1で追加
line ending:
改行コード(CR / LF / CRLF / NEL / LS / PS)
tab width:
スペース幅換算のタブ幅(int型)CotEditor 2.1で追加
expands tab:
タブをスペースに展開するかどうか(boolean型)
wrap lines:
折り返しているかどうか(boolean型)
coloring style:
シンタックス(text型)
クラス
folder documentCotEditorフォルダ書類
current document:
現在表示されている書類(document型)
フォルダを開いた書類はfolder documentクラスとして扱われ、current documentプロパティからフォルダ書類で現在開いている書類を取得できます。さらに、folder documentに対して直接送ったdocumentのAPIは、そのままcurrent documentを対象に実行されます。ただし、current documentが存在しない場合、documentを対象とするコマンドはエラーになります。
以下の2つのコマンドは同じ結果になります。
if front document is folder document then
set theDocument to front document's current document
else
set theDocument to front document
end if
tell theDocument
set theText to contents of selection
end tell
tell front document
set theText to contents of selection
end tell
クラス
text selection選択部分オブジェクト
contents:
選択内容テキスト
range:
文字単位での選択位置({location, length}の型)
line range:
行単位での選択位置({location, length}の型、length省略可。また、lengthは0でも1でも、1行を選択する)
contents of selection of document 1
set contents of selection of front document to "Apple"
range of selection of front document
set range of selection of front document to {1, 12}
set line range of selection of front document to 10
set range of selection of front document to {-15, -1}
「selection」は単独では意味を持ちません。contentsなどのプロパティとともに使用します。
CotEditor 5.0以降、文字はUnicode書記素クラスタ単位でカウントします。これはAppleScript 2.0の仕様と同一です。
locationが負のとき、対象書類のテキストの後ろから数えてlocation番目から始まる範囲となります。lengthが対象書類のテキストの長さを超えて入力された場合、末尾までが範囲となります。lengthが負のとき、指定される範囲は対象書類のテキストの後ろから数えてlength文字までとなります。もし、lengthの絶対値がlocationよりも小さい(locationよりも前に終了位置がある)場合には、locationが優先されlocation位置に挿入ポイントが移動します({location, 0}が入力されたのと同じ)。
この指定方法はPHPのsubstrのそれにならっています。
選択位置を変える命令だけでは画面のスクロールは行われません。選択位置を見えるようにするにはscroll to caretコマンドかjumpコマンドを使用します。
コマンド
write to consoleテキストをCotEditorのコンソールウインドウに表示します。
[title (boolean)]:
スクリプト名を表示するか (CotEditor 5.0.7で追加)
[timestamp (boolean)]:
タイムスタンプを表示するか (CotEditor 5.0.7で追加)
write to console "Script failed."
write to console "calculating…" without title and timestamp
コマンド
find検索し、対象テキストがあれば選択状態にしてtrueを返します。見つからなければfalseを返します。
for (text):
検索対象テキスト
[RE (boolean)]:
正規表現検索か
[wrap (boolean)]:
ラップサーチか
[ignore case (boolean)]:
大文字/小文字を無視するか
[backwards (boolean)]:
後ろから検索するか
documentオブジェクトfind front document for "Apple" with ignore case
検索は、現在の挿入ポイントの位置を基準に行われます。例えば、wrapやbackwardsが指定されていなかったとき、選択位置以降に対象テキストがないときは、falseを返します。
RE(正規表現検索)のときは、backwards(後方からの検索)ができません。同時に指定されたときは、REが優先され、backwardsは無視されます。
コマンド
replace検索し、対象テキストがあれば置換して置換された回数を返します。見つからなければ0を返します。
for (text):
置換対象テキスト
to (text):
置換後のテキスト
[all (boolean)]:
書類全体を対象とするか
[RE (boolean)]:
正規表現検索か
[wrap (boolean)]:
ラップサーチか
[ignore case (boolean)]:
大文字/小文字を無視するか
[backwards (boolean)]:
後ろから検索するか
documentオブジェクトreplace front document for "Apple" to "Orange" with all and ignore case
find同様、命令実行前の挿入ポイントの位置を基準に置換が行われます。書類全体を対象に実行するときはallを指定します。
allオプションを付けて書類全体を対象に実行され置換が行われたとき、実行後の挿入ポイントの位置は書類の先頭になります。ただし、対象テキストが見つからなかったときは挿入ポイントの位置は変更されません。
RE(正規表現検索)のときは、backwards(後方からの検索)ができません。同時に指定されたときはREが優先され、backwardsは無視されます。
コマンド
scroll to caret挿入ポイントが見えるようにスクロールします。
documentオブジェクトscroll to caret front document
コマンド
jump指定した行に挿入ポイントを移動しその部分が見えるようにスクロールします。
to line (int):
移動先の行番号
[column (int)]:
移動先の(行内の)列番号
documentオブジェクトjump front document to line -1
行番号や列番号に負の数が指定されたときは、最終行(文字)から数えた位置に移動します。
コマンド
convert書類のテキストエンコーディングを変換します。
to (text):
新しいテキストエンコーディング(ローカライズされたエンコーディング名かIANA charset名で指定)
[lossy] (boolean):
エンコーディング適用によって一部のテキストが失われても良いか
[BOM] (boolean):
エンコーディングにBOMを付けるかどうか (CotEditor 4.1で追加)
documentオブジェクトconvert front document to "Unicode (UTF-8)" with BOM without lossy
CotEditor 4.0.7以降は、新しいテキストエンコーディングの指定にIANA charset nameも使えます。
コマンド
reinterpret書類を指定されたエンコーディングでファイル内容を再解釈します。
as (text):
新しいエンコーディング(ローカライズされたエンコーディング名かIANA charset名で指定)
documentオブジェクトreinterpret front document as "Japanese (EUC)"
書類そのものが未保存の場合は、falseを返します。
保存されていない変更部分は失われます。
CotEditor 4.0.7以降は、新しいエンコーディングの指定にIANA charset nameも使えます。
コマンド
shift left選択位置のある行を左にシフトします。
selectionオブジェクトコマンド
shift right選択位置のある行を右にシフトします。
selectionオブジェクトshift right selection of front document
コマンド
comment out選択範囲にコメント記号をつけてコメント化します。
selectionオブジェクトcomment out selection of front document
現在のシンタックスにコメント記号が設定されていない、選択範囲にコメント記号がないなど、コマンドが実行できないときは何も行いません。
コマンド
uncomment選択範囲のコメント記号を取り去りコメント解除をします。
selectionオブジェクト現在のシンタックスにコメント記号が設定されていない、選択範囲にコメント記号がないなど、コマンドが実行できないときは何も行いません。
コマンド
string選択範囲に関係なく、書類中の指定された範囲のテキストを返します。
in (list):
範囲({location, length}の型、lengthは0以上)
documentオブジェクトstring front document in {0, 10}
無効な範囲を指定した場合は、エラーを返します。
このコマンドは指定された選択範囲を変更しません。
コマンド
change case大文字、小文字、または語頭を大文字に置き換えます。
to upper / lower / capitalized:
置き換えるスタイル
selectionオブジェクトchange case selection of front document to upper
対象にできるのは`selection`オブジェクトだけです。
コマンド
change roman width英数テキストを半角または全角に変換します。
to half / full:
置き換えるスタイル
selectionオブジェクトchange roman width selection of front document to full
コマンド
smarten quotesまっすぐな引用符をカールした引用符に変換します。
selectionオブジェクトsmarten quotes selection of front document
コマンド
straighten quotesカールした引用符をまっすぐな引用符に変換します。
selectionオブジェクトコマンド
smarten dashes連続したハイフンをダッシュ記号に変換します。
selectionオブジェクトsmarten dashes selection of front document
コマンド
normalize unicodeUnicode正規化を行います。
to NFKC / NFD / NFC / NFKD / NFKC Casefold / Modified NFC / Modified NFD:
正規化方式
selectionオブジェクトnormalize unicode selection of front document to NFC
コマンド
move line up選択行を一つ上の行と入れ替えます。
selectionオブジェクトコマンド
move line down選択行を一つ下の行と入れ替えます。
selectionオブジェクトコマンド
sort lines選択範囲の行を昇順に並び替えます。
selectionオブジェクトコマンド
reverse lines選択範囲の行を逆順にします。
selectionオブジェクトコマンド
delete duplicate line選択行に含まれる重複行を削除します。
selectionオブジェクト