本文へジャンプ

スクリプトを使った設定

スクリプトを使って Alpha の設定を変更する方法について説明します

なお、使用しているオブジェクトモデルは現時点で Alpha で利用可能なものです。ライブラリが変更された場合は、記述が異なります

以下はほとんど終わった話です。次のバージョンからはもう少し使いやすいものに変更します

events.*

Alpha の設定の大半はスクリプトを使って設定します。Alpha を展開したディレクトリに "macros" というディレクトリがあり、初期状態ではその中に "events.js" というファイルがあります。このファイルに設定を記述していきます。Alpha は起動時にこのスクリプトを読み込み、何らかのタイミングでスクリプト中の関数を呼び出します。例えば起動時には OnApplicationInitialized が、適用文書タイプが変更されたときは OnApplyDocumentType が呼び出されます。これらの関数中に設定を記述しておけば動的に設定が行われるというわけです

なおこのファイルは "events.*" に適合する名前であれば何でも構いません。例えば VBScript を使いたい場合は "events.vbs" 、PerlScript の場合は "events.pl" などとしてください

以下で設定の例を幾つか示します。イベントハンドラのリストや、設定に使うオブジェクトについては Ambient のリファレンスを見てください

キー割り当てを変更する

KeyboardScheme オブジェクトを使用します。割り当てたい組み合わせの数だけ Assign メソッドを呼び出してください

var ks = Ambient.configurations.keyboardSchemes("basic");
ks.assign("Ctrl+N", 1000); // Ctrl+N に [ファイル]-[新規] を割り当てる
ks.assign("Ctrl+O", 1002); // Ctrl+O に [ファイル]-[開く] を割り当てる

これでは速度が心配だという場合はファイルを使って設定を読み込むようにしてください。まず所望のキー割り当てを Assign で設定しておき、Save で好きな名前を付けて保存します (\Alpha\keyboardSchemes\ に保存されます)。そして次回からは Load で読み込むようにスクリプトを書き直します

色分けをする

LexerTokenDecoration を組み合わせて使います。前者は1行をどのようにトークン (字句) に切り分けるか、後者は切り分けられた各トークンをどのように表示するかのルールを保持します。これらのルールを変更することで色分けを行います

例えば C++ の単一行コメントを緑色で表示するには次のようにします

var editor = Ambient.activeBuffer.editor;
var cppSComment = editor.lexer.addSinglelineAnnotation("//");
var td = editor.preferences.tokenDecoration("annotation_".concat(cppSComment));
td.color = 0x008000;

拡張子毎に異なる色分けをする

文書タイプの概念を使います。文書タイプは、ファイル名が特定のシグニチャにマッチするファイルをまとめたものです。文書タイプは Configurations オブジェクトの AddDocumentType メソッドで追加できます

Ambient.configurations.addDocumentType("JavaScript", "*.js");
Ambient.configurations.addDocumentType("XHTML", "*.htm;*.html");

このようにして登録した文書タイプは後でファイルが読み込まれたり、他の操作で「適用」されます。適用が起こると Alpha は文書タイプ名とアクティブなエディタを引数にして OnApplyDocumentType を呼び出します。ここで文書タイプ名で場合分けすることにより、拡張子毎に異なる色分けを実現します

エディタのその他の設定を変更する

テキストエディタのその他の設定は EditorPreferences のプロパティになっています。項目についてはリファレンスを見てください