「利用者:黄身」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
黄身 (トーク | 投稿記録)
編集の要約なし
黄身 (トーク | 投稿記録)
編集の要約なし
2行目: 2行目:
=覚え書き=
=覚え書き=
;OnDocumentCloseで閉じたタブをもう一度開こうとすると
;OnDocumentCloseで閉じたタブをもう一度開こうとすると
以下のNewFileで開いたタブを閉じるとき、定期的?にonDocumentCloseが呼ばれない。またOpenFileは何回かに一回しか精工しない。
以下のNewFileで開いたタブを閉じるとき、定期的?にonDocumentCloseが呼ばれない。またOpenFileは何回かに一回しか成功しない。
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript" style="word-wrap:break-word;">
var file="";
var file="";
65行目: 65行目:
正規表現の時meFindReplaceOnlyWordは無効。
正規表現の時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


=マクロファイル=
=マクロファイル=
155行目: 75行目:
|[[#KILI.js|KILI]]
|[[#KILI.js|KILI]]
|KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js WidePop.js MouseEmurator.js Include.js
|KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js WidePop.js MouseEmurator.js Include.js
|-
|[[#SSnippet.js|SSnippet.js]]
|キャレット直前の文字列をキーとして補完する。
|-
|[[#Blockize.js|Blockize.js]]
|選択部分をテンプレートにはめ込んだブロックを挿入する。
|-
|-
|[[#Commentize.js|Commentize.js]]
|[[#Commentize.js|Commentize.js]]
|コメント化もしくはコメント解除する。
|コメント化もしくはコメント解除する。
|-
|[[#SmartBreak.js|SmartBreak.js]]
|ちょっと賢く改行する。
|-
|-
|[[#LoopyBookmark.js|LoopyBookmark.js]]
|[[#LoopyBookmark.js|LoopyBookmark.js]]
195行目: 106行目:
==グローバルなもの==
==グローバルなもの==
あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。
あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。
;GDO
{| class="wikitable"
:Documentを取得。
|GDO||:Documentを取得。
;GEO
|-
:Editorを取得。
|GEO||Editorを取得。
;GSO
|-
:Selectionを取得。
|GSO||Selectionを取得。
;O
|-
:OutputBar.Writeln()へのショートカット。
|O||OutputBar.Writeln()へのショートカット。
;Seiko
|-
:時間を計測する。
|Seiko||時間を計測する。
 
|-
有りそうで無い変数。
|meGetLineLogical||有りそうで無い変数。
*meGetLineLogical
|-
*mePosCaret
|mePosCaret||有りそうで無い変数。
|}


==KILI.selex==
==KILI.selex==
214行目: 126行目:
;位置を判定するもの
;位置を判定するもの
{| class="wikitable"
{| class="wikitable"
|atLogicalHead
|atLogicalHead||論理行頭
|論理行頭
|-
|-
|atLogicalEnd
|atLogicalEnd||論理行末
|論理行末
|-
|-
|atViewHead
|atViewHead||表示行頭
|表示行頭
|-
|-
|atViewEnd
|atViewEnd||表示行末
|表示行末
|-
|-
|atEOF
|atEOF||文末
|文末
|}
|}
;位置を取得するもの
;位置を取得するもの
{| class="wikitable"
{| class="wikitable"
|getRange
|getRange||選択範囲
|選択範囲
|-
|-
|getBottomPos
|getBottomPos||文末側位置
|文末側位置
|-
|-
|getTopPos
|getTopPos||文頭側位置
|文頭側位置
|-
|-
|getAnchorPoint
|getAnchorPoint||選択終了位置
|選択終了位置
|-
|-
|getActivePoint
|getActivePoint||選択開始位置
|選択開始位置
|-
|-
|getBottomPoint
|getBottomPoint||文末側位置
|文末側位置
|-
|-
|getTopPoint
|getTopPoint||文頭側位置
|文頭側位置
|-
|-
|getLogicalHeadPos
|getLogicalHeadPos||全ての論理行頭
|全ての論理行頭
|-
|-
|getLogicalEndPos
|getLogicalEndPos||全ての論理行末
|全ての論理行末
|-
|-
|getWrapPos
|getWrapPos||全ての折り返し位置
|全ての折り返し位置
|-
|-
|getViewHeadPos
|getViewHeadPos||全ての表示行頭
|全ての表示行頭
|-
|-
|getViewEndPos
|getViewEndPos||全ての表示行末
|全ての表示行末
|}
|}
;文字列を取得するもの
;文字列を取得するもの|
{| class="wikitable"
{| class="wikitable"
|getLeft
|getLeft||選択範囲より左
|選択範囲より左
|-
|-
|getRight
|getRight||選択範囲より右
|選択範囲より右
|}
|}
;座標を変換するもの
;座標を変換するもの
{| class="wikitable"
{| class="wikitable"
|logicalToView
|logicalToView||論理行→表示行
|論理行→表示行
|-
|-
|logicalToPos
|logicalToPos||論理行→文頭から
|論理行→文頭から
|-
|-
|posToLogical
|posToLogical||文頭から→論理行
|文頭から→論理行
|-
|-
|posToView
|posToView||文頭から→表示行
|文頭から→表示行
|-
|-
|viewToLogical
|viewToLogical||表示行→論理行
|表示行→論理行
|-
|-
|viewToPos
|viewToPos||表示行→文頭から
|表示行→文頭から
|}
|}
;選択するもの
;選択するもの
{| class="wikitable"
{| class="wikitable"
|selectLine
|selectLine||複数行
|複数行
|-
|-
|selectLines
|selectLines||複数行
|複数行
|-
|-
|selectIfEmpty
|selectIfEmpty||選択されていなければ選択
|選択されていなければ選択
|-
|-
|setRange
|setRange||範囲
|範囲
|-
|-
|reverse
|reverse||反転
|反転
|-
|-
|excludeBreak
|excludeBreak||改行を除外
|改行を除外
|}
|}
;選択状態を判定するもの
;選択状態を判定するもの
{| class="wikitable"
{| class="wikitable"
|inline
|inline||行内
|行内
|-
|-
|multiline
|multiline||複数行
|複数行
|-
|-
|wholeLines
|wholeLines||行全体
|行全体
|-
|-
|getDirection
|getDirection||選択方向
|選択方向
|}
|}
;検索するもの
;検索するもの
{| class="wikitable"
{| class="wikitable"
|search
|search||検索
|検索
|-
|-
|searchTextLines
|searchTextLines||行を検索
|行を検索
|-
|-
|count
|count||マッチ数
|マッチ数
|}
|}
==KILI.edit==
==KILI.edit==
Selection拡張。KILI.selexと違い、文書は編集される。
Selection拡張。KILI.selexと違い、文書は編集される。
{| class="wikitable"
{| class="wikitable"
|duplicate
|duplicate||二重化
|二重化
|-
|-
|sort
|sort||並べ替え
|並べ替え
|-
|-
|deleteLines
|deleteLines||行削除
|行削除
|-
|-
|deleteAll
|deleteAll||文字列を全て削除
|文字列を全て削除
|-
|-
|deleteAllTextLines
|deleteAllTextLines||文字列を含む行を削除
|文字列を含む行を削除
|-
|-
|breakAll
|breakAll||文字列を改行に変換
|文字列を改行に変換
|}
|}
==KILI.docex==
==KILI.docex==
365行目: 233行目:
あまり仕様が固まってないので激変の可能性あり。
あまり仕様が固まってないので激変の可能性あり。
{| class="wikitable"
{| class="wikitable"
|all
|all||全て取得
|全て取得
|-
|-
|newFile
|newFile||新規作成
|新規作成
|-
|-
|clone
|clone||複製
|複製
|-
|-
|cloneStyle
|cloneStyle||スタイルを指定して複製
|スタイルを指定して複製
|-
|-
|getINI
|getINI||設定ファイルを取得
|設定ファイルを取得
|-
|-
|forceClose
|forceClose||強制的に閉じる
|強制的に閉じる
|-
|-
|getScroll
|getScroll||スクロール位置を取得
|スクロール位置を取得
|-
|-
|setScroll
|setScroll||スクロール位置を指定
|スクロール位置を指定
|-
|-
|getBreakCode
|getBreakCode||改行コードを取得
|改行コードを取得
|}
|}
=KILI.code.js=
=KILI.code.js=
文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。<br />
文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。<br />
{| class="wikitable"
{| class="wikitable"
|decode
|decode||文字列→コードポイント
|文字列→コードポイント
|-
|-
|encode
|encode||コードポイント→文字列
|コードポイント→文字列
|-
|-
|decodeAll
|decodeAll||全ての形式→文字列
|全ての形式→文字列
|-
|-
|decodeSurrogate
|decodeSurrogate||サロゲートペア→コードポイント
|サロゲートペア→コードポイント
|-
|-
|encodeSurrogate
|encodeSurrogate||コードポイント→サロゲートペア
|コードポイント→サロゲートペア
|-
|-
|fromCharCode
|fromCharCode||0x10000以上にも対応したString.fromCharCode
|0x10000以上にも対応したString.fromCharCode
|-
|-
|fromEntity
|fromEntity||数値実体参照→文字列
|数値実体参照→文字列
|-
|-
|toEntity
|toEntity||文字列→数値実体参照
|文字列→数値実体参照
|-
|-
|fromOnig
|fromOnig||鬼車形式→文字列
|鬼車形式→文字列
|-
|-
|toOnig
|toOnig||文字列→鬼車形式
|文字列→鬼車形式
|-
|-
|fromRegex
|fromRegex||正規表現形式→文字列
|正規表現形式→文字列
|-
|-
|toRegex
|toRegex||文字列→正規表現形式
|文字列→正規表現形式
|-
|-
|fromUnicode
|fromUnicode||Unicode形式→文字列
|Unicode形式→文字列
|-
|-
|toUnicode
|toUnicode||文字列→Unicode形式
|文字列→Unicode形式
|}
|}
=組み込みオブジェクト拡張=
=組み込みオブジェクト拡張=
441行目: 286行目:
==Array==
==Array==
{| class="wikitable"
{| class="wikitable"
|clone
|clone||値渡し
|値渡し
|-
|-
|compact
|compact||空白、null、undefinedを削除
|空白、null、undefinedを削除
|-
|-
|remove
|remove||削除
|削除
|-
|-
|indexOf
|indexOf||検索
|検索
|-
|-
|insert
|insert||挿入
|挿入
|-
|-
|last
|last||最後の要素を取得
|最後の要素を取得
|-
|-
|select
|select||条件指定して検索
|条件指定して検索
|-
|-
|selectIndex
|selectIndex||条件指定してインデックスを検索
|条件指定してインデックスを検索
|-
|-
|pickup
|pickup||インデックス指定で取り出す
|インデックス指定で取り出す
|-
|-
|siblings
|siblings||指定したプロパティの値を取得
|指定したプロパティの値を取得
|-
|-
|unique
|unique||重複削除
|重複削除
|}
|}
==Number==
==Number==
{| class="wikitable"
{| class="wikitable"
|clamp
|clamp||範囲内に収める
|範囲内に収める
|-
|-
|within
|within||範囲内にあるか判定
|範囲内にあるか判定
|-
|-
|padding
|padding||桁揃え
|桁揃え
|-
|-
|toHexString
|toHexString||十六進数表記
|十六進数表記
|}
|}
==String==
==String==
{| class="wikitable"
{| class="wikitable"
|crlf
|crlf||改行コード変換
|改行コード変換
|-
|-
|cut
|cut||分割
|分割
|-
|-
|unhead
|unhead||文字列で始まらないようにする
|文字列で始まらないようにする
|-
|-
|untail
|untail||文字列で終わらないようにする
|文字列で終わらないようにする
|-
|-
|dquote
|dquote||「"」で囲む
|「"」で囲む
|-
|-
|squote
|squote||「'」で囲む
|「'」で囲む
|-
|-
|enclose
|enclose||囲む
|囲む
|-
|-
|enclosed
|enclosed||文字列で囲まれているか判定
|文字列で囲まれているか判定
|-
|-
|insert
|insert||挿入
|挿入
|-
|-
|repeat
|repeat||繰り返し
|繰り返し
|-
|-
|startsWith
|startsWith||文字列で始まっているか判定
|文字列で始まっているか判定
|-
|-
|endsWith
|endsWith||文字列で終わっているか判定
|文字列で終わっているか判定
|-
|-
|escape
|escape||エスケープ
|エスケープ
|-
|-
|unescape
|unescape||エスケープを戻す
|エスケープを戻す
|-
|-
|escapeRegExp
|escapeRegExp||正規表現用エスケープ
|正規表現用エスケープ
|-
|-
|unescapeRegExp
|unescapeRegExp||正規表現用エスケープを戻す
|正規表現用エスケープを戻す
|-
|-
|head
|head||文字列で始まるようにする
|文字列で始まるようにする
|-
|-
|tail
|tail||文字列で終わるようにする
|文字列で終わるようにする
|-
|-
|onigFind
|onigFind||鬼車で検索(KILI.js内に記載)
|鬼車で検索(KILI.js内に記載)
|}
|}
=SimplePM.js=
 
'''非推奨'''
=InsetText.js=
テキストと実行コマンドのみからなる単純なPopupMenu。<br />
キャレット行の検索結果に基づいてテンプレートから文字列を作成・挿入する。
SSnippet.js・Blockize.js・SmartBreak.jsを統合して一から作り直したもの。
検索条件やテンプレートはJSONで指定する。
 
;機能
*複数条件での検索
**検索範囲をキャレット行・キャレット位置に基づいて指定可能
*編集モードによる絞り込み
*テンプレートへの検索マッチやキャレット前後・選択部分などの埋め込み
**一部分だけも可能
*インデントの考慮
*選択範囲とは違う範囲への挿入
*挿入後の選択範囲指定
*一致するエントリーが無い場合の代替テンプレート
 
;検索方法
否定検索も可能。
* 先頭・末尾に一致
* 選択位置の直前・直後に一致
* 選択位置より前・後の文字列に一致
* 選択文字列に一致
* 選択位置より前・後の文字列の長さが一致
* 選択文字列の長さが一致
* 選択位置より前・後の文字列に含まれる
* 選択文字列に含まれる
* 選択位置より前・後の文字列を正規表現検索
* 選択文字列を正規表現検索する
* 行全体の長さが一致する
* 行全体に含まれる
* 行全体を正規表現検索する


e.g.
e.g.
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript" style="word-wrap:break-word;">
var menu=[
var g=new InsetText(ScriptFullName.split("\\").slice(0,-1).join("\\")+"\\insettext.json").match(false).generated[0];
["a",function(){Alert("a");}], //関数を実行する
if(g){
[], //区切り
g.insert();
["b",[
}
["b-a",function(){return ["b","a"];}], //配列を返す
 
["b-c","b-c"] //文字列を返す
]]
]
var p=new SimplePM();
p.create(menu);
p.track();
</source>
</source>
;create
:メニューを作成。
;getCommand
:IDの項目のコマンドを返す。
;getId
:メニューの位置からIDを取得。
e.g.(冒頭の続き)
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript" style="word-wrap:break-word;">
p.getText(p.getId("2-1")); //"b-c"
{
"entries": [
{
"name":"for",
"comment":"forスニペット(カウンタも指定)",
"template":"for(var {0:8-1,0:8}=0;{0:8-1,0:8}<{s}.length;{0:8-1,0:8}++){\n\t\n}",
"indent":true,
"modes":["JavaScript","C#","C++","Java"],
"conditions":[
{
"type":14,
"text":"for[ijk]$"
}
],
"range":"0"
},
{
"name":"block",
"comment":"ブロックを作成",
"template":"\n\t{0:7,0:8-1}{s}\n}",
"indent":true,
"modes":["JavaScript"],
"conditions":[
{
"type":3,
"text":"{"
}
],
"range":"0"
},
{
"name":"block",
"comment":"ブロックを作成(キャレットより後に}があれば利用する)",
"template":"\n\t{0:8,1:8-1}{s}\n",
"indent":true,
"modes":["JavaScript"],
"conditions":[
{
"type":3,
"text":"{"
},
{
"type":15,
"text":"[^\\}]*\\}"
}
],
"range":"0:8,1:8-1",
"weight":1
},
{
"name":"block comment",
"comment":"ブロックコメント",
"template":"\n* {4,6}{s}",
"indent":true,
"modes":["JavaScript"],
"conditions":[
{
"type":14,
"text":"^/?\\*"
},
{
"type":-11,
"text":"*/"
}
],
"range":"4,6",
"weight":1
},
{
"name":"trim",
"comment":"右トリム",
"template":"",
"conditions":[
{
"type":15,
"text":"[\\s]+$",
"spaces":true
}
],
"range":"0"
},
{
"name":"indent",
"comment":"Python用インデント"
"template":"\n\t",
"indent":true,
"modes":["Python"],
"conditions":[
{
"type":3,
"text":":"
}
]
}
],
"sub":{
"name":"sub",
"comment":"一致するものが無ければ単純に改行する",
"template":"\n"
}
}
</source>
</source>
;getParentId
:親メニューのIDを取得する
;getPopup
:PopupMenuを取得する
;getResult
:前回の実行結果を返す
;getText
:IDの項目のテキストを返す
;track
:メニューを表示、コマンドを実行する
=WidePM.js=
'''非推奨'''
いろいろできるPopupMenu。<br />
;SimplePMとの違い
*IDが指定できる。
*チェック状態、有効・無効を変更できる。
*チェックボックスやラジオボタンとして使える。
*項目を差し替えられる。
*直接コマンドを実行できる。
*MouseEmurator.jsを利用。チェックボックス利用時にメニューの位置がずれていかない。
SimplePMと共通のメソッドは省略。
;getCheckbox
:チェックボックスとなっている項目とチェック状態を取得する
;getChecked
:チェックされている項目のIDを取得する
;getRadioGroup
:IDの項目の属するラジオボタングループを取得する
;modify
:メニューの一部を変更する
;check
:項目のチェックを切り換える
;available
:項目の有効・無効を切り換える
;isChecked
:IDの項目がチェックされているかどうかを取得する
;isAvailable
:IDの項目が有効かどうかを取得する
;isCheckBox
:IDの項目がチェックボックスかどうかを取得する
;isRadioButton
:IDの項目がラジオボタンかどうかを取得する
;execute
:コマンドを実行する


=WidePop.js=
=WidePop.js=
652行目: 534行目:
Alert(p.getResult().value)
Alert(p.getResult().value)
</source>
</source>
=KeyList.js=
'''非推奨'''
簡単なJSON形式のファイル読み書き。あまり汎用には使えない。


=MouseEmulator.js=
=MouseEmulator.js=
Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/<nowiki />)を利用してマウスの操作や座標の取得をする。
Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/<nowiki />)を利用してマウスの操作や座標の取得をする。
=SSnippet.js=
キャレット直前の文字列をキーとして補完する。
*補完前に内容を確認できる。
*また補完後指定位置にキャレットを移動できる。
*候補が複数の場合、ポップアップから選択する。
=SmartBreak.js=
ちょっと賢く改行する。
*開き括弧の直後で改行した場合にブロック(次行インデント+閉じ括弧)を作成する。
*行コメント内の場合、次行も行コメントにする。
;オプション
*編集モードの指定。
*追加'''しない'''ものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。
*キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。


=Event関連マクロファイル群=
=Event関連マクロファイル群=
692行目: 555行目:
;EventMethod.js
;EventMethod.js
:イベント用に作った関数。
:イベント用に作った関数。
=古いもの・非推奨=
;SSnippet.js
:キャレット直前の文字列をキーとして補完する。
;Blockize.js
:選択部分をテンプレートにはめ込んだブロックを挿入する。
;SmartBreak.js
:ちょっと賢く改行する。
この3つは[[#InsetText.js|InsetText.js]]に統合。
;KeyList.js
:簡単なJSON形式のファイル読み書き。あまり汎用には使えない。
;SimplePM.js
:テキストと実行コマンドのみからなる単純なPopupMenu。
;WidePM.js
:いろいろできるPopupMenu。
この2つは[[#WidePop.js|WidePop.js]]に統合。

2017年11月25日 (土) 13:37時点における版

思いつくままに作ってるので、役に立つかどうかは二の次三の次。

覚え書き

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は無効。


マクロファイル

全てBitBucketで公開中。

マクロ 中身とか注意事項とか
KILI KILI.js KILI.code.js ArrayEx.js StringEx.js NumberEx.js WidePop.js MouseEmurator.js Include.js
Commentize.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 選択範囲より右
座標を変換するもの
logicalToView 論理行→表示行
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を削除
remove 削除
indexOf 検索
insert 挿入
last 最後の要素を取得
select 条件指定して検索
selectIndex 条件指定してインデックスを検索
pickup インデックス指定で取り出す
siblings 指定したプロパティの値を取得
unique 重複削除

Number

clamp 範囲内に収める
within 範囲内にあるか判定
padding 桁揃え
toHexString 十六進数表記

String

crlf 改行コード変換
cut 分割
unhead 文字列で始まらないようにする
untail 文字列で終わらないようにする
dquote 「"」で囲む
squote 「'」で囲む
enclose 囲む
enclosed 文字列で囲まれているか判定
insert 挿入
repeat 繰り返し
startsWith 文字列で始まっているか判定
endsWith 文字列で終わっているか判定
escape エスケープ
unescape エスケープを戻す
escapeRegExp 正規表現用エスケープ
unescapeRegExp 正規表現用エスケープを戻す
head 文字列で始まるようにする
tail 文字列で終わるようにする
onigFind 鬼車で検索(KILI.js内に記載)

InsetText.js

キャレット行の検索結果に基づいてテンプレートから文字列を作成・挿入する。 SSnippet.js・Blockize.js・SmartBreak.jsを統合して一から作り直したもの。 検索条件やテンプレートはJSONで指定する。

機能
  • 複数条件での検索
    • 検索範囲をキャレット行・キャレット位置に基づいて指定可能
  • 編集モードによる絞り込み
  • テンプレートへの検索マッチやキャレット前後・選択部分などの埋め込み
    • 一部分だけも可能
  • インデントの考慮
  • 選択範囲とは違う範囲への挿入
  • 挿入後の選択範囲指定
  • 一致するエントリーが無い場合の代替テンプレート
検索方法

否定検索も可能。

  • 先頭・末尾に一致
  • 選択位置の直前・直後に一致
  • 選択位置より前・後の文字列に一致
  • 選択文字列に一致
  • 選択位置より前・後の文字列の長さが一致
  • 選択文字列の長さが一致
  • 選択位置より前・後の文字列に含まれる
  • 選択文字列に含まれる
  • 選択位置より前・後の文字列を正規表現検索
  • 選択文字列を正規表現検索する
  • 行全体の長さが一致する
  • 行全体に含まれる
  • 行全体を正規表現検索する

e.g.

var g=new InsetText(ScriptFullName.split("\\").slice(0,-1).join("\\")+"\\insettext.json").match(false).generated[0];
if(g){
	g.insert();
}
{
	"entries": [
		{
			"name":"for",
			"comment":"forスニペット(カウンタも指定)",
			"template":"for(var {0:8-1,0:8}=0;{0:8-1,0:8}<{s}.length;{0:8-1,0:8}++){\n\t\n}",
			"indent":true,
			"modes":["JavaScript","C#","C++","Java"],
			"conditions":[
				{
					"type":14,
					"text":"for[ijk]$"
				}
			],
			"range":"0"
		},
		{
			"name":"block",
			"comment":"ブロックを作成",
			"template":"\n\t{0:7,0:8-1}{s}\n}",
			"indent":true,
			"modes":["JavaScript"],
			"conditions":[
				{
					"type":3,
					"text":"{"
				}
			],
			"range":"0"
		},
		{
			"name":"block",
			"comment":"ブロックを作成(キャレットより後に}があれば利用する)",
			"template":"\n\t{0:8,1:8-1}{s}\n",
			"indent":true,
			"modes":["JavaScript"],
			"conditions":[
				{
					"type":3,
					"text":"{"
				},
				{
					"type":15,
					"text":"[^\\}]*\\}"
				}
			],
			"range":"0:8,1:8-1",
			"weight":1
		},
		{
			"name":"block comment",
			"comment":"ブロックコメント",
			"template":"\n* {4,6}{s}",
			"indent":true,
			"modes":["JavaScript"],
			"conditions":[
				{
					"type":14,
					"text":"^/?\\*"
				},
				{
					"type":-11,
					"text":"*/"
				}
			],
			"range":"4,6",
			"weight":1
		},
		{
			"name":"trim",
			"comment":"右トリム",
			"template":"",
			"conditions":[
				{
					"type":15,
					"text":"[\\s]+$",
					"spaces":true
				}
			],
			"range":"0"
		},
		{
			"name":"indent",
			"comment":"Python用インデント"
			"template":"\n\t",
			"indent":true,
			"modes":["Python"],
			"conditions":[
				{
					"type":3,
					"text":":"
				}
			]
		}
	],
	"sub":{
		"name":"sub",
		"comment":"一致するものが無ければ単純に改行する",
		"template":"\n"
	}
}

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)

MouseEmulator.js

Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/)を利用してマウスの操作や座標の取得をする。

Event関連マクロファイル群

イベントマクロを使いやすく(?)したもの。 大体のメリットとしては、

  • ポップアップ地獄を回避。
  • イベント編集に必要なファイルは1つだけ。
  • 同じ様な処理にファイルを分けなくていい。
Event.js
イベントを実行するクラス。イベント名に応じてEventMain.jsの関数を呼び出す。また例外メッセージをアウトプットに投げている。
EventMain.js
イベントで実行される関数のファイル。イベントの編集はこのファイルをいじるだけでいい。
EventTemplate.js
1つのファイルで通常とイベントと両方のマクロに利用できるようするテンプレート。
「On~」で始まるファイル
Meryでイベントとして登録するファイル。Event.executeを呼び出すだけ。
EventMethod.js
イベント用に作った関数。

古いもの・非推奨

SSnippet.js
キャレット直前の文字列をキーとして補完する。
Blockize.js
選択部分をテンプレートにはめ込んだブロックを挿入する。
SmartBreak.js
ちょっと賢く改行する。

この3つはInsetText.jsに統合。

KeyList.js
簡単なJSON形式のファイル読み書き。あまり汎用には使えない。
SimplePM.js
テキストと実行コマンドのみからなる単純なPopupMenu。
WidePM.js
いろいろできるPopupMenu。

この2つはWidePop.jsに統合。

スポンサーリンク