「利用者:黄身」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 160行目: | 160行目: | ||
=KILI.js= | =KILI.js= | ||
グローバルに用意しているのはこの「KILI」名前空間と次の項に挙げたいくつかのみ。 | |||
==クラス== | ==クラス== | ||
| 174行目: | 174行目: | ||
:単位として扱う行を表す。 | :単位として扱う行を表す。 | ||
== | ==グローバルなもの== | ||
あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。 | あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。 | ||
;GDO | ;GDO | ||
| 193行目: | 193行目: | ||
==KILI.selex== | ==KILI.selex== | ||
Selection拡張。KILI.editと違い、文書は編集されない。 | Selection拡張。KILI.editと違い、文書は編集されない。 | ||
atLogicalHead atLogicalEnd atViewHead atViewEnd atEOF | ;位置を判定するもの | ||
{| class="wikitable" | |||
|atLogicalHead | |||
|論理行頭 | |||
|- | |||
|atLogicalEnd | |||
|論理行末 | |||
|- | |||
|atViewHead | |||
|表示行頭 | |||
|- | |||
|atViewEnd | |||
|表示行末 | |||
|- | |||
|atEOF | |||
|文末 | |||
|} | |||
;位置を取得するもの | ;位置を取得するもの | ||
getRange getBottomPos getTopPos getAnchorPoint getActivePoint getBottomPoint getTopPoint getLogicalHeadPos getLogicalEndPos getWrapPos getViewHeadPos getViewEndPos | {| class="wikitable" | ||
|getRange | |||
|選択範囲 | |||
|- | |||
|getBottomPos | |||
|文末側位置 | |||
|- | |||
|getTopPos | |||
|文頭側位置 | |||
|- | |||
|getAnchorPoint | |||
|選択終了位置 | |||
|- | |||
|getActivePoint | |||
|選択開始位置 | |||
|- | |||
|getBottomPoint | |||
|文末側位置 | |||
|- | |||
|getTopPoint | |||
|文頭側位置 | |||
|- | |||
|getLogicalHeadPos | |||
|全ての論理行頭 | |||
|- | |||
|getLogicalEndPos | |||
|全ての論理行末 | |||
|- | |||
|getWrapPos | |||
|全ての折り返し位置 | |||
|- | |||
|getViewHeadPos | |||
|全ての表示行頭 | |||
|- | |||
|getViewEndPos | |||
|全ての表示行末 | |||
|} | |||
;文字列を取得するもの | ;文字列を取得するもの | ||
getLeft getRight | {| class="wikitable" | ||
; | |getLeft | ||
|選択範囲より左 | |||
|- | |||
|getRight | |||
|選択範囲より右 | |||
|} | |||
;座標を変換するもの | |||
{| class="wikitable" | |||
|ogicalToView | |||
|論理行→表示行 | |||
|- | |||
|logicalToPos | |||
|論理行→文頭から | |||
|- | |||
|posToLogical | |||
|文頭から→論理行 | |||
|- | |||
|posToView | |||
|文頭から→表示行 | |||
|- | |||
|viewToLogical | |||
|表示行→論理行 | |||
|- | |||
|viewToPos | |||
|表示行→文頭から | |||
|} | |||
;選択するもの | ;選択するもの | ||
selectLine selectLines selectIfEmpty setRange reverse excludeBreak | {| class="wikitable" | ||
|selectLine | |||
|複数行 | |||
|- | |||
|selectLines | |||
|複数行 | |||
|- | |||
|selectIfEmpty | |||
|選択されていなければ選択 | |||
|- | |||
|setRange | |||
|範囲 | |||
|- | |||
|reverse | |||
|反転 | |||
|- | |||
|excludeBreak | |||
|改行を除外 | |||
|} | |||
;選択状態を判定するもの | ;選択状態を判定するもの | ||
inline multiline wholeLines getDirection | {| class="wikitable" | ||
|inline | |||
|行内 | |||
|- | |||
|multiline | |||
|複数行 | |||
|- | |||
|wholeLines | |||
|行全体 | |||
|- | |||
|getDirection | |||
|選択方向 | |||
|} | |||
;検索するもの | ;検索するもの | ||
search searchTextLines count | {| class="wikitable" | ||
|search | |||
|検索 | |||
|- | |||
|searchTextLines | |||
|行を検索 | |||
|- | |||
|count | |||
|マッチ数 | |||
|} | |||
==KILI.edit== | ==KILI.edit== | ||
Selection拡張。KILI.selexと違い、文書は編集される。 | Selection拡張。KILI.selexと違い、文書は編集される。 | ||
duplicate sort deleteLines deleteAll deleteAllTextLines breakAll | {| class="wikitable" | ||
|duplicate | |||
|二重化 | |||
|- | |||
|sort | |||
|並べ替え | |||
|- | |||
|deleteLines | |||
|行削除 | |||
|- | |||
|deleteAll | |||
|文字列を全て削除 | |||
|- | |||
|deleteAllTextLines | |||
|文字列を含む行を削除 | |||
|- | |||
|breakAll | |||
|文字列を改行に変換 | |||
|} | |||
==KILI.docex== | ==KILI.docex== | ||
Document拡張。Editorの領分と思われるものも含む。<br /> | Document拡張。Editorの領分と思われるものも含む。<br /> | ||
あまり仕様が固まってないので激変の可能性あり。 | あまり仕様が固まってないので激変の可能性あり。 | ||
all newFile clone cloneStyle getINI forceClose getScroll setScroll getBreakCode | {| class="wikitable" | ||
|all | |||
|全て取得 | |||
|- | |||
|newFile | |||
|新規作成 | |||
|- | |||
|clone | |||
|複製 | |||
|- | |||
|cloneStyle | |||
|スタイルを指定して複製 | |||
|- | |||
|getINI | |||
|設定ファイルを取得 | |||
|- | |||
|forceClose | |||
|強制的に閉じる | |||
|- | |||
|getScroll | |||
|スクロール位置を取得 | |||
|- | |||
|setScroll | |||
|スクロール位置を指定 | |||
|- | |||
|getBreakCode | |||
|改行コードを取得 | |||
|} | |||
=KILI.code.js= | =KILI.code.js= | ||
文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。<br /> | 文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。<br /> | ||
decode encode decodeAll decodeSurrogate encodeSurrogate fromCharCode fromEntity toEntity fromOnig toOnig fromRegex toRegex fromUnicode toUnicode | {| class="wikitable" | ||
|decode | |||
|文字列→コードポイント | |||
|- | |||
|encode | |||
|コードポイント→文字列 | |||
|- | |||
|decodeAll | |||
|全ての形式→文字列 | |||
|- | |||
|decodeSurrogate | |||
|サロゲートペア→コードポイント | |||
|- | |||
|encodeSurrogate | |||
|コードポイント→サロゲートペア | |||
|- | |||
|fromCharCode | |||
|0x10000以上にも対応したString.fromCharCode | |||
|- | |||
|fromEntity | |||
|数値実体参照→文字列 | |||
|- | |||
|toEntity | |||
|文字列→数値実体参照 | |||
|- | |||
|fromOnig | |||
|鬼車形式→文字列 | |||
|- | |||
|toOnig | |||
|文字列→鬼車形式 | |||
|- | |||
|fromRegex | |||
|正規表現形式→文字列 | |||
|- | |||
|toRegex | |||
|文字列→正規表現形式 | |||
|- | |||
|fromUnicode | |||
|Unicode形式→文字列 | |||
|- | |||
|toUnicode | |||
|文字列→Unicode形式 | |||
|} | |||
=組み込みオブジェクト拡張= | =組み込みオブジェクト拡張= | ||
名前の衝突に注意。特にStringExはincludeライブラリのStringExと衝突しています。 | 名前の衝突に注意。特にStringExはincludeライブラリのStringExと衝突しています。 | ||
==Array== | ==Array== | ||
clone compact del indexOf insert last mine pickup siblings undup | {| class="wikitable" | ||
|clone | |||
|値渡し | |||
|- | |||
|compact | |||
|空白、null、undefinedを削除 | |||
|- | |||
|del | |||
|削除 | |||
|- | |||
|indexOf | |||
|文字列検索 | |||
|- | |||
|insert | |||
|挿入 | |||
|- | |||
|last | |||
|最後の要素を取得 | |||
|- | |||
|mine | |||
|条件指定して検索 | |||
|- | |||
|pickup | |||
|インデックス指定で取り出す | |||
|- | |||
|siblings | |||
|指定したプロパティの値を取得 | |||
|- | |||
|undup | |||
|重複削除 | |||
|} | |||
==Number== | ==Number== | ||
constrain inRange padding toHexString | {| class="wikitable" | ||
|constrain | |||
|範囲内に収める | |||
|- | |||
|inRange | |||
|範囲内にあるか判定 | |||
|- | |||
|padding | |||
|桁揃え | |||
|- | |||
|toHexString | |||
|十六進数表記 | |||
|} | |||
==String== | ==String== | ||
crlf cut dQuot sQuot enclose enclosed insert repeat startsWith endsWith escape unescape escapeRegExp unescapeRegExp heading tailing<br /> | {| class="wikitable" | ||
|crlf | |||
|改行コード変換 | |||
|- | |||
|cut | |||
|分割 | |||
|- | |||
|disheading | |||
|文字列で始まらないようにする | |||
|- | |||
|distailing | |||
|文字列で終わらないようにする | |||
|- | |||
|dQuot | |||
|「"」で囲む | |||
|- | |||
|sQuot | |||
|「'」で囲む | |||
|- | |||
|enclose | |||
|囲む | |||
|- | |||
|enclosed | |||
|文字列で囲まれているか判定 | |||
|- | |||
|insert | |||
|挿入 | |||
|- | |||
|repeat | |||
|繰り返し | |||
|- | |||
|startsWith | |||
|文字列で始まっているか判定 | |||
|- | |||
|endsWith | |||
|文字列で終わっているか判定 | |||
|- | |||
|escape | |||
|エスケープ | |||
|- | |||
|unescape | |||
|エスケープを戻す | |||
|- | |||
|escapeRegExp | |||
|正規表現用エスケープ | |||
|- | |||
|unescapeRegExp | |||
|正規表現用エスケープを戻す | |||
|- | |||
|heading | |||
|文字列で始まるようにする | |||
|- | |||
|tailing | |||
|文字列で終わるようにする | |||
|- | |||
|onigFind | |||
|鬼車で検索(KILI.js内に記載) | |||
|} | |||
=SimplePM.js= | |||
テキストと実行コマンドのみからなる単純なPopupMenu。<br /> | |||
e.g. | e.g. | ||
<source lang="javascript" style="word-wrap:break-word;"> | <source lang="javascript" style="word-wrap:break-word;"> | ||
2016年4月4日 (月) 18:03時点における版
思いつくままに作ってるので、役に立つかどうかは二の次三の次。
覚え書き
- コマンドラインオプションからマクロ実行
Window.PromptとWindow.Confirmは実行できない。
- Window.Redraw
次のスクリプトを実行するとMeryが上手く終了できない(プロセスが残ってて、次回起動できない)。
Redraw=false;
Editor.NewFile();
Editor.ActiveDocument.Close();
これは次の様にすれば解決できる。
Redraw=false;
Editor.NewFile();
//ここでもいい。
Editor.ActiveDocument.Close();
//ここに他の処理が入っても構わない。
Redraw=true;
- Document.GetLine
デフォルトでは表示行を取得。meGetLineLogicalが未定義なので0を指定する。
- 最初の数
- 行:1 (Document.GetLine)
- 文頭からの位置:0 (Selection.GetActivePos)
- 桁:1 (Selection.GetActivePointX)
- Editor,Document:0 (Editors.Item.Documents.Item)
- Window.Document
Document.NewFile後も更新されない。
Editor.ActiveDocument.NewFile();
Alert(Document.Text);
- Editor.FindInFiles
- ディレクトリ名は最後を"\\"か"\\*"にする。
- アクティブな文書が結果表示で乗っ取られる。
- PopupMenu.Track
- 引数無しだとエラー。0でキャレット位置に表示。mePosMouseは1。
- キャンセルした場合の返り値は0。
- 返り値を変数に入れるなりOutputするなりしないとメニューは表示されない。
- 領域外をクリックしてキャンセルした場合、続けてTrackしていても実行されない。Escでだとされる。
var p=CreatePopupMenu();
p.Add("1");
var x=p.Track(0); //ここでキャンセル
if(x==0){
x=p.Track(0);
}
- Selection.Replace
検索文字列が0x000aから始まるとき、meFindReplaceRegExpを指定しないと、meReplaceAllがおかしい。
Selection.Replace("\n","",meReplaceAll); //最初の1つだけ処理される
Selection.Replace(";\n","",meReplaceAll); //全て処理される
Selection.Replace("\n;","",meReplaceAll); //最初の1つだけ処理される
- Document.Text
代入する場合、設定上の改行コード二関わらず、改行記号は文字列中の改行によって変わる。これがSelection.Textだと変わらない。
Document.Text=Document.Text; //改行記号はLFになる
Selection.SelectAll();
Selection.Text=Selection.Text; //元のまま
- Selection.CharLeft,CharRight,LineUp,LineDown
Countが0の時は1と同じ。負の場合、逆方向に移動。
- Selection.Find
正規表現の時meFindReplaceOnlyWordは無効。
- Editor.OpenFile
meOpenAllowNewWindowを指定した場合:
イベント発生順
- 一文字入力
- OnCaretMoved
- OnChanged
- OnChar
- 削除/Undo/Redo
- OnCaretMoved
- OnChanged
- 選択範囲が変わった
- OnSelChanged
- OnCaretMoved
- 変更されている状態からファイル保存
- OnFileSaving
- OnFileSaved
- 変更されていない状態から上書き保存
- OnChar
- 名前を付けて保存
- OnFileSaving
- OnFileSaved
- OnModeChanged
- 貼り付け/切り取り
- OnCaretMoved
- OnChanged
- OnChanged
- 文書を閉じた
- OnDocumentClose
- OnDocumentSelectChanged
- 新規作成
- OnModeChanged
- OnDocumentSelectChanged
- 折り返しを変更
- OnCaretMoved
- OnChanged
- 行ジャンプ
- OnCaretMoved
- 検索
- OnSelChanged
- OnCaretMoved
- 置換
- OnCaretMoved
- OnSelChanged
- OnChanged
- 色の反転を
- OnModeChanged
- OnChanged
- 行番号/ルーラ/記号の表示を変更
- OnChanged
- フォントを変更
- OnCaretMoved
- OnChanged
- マクロ->編集
なし
- 分割
- OnChanged
- 分割を解除
なし
マクロファイル
最新版:BitBucket
| マクロ | ダウンロード | 中身とか注意事項とか |
|---|---|---|
| KILI | kili.zip | KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js SimplePM.js WidePM.js SequencialPM.js MouseEmurator.js KeyList.js Include.js |
| SSnippet.js | SSnippet.zip | |
| Commentize.js | Commentize.zip | |
| SmartBreak.js | SmartBreak.zip | |
| LoopyBookmark.js | LoopyBookmark.zip | |
| SetInRegExp.js | SetInRegExp.zip |
KILI.js
グローバルに用意しているのはこの「KILI」名前空間と次の項に挙げたいくつかのみ。
クラス
- Point
- 座標を表す。今のところx,yが含まれているだけ。
- Range
- 選択範囲を表す。
- Direction
- 選択方向を表す。
- Coodinate
- 座標系を表す。
- LineMode
- 単位として扱う行を表す。
グローバルなもの
あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。
- GDO
- Documentを取得。
- GEO
- Editorを取得。
- GSO
- Selectionを取得。
- O
- OutputBar.Writeln()へのショートカット。
- Seiko
- 時間を計測する。
有りそうで無い変数。
- meGetLineLogical
- mePosCaret
KILI.selex
Selection拡張。KILI.editと違い、文書は編集されない。
- 位置を判定するもの
| atLogicalHead | 論理行頭 |
| atLogicalEnd | 論理行末 |
| atViewHead | 表示行頭 |
| atViewEnd | 表示行末 |
| atEOF | 文末 |
- 位置を取得するもの
| getRange | 選択範囲 |
| getBottomPos | 文末側位置 |
| getTopPos | 文頭側位置 |
| getAnchorPoint | 選択終了位置 |
| getActivePoint | 選択開始位置 |
| getBottomPoint | 文末側位置 |
| getTopPoint | 文頭側位置 |
| getLogicalHeadPos | 全ての論理行頭 |
| getLogicalEndPos | 全ての論理行末 |
| getWrapPos | 全ての折り返し位置 |
| getViewHeadPos | 全ての表示行頭 |
| getViewEndPos | 全ての表示行末 |
- 文字列を取得するもの
| getLeft | 選択範囲より左 |
| getRight | 選択範囲より右 |
- 座標を変換するもの
| ogicalToView | 論理行→表示行 |
| logicalToPos | 論理行→文頭から |
| posToLogical | 文頭から→論理行 |
| posToView | 文頭から→表示行 |
| viewToLogical | 表示行→論理行 |
| viewToPos | 表示行→文頭から |
- 選択するもの
| selectLine | 複数行 |
| selectLines | 複数行 |
| selectIfEmpty | 選択されていなければ選択 |
| setRange | 範囲 |
| reverse | 反転 |
| excludeBreak | 改行を除外 |
- 選択状態を判定するもの
| inline | 行内 |
| multiline | 複数行 |
| wholeLines | 行全体 |
| getDirection | 選択方向 |
- 検索するもの
| search | 検索 |
| searchTextLines | 行を検索 |
| count | マッチ数 |
KILI.edit
Selection拡張。KILI.selexと違い、文書は編集される。
| duplicate | 二重化 |
| sort | 並べ替え |
| deleteLines | 行削除 |
| deleteAll | 文字列を全て削除 |
| deleteAllTextLines | 文字列を含む行を削除 |
| breakAll | 文字列を改行に変換 |
KILI.docex
Document拡張。Editorの領分と思われるものも含む。
あまり仕様が固まってないので激変の可能性あり。
| all | 全て取得 |
| newFile | 新規作成 |
| clone | 複製 |
| cloneStyle | スタイルを指定して複製 |
| getINI | 設定ファイルを取得 |
| forceClose | 強制的に閉じる |
| getScroll | スクロール位置を取得 |
| setScroll | スクロール位置を指定 |
| getBreakCode | 改行コードを取得 |
KILI.code.js
文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。
| decode | 文字列→コードポイント |
| encode | コードポイント→文字列 |
| decodeAll | 全ての形式→文字列 |
| decodeSurrogate | サロゲートペア→コードポイント |
| encodeSurrogate | コードポイント→サロゲートペア |
| fromCharCode | 0x10000以上にも対応したString.fromCharCode |
| fromEntity | 数値実体参照→文字列 |
| toEntity | 文字列→数値実体参照 |
| fromOnig | 鬼車形式→文字列 |
| toOnig | 文字列→鬼車形式 |
| fromRegex | 正規表現形式→文字列 |
| toRegex | 文字列→正規表現形式 |
| fromUnicode | Unicode形式→文字列 |
| toUnicode | 文字列→Unicode形式 |
組み込みオブジェクト拡張
名前の衝突に注意。特にStringExはincludeライブラリのStringExと衝突しています。
Array
| clone | 値渡し |
| compact | 空白、null、undefinedを削除 |
| del | 削除 |
| indexOf | 文字列検索 |
| insert | 挿入 |
| last | 最後の要素を取得 |
| mine | 条件指定して検索 |
| pickup | インデックス指定で取り出す |
| siblings | 指定したプロパティの値を取得 |
| undup | 重複削除 |
Number
| constrain | 範囲内に収める |
| inRange | 範囲内にあるか判定 |
| padding | 桁揃え |
| toHexString | 十六進数表記 |
String
| crlf | 改行コード変換 |
| cut | 分割 |
| disheading | 文字列で始まらないようにする |
| distailing | 文字列で終わらないようにする |
| dQuot | 「"」で囲む |
| sQuot | 「'」で囲む |
| enclose | 囲む |
| enclosed | 文字列で囲まれているか判定 |
| insert | 挿入 |
| repeat | 繰り返し |
| startsWith | 文字列で始まっているか判定 |
| endsWith | 文字列で終わっているか判定 |
| escape | エスケープ |
| unescape | エスケープを戻す |
| escapeRegExp | 正規表現用エスケープ |
| unescapeRegExp | 正規表現用エスケープを戻す |
| heading | 文字列で始まるようにする |
| tailing | 文字列で終わるようにする |
| onigFind | 鬼車で検索(KILI.js内に記載) |
SimplePM.js
テキストと実行コマンドのみからなる単純なPopupMenu。
e.g.
var menu=[
["a",function(){Alert("a");}], //関数を実行する
[], //区切り
["b",[
["b-a",function(){return ["b","a"];}], //配列を返す
["b-c","b-c"] //文字列を返す
]]
]
var p=new SimplePM();
p.create(menu);
p.track();
- create
- メニューを作成。
- getCommand
- IDの項目のコマンドを返す。
- getId
- メニューの位置からIDを取得。
e.g.(冒頭の続き)
p.getText(p.getId("2-1")); //"b-c"
- getParentId
- 親メニューのIDを取得する
- getPopup
- PopupMenuを取得する
- getResult
- 前回の実行結果を返す
- getText
- IDの項目のテキストを返す
- track
- メニューを表示、コマンドを実行する
WidePM.js
いろいろできるPopupMenu。
- SimplePMとの違い
- IDが指定できる。
- チェック状態、有効・無効を変更できる。
- チェックボックスやラジオボタンとして使える。
- 項目を差し替えられる。
- 直接コマンドを実行できる。
- MouseEmurator.jsを利用。チェックボックス利用時にメニューの位置がずれていかない。
SimplePMと共通のメソッドは省略。
- getCheckbox
- チェックボックスとなっている項目とチェック状態を取得する
- getChecked
- チェックされている項目のIDを取得する
- getRadioGroup
- IDの項目の属するラジオボタングループを取得する
- modify
- メニューの一部を変更する
- check
- 項目のチェックを切り換える
- available
- 項目の有効・無効を切り換える
- isChecked
- IDの項目がチェックされているかどうかを取得する
- isAvailable
- IDの項目が有効かどうかを取得する
- isCheckBox
- IDの項目がチェックボックスかどうかを取得する
- isRadioButton
- IDの項目がラジオボタンかどうかを取得する
- execute
- コマンドを実行する
KeyList.js
簡単なJSON形式のファイル読み書き。あまり汎用には使えない。
MouseEmulator.js
Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/)を利用してマウスの操作や座標の取得をする。
SSnippet.js
キャレット直前の文字列をキーとして補完する。
- 補完前に内容を確認できる。
- また補完後指定位置にキャレットを移動できる。
- 候補が複数の場合、ポップアップから選択する。
Commentize.js
コメント化もしくはコメント解除する。
SmartBreak.js
ちょっと賢く改行する。
- 開き括弧の直後で改行した場合にブロック(次行インデント+閉じ括弧)を作成する。
- 行コメント内の場合、次行も行コメントにする。
- オプション
- 編集モードの指定。
- 追加しないものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。
- キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。
LoopyBookmark.js
最後のブックマークまで来たら最初のブックマークへ移動する。
SetInRegExp.js
選択文字列を正規表現(鬼車)にはめ込んで検索する。