「
簡易検索一覧などをアウトプット
」を編集中
2025年1月16日 (木) 22:48時点における
MSY-07
(
トーク
|
投稿記録
)
による版
(空行の追加、brタグの削除)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 概要 == 簡易検索一覧などをパス付きでアウトプットバーに表示します。 == 機能 == # カーソル位置をフルパス(行番号,桁数)付きでアウトプットバーに表示します # ブックマーク一覧をフルパス(行番号,桁数)付きでアウトプットバーに表示します # 簡易検索一覧をフルパス(行番号,桁数)付きでアウトプットバーに表示します アウトプットされたパスなどをダブルクリック、またはF10キーを押すことにより、該当箇所へジャンプすることが出来ます(※このジャンプ機能は当マクロの機能ではなく、アウトプットバーの機能です)。 他にアウトプットバーの表示/非表示や、クリア、選択範囲の表示などの機能もあります。 == 注意事項 == // 設定:一覧表示の行番号について、表示方法を設定できます const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標 通常、「フルパス(論理行番号,論理桁数) 該当箇所の内容」の形式で表示します。 上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、<br> 「フルパス(論理行番号,桁数) (表示行番号,表示桁数) 該当箇所の内容」<br> のようにカッコを追加する形で表示します。 マクロが検索ワードを見失った場合や文書にブックマークが存在しない場合は各項目をグレーアウトして表示します、予めご了承ください。 (2019-04-16追記)ファイルに1行しかない場合、当マクロはブックマークを見失います、予めご了承下さい。 == 変更履歴 == * 1.0.2 (2019-04-16) ** ver2.7.2 ブックマークの仕様変更に伴う修正 * 1.0.1 (2018-12-31) ** 微修正 * 1.0.0 (2018-12-31) ** 初版 == ソースコード == <syntaxhighlight lang="javascript"> #title = "簡易検索一覧などをアウトプット" //------------------------------------------------------------------------------ // 設定:一覧表示の行番号について、表示方法を設定できます const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標 //------------------------------------------------------------------------------ // 定数(ポップアップメニューID) const nEsc=0; // ポップアップメニューキャンセル時の項目ID const nSep=0; // セパレータ表示のためのダミーID const nOutFlg=50; // アウトプットバーON/OFFのID const nSlctOut=51; // 選択範囲をアウトプットするID const nOutClr=52; // アウトプットバーのクリアのID const nOutPos=53; // カーソル位置をアウトプットID const nOutBook=54; // ブックマーク一覧をアウトプットID const nOutFind=55; // 簡易検索一覧をアウトプットID // 変数 var activePos; // 位置退避用 var anchorPos; // 位置退避用 var sX; // 位置退避用 var sY; // 位置退避用 var sDate = new Date(); // 処理時間計測用 var fPath = Document.FullName; var s = document.selection; var o = outputbar; var str = ""; // 文字列用変数 var wd = ""; // 検索ワード var pos; // 位置用変数 var yl; // 論理座標の行番号 var yv; // 表示座標の行番号 var xl; // 論理座標の桁数 var xv; // 表示座標の桁数 var xyl = ""; // 論理座標の文字列(yl,xl) var xyv = ""; // 表示座標の文字列(yv,xv) // 関数 function StPos() { // カーソル位置の保存 activePos = s.GetActivePos(); anchorPos = s.GetAnchorPos(); sX = ScrollX; sY = ScrollY; } function LdPos() { // カーソル位置の復帰 s.SetActivePos(activePos); s.SetAnchorPos(anchorPos); ScrollX = sX; ScrollY = sY; } function GetStr() { // カーソル位置以降の文字列を選択する pos = s.GetActivePos(); s.EndOfLine(false, mePosLogical); s.SetAnchorPos(pos); str = s.Text.slice(0, 24).replace(/\n/g, ""); s.SetActivePos(pos); } function MkPos() { // 座標表示用の文字列を作成する yl = s.GetActivePointY(mePosLogical); // 論理座標の行番号 yv = s.GetActivePointY(mePosView); // 表示座標の行番号 xl = s.GetActivePointX(mePosLogical); // 論理座標の桁数 xv = s.GetActivePointX(mePosView); // 表示座標の桁数 xyl = "(" + yl + "," + xl + ") "; // 論理座標の文字列(yl,xl) xyv = "(" + yv + "," + xv + ") "; // 表示座標の文字列(yv,xv) } function OpPos() { // カーソル位置をアウトプット StPos(); // カーソル位置の保存 MkPos(); // 座標表示用の文字列を作成する GetStr(); // カーソル位置以降の文字列を選択する if(sLgcl) o.Writeln(fPath + xyl + "\t" + str); else o.Writeln(fPath + xyl + xyv + "\t" + str); LdPos(); // カーソル位置の復帰 } function ChkBook() { // ブックマークの存在チェック var bmcount = 0; StPos(); s.CharRight(false); if(s.PreviousBookmark()) bmcount++; s.CharLeft(false); if(s.NextBookmark()) bmcount++; LdPos(); return bmcount; } function OpBook() { // ブックマーク一覧アウトプット // (goatさんの『ブックマーク一覧ジャンプ』を参照) StPos(); // 先頭行がブックマークされてないか s.SetActivePoint(mePosLogical,1,2,false); if(s.PreviousBookmark()) { // 文書内の前のブックマークの位置に移動 MkPos(); // 座標表示用の文字列を作成する s.SelectLine(); str = s.Text.slice(0,24).replace(/\n/g, ""); s.Collapse(); // 選択範囲を解除 if(sLgcl) o.Writeln(fPath + xyl + "\tBook: " + str); else o.Writeln(fPath + xyl + " " + xyv + "\tBook: " + str); } else { s.StartOfDocument(false); } while(s.NextBookmark()) { // 次のブックマークが見つかる限り続ける MkPos(); // 座標表示用の文字列を作成する s.SelectLine(); // カーソル位置の論理行を選択 str = s.Text.slice(0, 24).replace(/\n/g, ""); if(sLgcl) o.Writeln(fPath + xyl + "\tBook: " + str); else o.Writeln(fPath + xyl + " " + xyv + "\tBook: " + str); s.Collapse(); // 選択範囲を解除 } LdPos(); } function ChkFind() { // 検索ワードのチェック var findcount = 0; StPos(); // 検索ワードの参照・決定 if( s.isEmpty ) { // 選択範囲がない時、前回の検索ワードを取得 s.FindRepeat(meFindNext | meFindAround); wd = s.Text; }else{ // 選択範囲がある時、それを検索ワードとする wd = s.Text; } LdPos(); // 検索ワードが無い時、0を返す if(wd == "") return findcount; } function OpFind() { // 簡易検索一覧をアウトプット StPos(); pos = 0; // カーソル位置 s.StartOfDocument(); // 文書の先頭に移動 while( s.Find(wd, meFindNext) == 1) { // 次を検索し、見つかる限り続ける MkPos(); // 座標表示用の文字列を作成する GetStr(); // カーソル位置以降の文字列を選択する if(sLgcl) o.Writeln(fPath + xyl + "\tFind: " + str); else o.Writeln(fPath + xyl + " " + xyv + "\tFind: " + str); s.Collapse(); // 選択範囲を解除 s.SetActivePos(pos + wd.length); } LdPos(); } //------------------------------------------------------------------------------ // ここからマクロ本体 //------------------------------------------------------------------------------ var fdc = ChkFind(); // 検索ワードのチェック var bkc = ChkBook(); // ブックマークのチェック var pm = CreatePopupMenu(); // PopupMenuオブジェクト pm.Add("カーソル位置をアウトプット", nOutPos); if(bkc == 0) pm.Add("ブックマーク一覧をアウトプット", nSep, meMenuGrayed); else pm.Add("ブックマーク一覧をアウトプット", nOutBook); if(fdc == 0) pm.Add("簡易検索一覧をアウトプット", nSep, meMenuGrayed); else pm.Add("簡易検索一覧をアウトプット", nOutFind); pm.Add("----", nSep, meMenuSeparator); if(o.Visible) pm.Add("アウトプットバー", nOutFlg, meMenuChecked); else pm.Add("アウトプットバー", nOutFlg); pm.Add("アウトプットバーをクリアする", nOutClr); pm.Add("選択範囲をアウトプットに表示(&V)", nSlctOut); var mid = pm.Track(0); // ポップアップメニューを表示し、項目IDを受け取る switch(mid) { // 選ばれた項目毎に処理 case nEsc: break; // キャンセル case nOutPos: OpPos(); break; // カーソル位置をアウトプット case nOutBook: OpBook(); break; // ブックマーク一覧をアウトプット case nOutFind: OpFind(); break; // 検索一覧をアウトプット case nOutFlg: o.Visible = !o.Visible; break; // アウトプットバーON/OFF case nOutClr: o.Clear(); break; // アウトプットバーのクリア case nSlctOut: o.Writeln( s.Text ); break; // 選択範囲をアウトプット default: break; // } </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク