「利用者:黄身」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 1行目: | 1行目: | ||
思いつくままに作ってるので、役に立つかどうかは二の次三の次。 | 思いつくままに作ってるので、役に立つかどうかは二の次三の次。 | ||
=覚え書き= | =覚え書き= | ||
;OnDocumentCloseで閉じたタブをもう一度開こうとすると | |||
以下のNewFileで開いたタブを閉じるとき、定期的?にonDocumentCloseが呼ばれない。またOpenFileは何回かに一回しか精工しない。 | |||
<source lang="javascript" style="word-wrap:break-word;"> | |||
var file=""; | |||
Editor.NewFile(); | |||
Editor.OpenFile(file,meEncodingUTF16LE,false); | |||
</source> | |||
OnModifiedなどでは問題ない。 | |||
;コマンドラインオプションからマクロ実行 | ;コマンドラインオプションからマクロ実行 | ||
Window.PromptとWindow.Confirmは実行できない。 | Window.PromptとWindow.Confirmは実行できない。 | ||
2016年4月22日 (金) 13:19時点における版
思いつくままに作ってるので、役に立つかどうかは二の次三の次。
覚え書き
- OnDocumentCloseで閉じたタブをもう一度開こうとすると
以下のNewFileで開いたタブを閉じるとき、定期的?にonDocumentCloseが呼ばれない。またOpenFileは何回かに一回しか精工しない。
var file="";
Editor.NewFile();
Editor.OpenFile(file,meEncodingUTF16LE,false);
OnModifiedなどでは問題ない。
- コマンドラインオプションからマクロ実行
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を指定した場合:
イベント発生順
- 一文字入力
- (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.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
選択文字列を正規表現(鬼車)にはめ込んで検索する。