MacのCotEditorをAppleScriptで操作する

CotEditorはAppleScriptおよびJXA (JavaScript for Automation)をサポートしています。

以下で説明するCotEditorのクラス・コマンド以外にも、AppleScriptで標準的に実装されている語句を使用することができます。CotEditorにおけるAppleScriptサポートの詳細な仕様については、辞書ライブラリを参照してください。ライブラリを参照するにはCotEditor上で次のようにします:

また、スクリプトフックを使って特定のイベントで自動的にスクリプトを実行することができます。詳しくは「特定のイベントでスクリプトを実行する」を参照してください。

CotEditorでのAppleScriptサポートのバージョン履歴を確認するには、「AppleScriptで異なるバージョンのCotEditorに対応する」を参照してください。

クラス

CotEditorで独自に定義されているクラス・プロパティです。

Application

CotEditorアプリケーション

Window

CotEditorウインドウ

Document

CotEditor書類

プロパティ
contents
書類の内容文字列(text型)
text
書類の内容文字列(text型)
length
書類のUTF-16単位の字数(int型)CotEditor 4.4で廃止
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型)

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"
選択部分を「Apple」に置換する。
range of selection of front document
選択位置を{location, length}のリスト型で返す。
set range of selection of front document to {1, 12}
1文字目から12文字を選択状態にする。
set line range of selection of front document to 10
10行目を選択する。
set range of selection of front document to {-15, -1}
最後から15文字目から、最後から1文字目を残して選択。

詳細

「selection」は単独では意味を持ちません。contentsなどのプロパティとともに使用してください。

CotEditor 5.0以降、文字はUnicode書記素クラスタ単位でカウントします。これはAppleScript 2.0の仕様と同一です。

locationが負の場合、対象書類の文字列の後ろから数えてlocation番目から始まる範囲となります。
lengthが正である場合、指定される範囲はlocationから数えてlength文字数分となります。また、対象書類の文字列の長さを超えてlengthが入力された場合、末尾までが範囲となります。
lengthが負である場合、指定される範囲は対象書類の文字列の後ろから数えてlength文字までとなります。もし、lengthの絶対値がlocationよりも小さい(locationよりも前に終了位置がある)場合には、locationが優先されlocation位置に挿入ポイントが移動します({location, 0}が入力されたのと同じ)。

この指定方法はPHPのsubstrのそれにならっています。

選択位置を変える命令だけでは画面のスクロールは行われません。選択位置を見えるようにするためにはscroll to caretコマンドかjumpコマンドを使用してください。

コマンド

CotEditorで独自に定義されているコマンドです。
([]で囲まれたものはオプションです)

write to console

write to console
文字列をCotEditorのコンソールウインドウに表示する。
[title (boolean)]
スクリプト名を表示するか (CotEditor 5.0.7で追加)
[timestamp (boolean)]
タイムスタンプを表示するか (CotEditor 5.0.7で追加)

バージョン

CotEditor 3.2.0以降

write to console "Script failed."
「Script failed.」という文字列をコンソールで表示する。
write to console "calculating…" without title and timestamp
タイトルやタイムスタンプは表示せず「calculating…」という文字列のみをコンソールで表示する。

find

find
検索し、対象文字列があれば選択状態にしてtrueを返す。見つからなければfalseを返す。
for (text)
検索対象文字列
[RE (boolean)]
正規表現検索か
[wrap (boolean)]
ラップサーチか
[ignore case (boolean)]
大文字/小文字を無視するか
[backwards (boolean)]
後ろから検索するか
返り値
boolean型
対象
documentオブジェクト

find front document for "Apple" with ignore case
最前面の書類内の選択位置以降で「Apple」を大文字/小文字を無視して検索し、結果を返す。

詳細

検索は、現在の挿入ポイントの位置を基準に行われます。
例えば、wrapbackwardsが指定されていなかったとき、選択位置以降に対象文字列がない場合にはfalseを返します。

RE(正規表現検索)の場合は、backwards(後方からの検索)ができません。同時に指定された場合はREが優先され、backwardsは無視されます。

replace

replace
検索し、対象文字列があれば置換して置換された回数を返す。見つからなければ0を返す。
for (text)
置換対象文字列
to (text)
置換後の文字列
[all (boolean)]
書類全体を対象とするか
[RE (boolean)]
正規表現検索か
[wrap (boolean)]
ラップサーチか
[ignore case (boolean)]
大文字/小文字を無視するか
[backwards (boolean)]
後ろから検索するか
返り値
int型
対象
documentオブジェクト

replace front document for "Apple" to "Orange" with all and ignore case
最前面の書類内で「Apple」を大文字/小文字を無視して検索し、「Orange」に置換して置換した数を返す。

詳細

find同様、命令実行前の挿入ポイントの位置を基準に置換が行われます。書類全体を対象に実行するときはallを指定してください。

allオプションを付けて書類全体を対象に実行され置換が行われた場合、実行後の挿入ポイントの位置は書類の先頭になります。ただし、対象文字列が見つからなかった場合は挿入ポイントの位置は変更されません。

RE(正規表現検索)の場合は、backwards(後方からの検索)ができません。同時に指定された場合はREが優先され、backwardsは無視されます。

