「
利用者:黄身
」を編集中
2016年5月24日 (火) 22:37時点における
黄身
(
トーク
|
投稿記録
)
による版
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
思いつくままに作ってるので、役に立つかどうかは二の次三の次。 =覚え書き= ;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は実行できない。 ;Document.GetLine デフォルトでは表示行を取得。meGetLineLogicalが未定義なので0を指定する。 ;最初の数 *行:1 (Document.GetLine) *文頭からの位置:0 (Selection.GetActivePos) *桁:1 (Selection.GetActivePointX) *Editor,Document:0 (Editors.Item.Documents.Item) ;Window.Document Document.NewFile後も更新されない。 <source lang="javascript" style="word-wrap:break-word;"> Editor.ActiveDocument.NewFile(); Alert(Document.Text); </source> ;Editor.FindInFiles *ディレクトリ名は最後を"\\"か"\\*"にする。 *アクティブな文書が結果表示で乗っ取られる。 ;PopupMenu.Track *引数無しだとエラー。0でキャレット位置に表示。mePosMouseは1。 *キャンセルした場合の返り値は0。 *返り値を変数に入れるなりOutputするなりしないとメニューは表示されない。 *領域外をクリックしてキャンセルした場合、続けてTrackしていても実行されない。Escでだとされる。 <source lang="javascript" style="word-wrap:break-word;"> var p=CreatePopupMenu(); p.Add("1"); var x=p.Track(0); //ここでキャンセル if(x==0){ x=p.Track(0); } </source> ;Selection.Replace 検索オプションを何も付けたくない場合はflagに0を指定する。 <source lang="javascript" style="word-wrap:break-word;"> //正規表現を使わず、大文字と小文字を区別せず、カーソル位置の次の一つだけ、単語の途中でもマッチする Selection.Replace("x","y",0); </source> 検索文字列が0x000aから始まるとき、meFindReplaceRegExpを指定しないと、meReplaceAllがおかしい。 <source lang="javascript" style="word-wrap:break-word;"> Selection.Replace("\n","",meReplaceAll); //文書全体の最初の1つだけ処理される Selection.Replace(";\n","",meReplaceAll); //全て処理される Selection.Replace("\n;","",meReplaceAll); //文書全体の最初の1つだけ処理される </source> ;Document.Text 代入する場合、設定上の改行コードに関わらず、改行記号は文字列中の改行によって変わる。これがSelection.Textだと変わらない。 <source lang="javascript" style="word-wrap:break-word;"> Document.Text=Document.Text; //改行記号はLFになる Selection.SelectAll(); Selection.Text=Selection.Text; //元のまま </source> ;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 =マクロファイル= 最新版:[https://bitbucket.org/kimigatame/merymacro BitBucket] {| class="wikitable" !マクロ !ダウンロード !中身とか注意事項とか |- |[[#KILI.js|KILI]] |[[:File:kili.zip|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.js]] |[[:ファイル:SSnippet.zip|SSnippet.zip]] | |- |[[#Commentize.js|Commentize.js]] |[[:ファイル:Commentize.zip|Commentize.zip]] | |- |[[#SmartBreak.js|SmartBreak.js]] |[[:ファイル:SmartBreak.zip|SmartBreak.zip]] | |- |[[#LoopyBookmark.js|LoopyBookmark.js]] |[[:ファイル:LoopyBookmark.zip|LoopyBookmark.zip]] | |- |[[#SetInRegExp.js|SetInRegExp.js]] |[[:ファイル:SetInRegExp.zip|SetInRegExp.zip]] | |- |[[#Event関連マクロファイル群|Event]] |[https://bitbucket.org/kimigatame/merymarco_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と違い、文書は編集されない。 ;位置を判定するもの {| class="wikitable" |atLogicalHead |論理行頭 |- |atLogicalEnd |論理行末 |- |atViewHead |表示行頭 |- |atViewEnd |表示行末 |- |atEOF |文末 |} ;位置を取得するもの {| class="wikitable" |getRange |選択範囲 |- |getBottomPos |文末側位置 |- |getTopPos |文頭側位置 |- |getAnchorPoint |選択終了位置 |- |getActivePoint |選択開始位置 |- |getBottomPoint |文末側位置 |- |getTopPoint |文頭側位置 |- |getLogicalHeadPos |全ての論理行頭 |- |getLogicalEndPos |全ての論理行末 |- |getWrapPos |全ての折り返し位置 |- |getViewHeadPos |全ての表示行頭 |- |getViewEndPos |全ての表示行末 |} ;文字列を取得するもの {| class="wikitable" |getLeft |選択範囲より左 |- |getRight |選択範囲より右 |} ;座標を変換するもの {| class="wikitable" |ogicalToView |論理行→表示行 |- |logicalToPos |論理行→文頭から |- |posToLogical |文頭から→論理行 |- |posToView |文頭から→表示行 |- |viewToLogical |表示行→論理行 |- |viewToPos |表示行→文頭から |} ;選択するもの {| class="wikitable" |selectLine |複数行 |- |selectLines |複数行 |- |selectIfEmpty |選択されていなければ選択 |- |setRange |範囲 |- |reverse |反転 |- |excludeBreak |改行を除外 |} ;選択状態を判定するもの {| class="wikitable" |inline |行内 |- |multiline |複数行 |- |wholeLines |行全体 |- |getDirection |選択方向 |} ;検索するもの {| class="wikitable" |search |検索 |- |searchTextLines |行を検索 |- |count |マッチ数 |} ==KILI.edit== Selection拡張。KILI.selexと違い、文書は編集される。 {| class="wikitable" |duplicate |二重化 |- |sort |並べ替え |- |deleteLines |行削除 |- |deleteAll |文字列を全て削除 |- |deleteAllTextLines |文字列を含む行を削除 |- |breakAll |文字列を改行に変換 |} ==KILI.docex== Document拡張。Editorの領分と思われるものも含む。<br /> あまり仕様が固まってないので激変の可能性あり。 {| class="wikitable" |all |全て取得 |- |newFile |新規作成 |- |clone |複製 |- |cloneStyle |スタイルを指定して複製 |- |getINI |設定ファイルを取得 |- |forceClose |強制的に閉じる |- |getScroll |スクロール位置を取得 |- |setScroll |スクロール位置を指定 |- |getBreakCode |改行コードを取得 |} =KILI.code.js= 文字・コードポイントの相互変換とその表現を扱う。Unicodeのみが対象。<br /> {| class="wikitable" |decode |文字列→コードポイント |- |encode |コードポイント→文字列 |- |decodeAll |全ての形式→文字列 |- |decodeSurrogate |サロゲートペア→コードポイント |- |encodeSurrogate |コードポイント→サロゲートペア |- |fromCharCode |0x10000以上にも対応したString.fromCharCode |- |fromEntity |数値実体参照→文字列 |- |toEntity |文字列→数値実体参照 |- |fromOnig |鬼車形式→文字列 |- |toOnig |文字列→鬼車形式 |- |fromRegex |正規表現形式→文字列 |- |toRegex |文字列→正規表現形式 |- |fromUnicode |Unicode形式→文字列 |- |toUnicode |文字列→Unicode形式 |} =組み込みオブジェクト拡張= 名前の衝突に注意。特にStringExはincludeライブラリのStringExと衝突しています。 ==Array== {| class="wikitable" |clone |値渡し |- |compact |空白、null、undefinedを削除 |- |del |削除 |- |indexOf |文字列検索 |- |insert |挿入 |- |last |最後の要素を取得 |- |mine |条件指定して検索 |- |pickup |インデックス指定で取り出す |- |siblings |指定したプロパティの値を取得 |- |undup |重複削除 |} ==Number== {| class="wikitable" |constrain |範囲内に収める |- |inRange |範囲内にあるか判定 |- |padding |桁揃え |- |toHexString |十六進数表記 |} ==String== {| 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. <source lang="javascript" style="word-wrap:break-word;"> 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(); </source> ;create :メニューを作成。 ;getCommand :IDの項目のコマンドを返す。 ;getId :メニューの位置からIDを取得。 e.g.(冒頭の続き) <source lang="javascript" style="word-wrap:break-word;"> p.getText(p.getId("2-1")); //"b-c" </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 :コマンドを実行する =KeyList.js= 簡単なJSON形式のファイル読み書き。あまり汎用には使えない。 =MouseEmulator.js= Mouse.dll(http://ja.syoubook.info/wsh/wsftemplate/<nowiki />)を利用してマウスの操作や座標の取得をする。 =SSnippet.js= キャレット直前の文字列をキーとして補完する。 *補完前に内容を確認できる。 *また補完後指定位置にキャレットを移動できる。 *候補が複数の場合、ポップアップから選択する。 =Commentize.js= コメント化もしくはコメント解除する。 =SmartBreak.js= ちょっと賢く改行する。 *開き括弧の直後で改行した場合にブロック(次行インデント+閉じ括弧)を作成する。 *行コメント内の場合、次行も行コメントにする。 ;オプション *編集モードの指定。 *追加'''しない'''ものを選択できる(行コメント、ブロック、行コメント中のブロック、元々のインデント、ブロック内のインデント)。 *キャレットより右のテキストの配置を設定できる(そのまま、次行に追加、最後、削除)。 =LoopyBookmark.js= 最後のブックマークまで来たら最初のブックマークへ移動する。 =SetInRegExp.js= 選択文字列を正規表現(鬼車)にはめ込んで検索する。 =Event関連マクロファイル群= イベントマクロを使いやすく(?)したもの。 大体のメリットとしては、 *ポップアップ地獄を回避。 *イベント編集に必要なファイルは1つだけ。 *同じ様な処理にファイルを分けなくていい。 ;Event.js :イベントを実行するクラス。イベント名に応じてEventMain.jsの関数を呼び出す。また例外メッセージをアウトプットに投げている。 ;EventMain.js :イベントで実行される関数のファイル。イベントの編集はこのファイルをいじるだけでいい。 ;EventTemplate.js :1つのファイルで通常とイベントと両方のマクロに利用できるようするテンプレート。 ;「On~」で始まるファイル :Meryでイベントとして登録するファイル。Event.executeを呼び出すだけ。 ;EventMethod.js :イベント用に作った関数。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
利用者ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク