「簡易検索一覧などをアウトプット」の版間の差分
ナビゲーションに移動
検索に移動
→変更履歴: バージョン表記の追加 |
プロパティ名の修正(マクロリファレンス:3:Window オブジェクト#OutputBar プロパティを参照) |
||
| (同じ利用者による、間の6版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
簡易検索一覧などをパス付きでアウトプットバーに表示します。 | |||
== 機能 == | == 機能 == | ||
# カーソル位置をフルパス(行番号,桁数) 付きでアウトプットバーに表示します | |||
# ブックマーク一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します | |||
# 簡易検索一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します | |||
アウトプットされたパスなどをダブルクリック、またはF10キーを押すことにより、該当箇所へジャンプすることが出来ます(※このジャンプ機能は当マクロの機能ではなく、アウトプットバーの機能です)。 | |||
他にアウトプットバーの表示/非表示や、クリア、選択範囲の表示などの機能もあります。 | |||
他にアウトプットバーの表示/ | |||
== 注意事項 == | == 注意事項 == | ||
| 18行目: | 15行目: | ||
const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標 | const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標 | ||
通常、「フルパス(論理行番号,論理桁数) | 通常、「フルパス(論理行番号,論理桁数) 該当箇所の内容」の形式で表示します。 | ||
上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、<br> | 上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、<br> | ||
「フルパス(論理行番号,桁数) | 「フルパス(論理行番号,桁数) (表示行番号,表示桁数) 該当箇所の内容」のようにカッコを追加する形で表示します。 | ||
マクロが検索ワードを見失った場合や文書にブックマークが存在しない場合は各項目をグレーアウトして表示します、予めご了承ください。 | |||
また、ファイルに1行しかない場合、当マクロはブックマークを見失います、予めご了承下さい。 | |||
== 変更履歴 == | == 変更履歴 == | ||
* 1.0.2 (2019-04-16) | * 1.0.2 (2019-04-16) | ||
** | ** Ver 2.7.2 ブックマークの仕様変更に伴う修正 | ||
* 1.0.1 (2018-12-31) | * 1.0.1 (2018-12-31) | ||
** 微修正 | ** 微修正 | ||
* 1.0.0 (2018-12-31) | * 1.0.0 (2018-12-31) | ||
** 初版 | ** 初版 | ||
== ソースコード == | |||
<syntaxhighlight lang="javascript" copy> | |||
#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> | |||
2025年11月25日 (火) 17:24時点における最新版
概要[編集]
簡易検索一覧などをパス付きでアウトプットバーに表示します。
機能[編集]
- カーソル位置をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
- ブックマーク一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
- 簡易検索一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
アウトプットされたパスなどをダブルクリック、またはF10キーを押すことにより、該当箇所へジャンプすることが出来ます(※このジャンプ機能は当マクロの機能ではなく、アウトプットバーの機能です)。
他にアウトプットバーの表示/非表示や、クリア、選択範囲の表示などの機能もあります。
注意事項[編集]
// 設定:一覧表示の行番号について、表示方法を設定できます const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標
通常、「フルパス(論理行番号,論理桁数) 該当箇所の内容」の形式で表示します。
上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、
「フルパス(論理行番号,桁数) (表示行番号,表示桁数) 該当箇所の内容」のようにカッコを追加する形で表示します。
マクロが検索ワードを見失った場合や文書にブックマークが存在しない場合は各項目をグレーアウトして表示します、予めご了承ください。
また、ファイルに1行しかない場合、当マクロはブックマークを見失います、予めご了承下さい。
変更履歴[編集]
- 1.0.2 (2019-04-16)
- Ver 2.7.2 ブックマークの仕様変更に伴う修正
- 1.0.1 (2018-12-31)
- 微修正
- 1.0.0 (2018-12-31)
- 初版
ソースコード[編集]
#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; //
}
スポンサーリンク