ツールをJavaScriptで記述する
miのツールを、JavaScriptで記述することが出来ます。
ツールの拡張子を.jsにすると、JavaScriptファイルとして実行します。
JavaScriptからは、miのテキストや各種情報を取得/変更するmi テキストエディタ APIが使用可能です。
標準モードのツールのいくつか(「選択範囲の数値を順に+1する」など)はJavaScriptで記述されていますので、ご参考にしてください。
(ツールメニューの項目をoptionキーを押しながら選択すると、中身を参照することができます。)
HTML5モードのキーワードカテゴリー「mi JavaScript」を有効にすると、mi テキストエディタ APIの関数が色付け、キーワード情報表示されます。
プラグインをJavaScriptで記述する
miのプラグインを、JavaScriptで記述することが出来ます。
拡張子.jsのファイルをモード設定フォルダの"plugins"フォルダに格納することで、mi起動時に自動的に実行されます。
このプラグインファイルに、イベントリスナーを登録するコードを記述することで、ファイルオープン時や保存時に
特定のJavaScriptコードを実行することが出来ます。
mi テキストエディタ API
アプリケーションクラス
miアプリケーションに対応するクラスです。
あらかじめ、グローバル変数"mi"にインスタンス(唯一のインスタンス)が生成済みです。
ドキュメント制御
関数 | 説明 |
---|---|
|
現在編集中のドキュメントオブジェクトを取得します。 コード例: doc = mi.getCurrentDocument(); |
|
新規ドキュメントを生成して、そのドキュメントオブジェクトを取得します。 コード例: doc = mi.createDocument(); |
ダイアログの表示
関数 | 説明 |
---|---|
|
OKボタンを持つダイアログを表示します。 コード例: mi.showDialog("タイトル","メッセージ"); |
|
OKボタンを持つダイアログを表示します。 コード例: mi.showDialog("タイトル","メッセージ","おっけー"); |
|
OK, Cancelボタンを持つダイアログを表示します。 コード例: if( mi.showDialog("タイトル","メッセージ","続行","キャンセル") == "キャンセル" ) break; →実行結果:ユーザーがキャンセルをクリックしたらbreakします。 |
JavaScript
関数 | 説明 |
---|---|
|
JavaScriptファイルをロード(スクリプト実行)します。 コード例: mi.loadModule("./script/jshint.js"); →実行結果:同じフォルダ内のscriptフォルダ内のjshint.jsの内容を実行します。 |
プラグイン制御
関数 | 説明 |
---|---|
|
プラグインを登録します。 コード例: mi.registerPlugin(modeName,"std.jshint.mimikaki.net","JSHINT",false,""); |
|
プラグインの英語以外での表示名を設定します。 コード例: mi.setPluginDisplayName(modeName,pluginId,"ja","JSHINT (JavaScript 文法チェック)"); |
|
モード設定でプラグインがONに設定されているかどうかを取得します。 コード例: if( mi.getPluginEnabled(modeName,pluginId) === true ) { (イベントリスナー登録などの処理) } |
|
現在ロード中の対象モードの名称を取得します。プラグインロード処理内でのみ使用可能です。 コード例: modeName = mi.getCurrentModeNameForPluginLoad(); |
イベントリスナー制御
関数 | 説明 |
---|---|
|
ドキュメント保存等のイベント発生時に処理する関数を登録します。 コード例: mi.addEventListener(modeName,pluginId,["onSaved","onOpened"], function(doc,event,parameter) { (処理)} |
|
ドキュメント保存等のイベント発生時に処理する関数を登録解除します。 |
イベントの種類
イベント | 説明 |
---|---|
|
ドキュメントをオープンしたとき |
|
ドキュメントを保存したとき |
デバッグ
関数 | 説明 |
---|---|
|
標準エラー出力にテキストを出力します。 コード例: mi.outputToStderr("test"); |
ドキュメントクラス
ドキュメントに対応するクラスです。
テキスト編集
関数 | 説明 |
---|---|
|
指定範囲のテキストを取得します。 コード例: text = doc.getText(s,e); |
|
指定範囲にテキストを設定します。 コード例: doc.setText(start,end,"abc"); |
|
テキスト挿入位置から、テキストポイントを取得します。 コード例: textpt = doc.getTextPointFromPos(textindex); |
|
テキストポイントから、テキスト挿入位置を取得します。 コード例: textindex = doc.getPosFromTextPoint(textpt.x,textpt.y); |
ドキュメント全体の編集
関数 | 説明 |
---|---|
|
ドキュメントの文字数を取得します。 コード例: len = doc.getLength(); |
|
ドキュメント全体のテキストを取得します。 コード例: text = doc.getContent(); |
|
ドキュメント全体にテキストを設定します。 コード例: doc.setContent("abc"); |
段落
関数 | 説明 |
---|---|
|
ドキュメントの段落数を取得します。 コード例: paraCount = doc.getParagraphCount(); |
|
段落の範囲を取得します。 コード例: pararange = doc.getParagraphRange(0); |
|
段落のテキストを取得します。 コード例: paratext = doc.getParagraphText(0); |
|
段落にテキストを設定します。 コード例: doc.setParagraphText(paraindex,"abc"); |
選択範囲・キャレット
関数 | 説明 |
---|---|
|
現在の選択範囲を取得します。(矩形選択の場合のみ、複数の選択範囲が存在します。) コード例: sel = doc.getSelectionRange(); |
|
現在の選択範囲の配列を取得します。(矩形選択の場合のみ、複数の選択範囲が存在します。) コード例: selarray = doc.getSelectionRangeArray(); |
|
現在の選択範囲の個数を取得します。(矩形選択の場合のみ、複数の選択範囲が存在します。) コード例: selcount = doc.getSelectionCount(); |
|
現在の選択範囲のテキストを取得します。 コード例: text = doc.getSelectionText(); |
|
選択範囲を設定します。 コード例: doc.setSelectionRange(start,end); |
|
現在のキャレット位置を取得します。 コード例: pos = doc.getCaretPos(); |
|
現在のキャレット位置を設定します。 コード例: doc.setCaretPos(pos); |
ドキュメント情報
関数 | 説明 |
---|---|
|
ドキュメントのモード名を取得します。 コード例: modeName = doc.getModeName(); |
|
ドキュメントファイルのURLを取得します。 コード例: url = doc.getURL(); |
文法チェッカー
関数 | 説明 |
---|---|
|
文法チェッカーワーニングを全て消去します。 コード例: doc.clearSyntaxCheckerWarnings(); |
|
文法チェッカーワーニングを追加します。 コード例: doc.addSyntaxCheckerWarning(lineIndex,colIndex,reason,detail,2,true); |
その他
関数 | 説明 |
---|---|
|
テキスト情報ウインドウに表示するテキストを設定します。 コード例: doc.setDocInfoText("情報"); |