「利用者:黄身」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 154行目: | 154行目: | ||
|- | |- | ||
|[[#KILI.js|KILI]] | |[[#KILI.js|KILI]] | ||
|KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js | |KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js WidePop.js MouseEmurator.js Include.js | ||
|- | |- | ||
|[[#SSnippet.js|SSnippet.js]] | |[[#SSnippet.js|SSnippet.js]] | ||
| 545行目: | 545行目: | ||
|} | |} | ||
=SimplePM.js= | =SimplePM.js= | ||
'''非推奨''' | |||
テキストと実行コマンドのみからなる単純なPopupMenu。<br /> | テキストと実行コマンドのみからなる単純なPopupMenu。<br /> | ||
| 583行目: | 584行目: | ||
=WidePM.js= | =WidePM.js= | ||
'''非推奨''' | |||
いろいろできるPopupMenu。<br /> | いろいろできるPopupMenu。<br /> | ||
;SimplePMとの違い | ;SimplePMとの違い | ||
| 615行目: | 617行目: | ||
;execute | ;execute | ||
:コマンドを実行する | :コマンドを実行する | ||
=WidePop.js= | |||
拡張PopupMenu。機能は以下の通り。 | |||
*配列のみでのメニュー定義 | |||
*チェックボックス | |||
*ラジオボタン | |||
*チェック、有効・無効の切り換え | |||
*サブメニュー | |||
*選択時にコマンド実行 | |||
*MouseEmurator.jsを利用してメニューの位置を一定にする | |||
e.g. | |||
<source lang="javascript" style="word-wrap:break-word;"> | |||
var menu=[ | |||
["a",1,function(pop,me){Alert(me.tags[0]);},null,["A","a"]], | |||
[], //区切り線 | |||
["b",20], //チェック&グループ開始 | |||
["c",4], //"b"がチェック済みなのでチェックされない | |||
["d",4], //次のflagが0なのでここでグループ終了 | |||
["e",1,function(pop,me){return this.caption},[ | |||
["-a",2,"e-a"], //チェックボックス | |||
["-b",1,function(pop,me){return pop.getItemById(me.parent).command()+me.caption}], | |||
["-c",1,"unalbled"] | |||
]], | |||
["f",0] //無効になっている | |||
]; | |||
var p=new WidePop(menu); | |||
p.getItemFromPosition(5,2).enabled=false; | |||
p.check(1,function(pos,me){return me.caption=="-a"}); | |||
p.create().track(0,true); | |||
Alert(p.getResult().value) | |||
</source> | |||
=KeyList.js= | =KeyList.js= | ||
'''非推奨''' | |||
簡単なJSON形式のファイル読み書き。あまり汎用には使えない。 | 簡単なJSON形式のファイル読み書き。あまり汎用には使えない。 | ||
| 636行目: | 671行目: | ||
*追加'''しない'''ものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。 | *追加'''しない'''ものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。 | ||
*キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。 | *キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。 | ||
=Event関連マクロファイル群= | =Event関連マクロファイル群= | ||
2017年6月12日 (月) 20:50時点における版
思いつくままに作ってるので、役に立つかどうかは二の次三の次。
覚え書き
- OnDocumentCloseで閉じたタブをもう一度開こうとすると
以下のNewFileで開いたタブを閉じるとき、定期的?にonDocumentCloseが呼ばれない。またOpenFileは何回かに一回しか精工しない。
var file="";
Editor.NewFile();
Editor.OpenFile(file,meEncodingUTF16LE,false);
OnModifiedなどでは問題ない。
- コマンドラインオプションからマクロ実行
Window.PromptとWindow.Confirmは実行できない。
- 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
検索オプションを何も付けたくない場合はflagに0を指定する。
//正規表現を使わず、大文字と小文字を区別せず、カーソル位置の次の一つだけ、単語の途中でもマッチする
Selection.Replace("x","y",0);
検索文字列が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は無効。
イベント発生順
- 一文字入力
- (OnModified)
- OnCaretMoved
- OnChanged
- OnChar
- BackSpace/Undo
- OnCaretMoved
- OnChanged
- Redo
- (OnModified)
- OnCaretMoved
- OnChanged
- Delete
- OnChanged
- 選択範囲が変わった
- OnSelChanged
- OnCaretMoved
- 変更されている状態からファイル保存
- OnFileSaving
- OnFileSaved
- 変更されていない状態から上書き保存
- OnChar
- 名前を付けて保存
- OnFileSaving
- OnFileSaved
- OnModeChanged
- 貼り付け/切り取り
- (OnModified)
- OnCaretMoved
- OnChanged
- 文書を閉じた
- (OnFileSaving)
- OnDocumentClose
- (OnFileSaved)
- OnDocumentSelectChanged
- 新規作成
- OnModeChanged
- OnDocumentSelectChanged
- 折り返しを変更(実際に表示が変更されるときのみ)
- OnCaretMoved
- OnChanged
- 行ジャンプ
- OnCaretMoved
- 検索
- OnSelChanged
- OnCaretMoved
- 置換
- (OnModified)
- OnSelChanged
- OnCaretMoved
- OnChanged
- 色の反転を変更
- OnModeChanged
- フォントを変更
- OnChanged
- マクロ->編集
なし
- 分割
- OnChanged
- (OnCaretMoved)
- 分割を解除
なし
- 検索/置換/印刷プレビューウィンドウを表示
- OnKillFocus
- 検索/置換ウィンドウを閉じる
- OnFocus
- 文字コード変更
- OnModeChanged
- OnCaretMoved
- OnChanged
- 改行コード変更
なし
- タブを無効にする
- OnKillFocus
- OnFocus
- タブを有効にする
なし
- 全画面表示切り替え
- OnFocus
マクロファイル
全てBitBucketで公開中。
| マクロ | 中身とか注意事項とか |
|---|---|
| KILI | KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js WidePop.js MouseEmurator.js Include.js |
| SSnippet.js | キャレット直前の文字列をキーとして補完する。 |
| Blockize.js | 選択部分をテンプレートにはめ込んだブロックを挿入する。 |
| Commentize.js | コメント化もしくはコメント解除する。 |
| SmartBreak.js | ちょっと賢く改行する。 |
| LoopyBookmark.js | 最後のブックマークまで来たら最初のブックマークへ移動する。 |
| FillSearch.js | 選択文字列をテンプレートにはめ込んで検索する。 |
| Event | BitBucket |
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
- コマンドを実行する
WidePop.js
拡張PopupMenu。機能は以下の通り。
- 配列のみでのメニュー定義
- チェックボックス
- ラジオボタン
- チェック、有効・無効の切り換え
- サブメニュー
- 選択時にコマンド実行
- MouseEmurator.jsを利用してメニューの位置を一定にする
e.g.
var menu=[
["a",1,function(pop,me){Alert(me.tags[0]);},null,["A","a"]],
[], //区切り線
["b",20], //チェック&グループ開始
["c",4], //"b"がチェック済みなのでチェックされない
["d",4], //次のflagが0なのでここでグループ終了
["e",1,function(pop,me){return this.caption},[
["-a",2,"e-a"], //チェックボックス
["-b",1,function(pop,me){return pop.getItemById(me.parent).command()+me.caption}],
["-c",1,"unalbled"]
]],
["f",0] //無効になっている
];
var p=new WidePop(menu);
p.getItemFromPosition(5,2).enabled=false;
p.check(1,function(pos,me){return me.caption=="-a"});
p.create().track(0,true);
Alert(p.getResult().value)
KeyList.js
非推奨 簡単なJSON形式のファイル読み書き。あまり汎用には使えない。
MouseEmulator.js
Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/)を利用してマウスの操作や座標の取得をする。
SSnippet.js
キャレット直前の文字列をキーとして補完する。
- 補完前に内容を確認できる。
- また補完後指定位置にキャレットを移動できる。
- 候補が複数の場合、ポップアップから選択する。
SmartBreak.js
ちょっと賢く改行する。
- 開き括弧の直後で改行した場合にブロック(次行インデント+閉じ括弧)を作成する。
- 行コメント内の場合、次行も行コメントにする。
- オプション
- 編集モードの指定。
- 追加しないものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。
- キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。
Event関連マクロファイル群
イベントマクロを使いやすく(?)したもの。 大体のメリットとしては、
- ポップアップ地獄を回避。
- イベント編集に必要なファイルは1つだけ。
- 同じ様な処理にファイルを分けなくていい。
- Event.js
- イベントを実行するクラス。イベント名に応じてEventMain.jsの関数を呼び出す。また例外メッセージをアウトプットに投げている。
- EventMain.js
- イベントで実行される関数のファイル。イベントの編集はこのファイルをいじるだけでいい。
- EventTemplate.js
- 1つのファイルで通常とイベントと両方のマクロに利用できるようするテンプレート。
- 「On~」で始まるファイル
- Meryでイベントとして登録するファイル。Event.executeを呼び出すだけ。
- EventMethod.js
- イベント用に作った関数。