scroll to caret

scroll to caret
挿入ポイントが見えるようにスクロールする。
対象
documentオブジェクト

scroll to caret front document
挿入ポイントが見えるようにスクロールする。

jump

jump
指定した行に挿入ポイントを移動しその部分が見えるようにスクロールする。
to line (int)
移動先の行番号
[column (int)]
移動先の(行内の)列番号
対象
documentオブジェクト

バージョン

CotEditor 2.1.0以降

jump front document to line -1
最終行に挿入ポイントを移動しその部分が見えるようにスクロールする。

詳細

行番号や列番号に負の数が指定された場合は、最終行(文字)から数えた位置に移動する。

convert

convert
書類のテキストエンコーディングを変換する。
to (text)
新しいテキストエンコーディング(ローカライズされたエンコーディング名かIANA charset名で指定)
[lossy] (boolean)
エンコーディング適用によって一部の文字列が失われても良いか
[BOM] (boolean)
エンコーディングにBOMを付けるかどうか (CotEditor 4.1で追加)
返り値
boolean型
対象
documentオブジェクト

convert front document to "Unicode (UTF-8)" with BOM without lossy
Unicode (UTF-8)BOM付きに変換し、変換できたかどうかを返す。

詳細

CotEditor 4.0.7以降は、新しいテキストエンコーディングの指定にIANA charset nameも使えます。

reinterpret

reinterpret
書類を指定されたエンコーディングでファイル内容を再解釈する。
as (text)
新しいエンコーディング(ローカライズされたエンコーディング名かIANA charset名で指定)
返り値
boolean型
対象
documentオブジェクト

reinterpret front document as "Japanese (EUC)"
EUCで解釈し直し、解釈できたかどうかを返す。

詳細

ファイルそのものが未保存の場合は、falseを返します。

ファイル保存されていない変更部分は失われます。

CotEditor 4.0.7以降は、新しいエンコーディングの指定にIANA charset nameも使えます。

shift

shift left
選択位置のある行を左にシフト
shift right
選択位置のある行を右にシフト
対象
selectionオブジェクト

shift right selection of front document
挿入ポイントのある行を右にシフト。

comment out

comment out
選択範囲にコメント記号をつけてコメント化
uncomment
選択範囲のコメント記号を取り去りコメント解除
対象
selectionオブジェクト

バージョン

CotEditor 2.0.1以降

comment out selection of front document
選択位置をコメントアウト。

詳細

現在のシンタックスにコメント記号が設定されていない、選択範囲にコメント記号がないなど、コマンドが実行できない場合は何も行いません。

string

string
選択範囲に関係なく、書類中の指定された範囲の文字列を返す。
in (list)
範囲
返り値
text型
対象
selectionオブジェクト

string front document in {0, 10}
書類の最初から10文字を返す。

詳細

無効な範囲を指定した場合などは、空の文字列を返します。

このコマンドは指定された選択範囲を変更しません。

change case

change case
大文字/小文字/キャピタライズ(単語のアタマだけ大文字)に置き換える。
to upper/lower/capitalized
置き換えるスタイル
対象
selectionオブジェクト

change case selection of front document to upper
選択位置の英単語を大文字にする。

詳細

対象にできるのは`selection`オブジェクトだけです。

change roman width

change roman width
半角/全角を変換する。
to half/full
置き換えるスタイル
対象
selectionオブジェクト

change roman width selection of front document to full
選択位置の英単語を全角にする。

change kana

change kana
ひらがな/カタカナを変換する。
to hiragana/katakana
置き換えるスタイル
対象
selectionオブジェクト

change kana selection of front document to katakana
選択位置のひらがなをカタカナに変換する。

スマート引用符

smarten quotes
まっすぐな引用符をカールした引用符に変更する。
straighten quotes
カールした引用符をまっすぐな引用符に変更する。
対象
selectionオブジェクト

バージョン

CotEditor 3.9.7以降

smarten quotes selection of front document
選択位置の引用符をカールしたものに変換する。

スマートダッシュ

smarten dashes
連続したハイフンをダッシュ記号に変更する。
対象
selectionオブジェクト

バージョン

CotEditor 3.9.7以降

smarten dashes selection of front document
選択位置の連続したハイフンをダッシュ記号に変換する。

normalize unicode

normalize unicode
Unicode正規化を行う。
to NFKC/NFD/NFC/NFKD/NFKC Casefold/Modified NFC/Modified NFD
正規化方式
対象
selectionオブジェクト

バージョン

CotEditor 2.0.0以降

normalize unicode selection of front document to NFC
選択位置の文字列をUnicode正規化する。

move line

move line up
選択行を一つ上の行と入れ替える。
move line down
選択行を一つ下の行と入れ替える。
対象
selectionオブジェクト

バージョン

CotEditor 2.3.0以降

sort lines

sort lines
選択行を昇順に並び替える。
reverse lines
選択行を逆順にする。
対象
selectionオブジェクト

バージョン

CotEditor 2.3.0以降

delete duplicate line

delete duplicate line
選択行に含まれる重複行を削除する。
対象
selectionオブジェクト

バージョン

CotEditor 2.3.0以降

関連項目