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

提供: MeryWiki
ナビゲーションに移動 検索に移動
黄身 (トーク | 投稿記録)
編集の要約なし
黄身 (トーク | 投稿記録)
編集の要約なし
148行目: 148行目:
|[[#SmartBreak.js|SmartBreak.js]]
|[[#SmartBreak.js|SmartBreak.js]]
|[[:ファイル:SmartBreak.zip|SmartBreak.zip]]
|[[:ファイル:SmartBreak.zip|SmartBreak.zip]]
|
|-
|[[#SwitchEvent.js|SwitchEvent.js]]
|
|
|-
|[[#Events.js|Events.js]]
|
|
|
|-
|-

2016年4月3日 (日) 21:09時点における版

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

覚え書き

コマンドラインオプションからマクロ実行

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を指定した場合:

イベント発生順

一文字入力
  1. OnCaretMoved
  2. OnChanged
  3. OnChar
削除/Undo/Redo
  1. OnCaretMoved
  2. OnChanged
選択範囲が変わった
  1. OnSelChanged
  2. OnCaretMoved
変更されている状態からファイル保存
  1. OnFileSaving
  2. OnFileSaved
変更されていない状態から上書き保存
  1. OnChar
名前を付けて保存
  1. OnFileSaving
  2. OnFileSaved
  3. OnModeChanged
貼り付け/切り取り
  1. OnCaretMoved
  2. OnChanged
  3. OnChanged
文書を閉じた
  1. OnDocumentClose
  2. OnDocumentSelectChanged
新規作成
  1. OnModeChanged
  2. OnDocumentSelectChanged
折り返しを変更
  1. OnCaretMoved
  2. OnChanged
行ジャンプ
  1. OnCaretMoved
検索
  1. OnSelChanged
  2. OnCaretMoved
置換
  1. OnCaretMoved
  2. OnSelChanged
  3. OnChanged
色の反転を
  1. OnModeChanged
  2. OnChanged
行番号/ルーラ/記号の表示を変更
  1. OnChanged
フォントを変更
  1. OnCaretMoved
  2. OnChanged
マクロ->編集

なし

分割
  1. 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」オブジェクトと次の項に挙げたいくつかのみ。
(これ以外のファイルでも)引数のコメントで「*」が付いてるものは既定値。

よく出てくる変数名
  • $d:対象となる文書のDocument。ほぼ全てのメソッドが最後の引数として取る。これが指定されていない場合はアクティブな文書を対象とする。
  • $s:対象となる文書のSelection。

オブジェクト

Point
座標を表すオブジェクト。今のところx,yが含まれているだけ。
Range
選択範囲を表すオブジェクト。

KILIオブジェクトに含まれないもの

あまりにもよく使ってるので特別にグローバルに用意。よほどの事がない限りこれ以上増やさない。

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 listupAll

KILI.docex

Document拡張。Editorの領分と思われるものも含む。
あまり仕様が固まってないので激変の可能性あり。
all newFile clone cloneStyle getINI forceClose getScroll setScroll getBreakCode

KILI.code.js

文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。
decode encode decodeAll decodeSurrogate encodeSurrogate fromCharCode fromEntity toEntity fromOnig toOnig fromRegex toRegex fromUnicode toUnicode

組み込みオブジェクト拡張

名前の衝突に注意。特にStringExはincludeライブラリのStringExと衝突しています。

Array

clone compact del indexOf insert last mine pickup siblings undup

Number

constrain inRange padding toHexString

String

crlf cut dQuot sQuot enclose enclosed insert repeat startsWith endsWith escape unescape escapeRegExp unescapeRegExp heading tailing
onigFind(KILI.js内に記載)

SimplePM.js

テキストと実行コマンドのみからなる単純なPopupMenu。

メニューの定義
  • text:<string> メニューのテキスト。
  • command:<Function||Array>
    • Function:メニュー選択時に実行する関数。
    • Array:サブメニュー。空の配列の場合、区切りとなる。

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

ちょっと賢く改行する。

  • 開き括弧の直後で改行した場合にブロック(次行インデント+閉じ括弧)を作成する。
  • 行コメント内の場合、次行も行コメントにする。
オプション
  • 編集モードの指定。
  • 追加しないものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。
  • キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。

SwitchEvent.js

イベントマクロファイルを切り替える。

Events.js

イベント用に作成した関数群。

TextCount
文字数などをステータスバーに表示する(OnCaretMoved,OnChanged,OnChar,OnSelChangedなど)
SuppressModify
ディスク上に存在しないファイルを常に保存済みとみなす(OnModifiedなど)
SaveBackup
保存もしくはバックアップする(OnKillFocusなど)
AutoFile
ディスク上に存在しないファイルを自動保存
SaveActiveTab
直前のアクティブタブを保存・取得

LoopyBookmark.js

最後のブックマークまで来たら最初のブックマークへ移動する。

SetInRegExp.js

選択文字列を正規表現(鬼車)にはめ込んで検索する。

スポンサーリンク