「簡易検索一覧などをアウトプット」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
 
(2人の利用者による、間の12版が非表示)
1行目: 1行目:
= 簡易検索一覧などをアウトプット =
[[ファイル:簡易検索一覧などをアウトプット.zip]]
== 概要 ==
== 概要 ==
簡易検索一覧などをパス付きでアウトプットバーに表示します<br>
簡易検索一覧などをパス付きでアウトプットバーに表示します。


== 機能 ==
== 機能 ==
1.カーソル位置をフルパス(行番号,桁数)付きでアウトプットバーに表示します<br>
# カーソル位置をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
2.ブックマーク一覧をフルパス(行番号,桁数)付きでアウトプットバーに表示します<br>
# ブックマーク一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
3.簡易検索一覧をフルパス(行番号,桁数)付きでアウトプットバーに表示します<br>
# 簡易検索一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
 
アウトプットされたパスなどをダブルクリック、またはF10キーを押すことにより、該当箇所へジャンプすることが出来ます(※このジャンプ機能は当マクロの機能ではなく、アウトプットバーの機能です)。


アウトプットされたパスなどをダブルクリック、またはF10キーを押すことにより、該当箇所へジャンプすることが出来ます<br>
他にアウトプットバーの表示/非表示や、クリア、選択範囲の表示などの機能もあります。
(※このジャンプ機能は当マクロの機能ではなく、アウトプットバーの機能です)<br>
他にアウトプットバーの表示/非表示や、クリア、選択範囲の表示などの機能もあります<br>


== 注意点 ==
== 注意事項 ==
  // 設定:一覧表示の行番号について、表示方法を設定できます
  // 設定:一覧表示の行番号について、表示方法を設定できます
  const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標
  const sLgcl = true; // 行番号表示 true:論理座標,false:表示座標


通常、「フルパス(論理行番号,論理桁数) 該当箇所の内容」の形式で表示します<br>
通常、「フルパス(論理行番号,論理桁数) 該当箇所の内容」の形式で表示します。
 
上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、<br>
上記設定を表示座標にした場合であっても(論理行番号,桁数)の箇所は変更できないため、<br>
「フルパス(論理行番号,桁数) (表示行番号,表示桁数) 該当箇所の内容」<br>
「フルパス(論理行番号,桁数) (表示行番号,表示桁数) 該当箇所の内容」のようにカッコを追加する形で表示します。
このようにカッコを追加する形で表示します<br>
 
マクロが検索ワードを見失った場合や文書にブックマークが存在しない場合は各項目をグレーアウトして表示します、予めご了承ください。
 
また、ファイルに1行しかない場合、当マクロはブックマークを見失います、予めご了承下さい。
 
== 変更履歴 ==
* 1.0.2 (2019-04-16)
** Ver 2.7.2 ブックマークの仕様変更に伴う修正
* 1.0.1 (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オブジェクト


マクロが検索ワードを見失った場合や文書にブックマークが存在しない場合は各項目をグレーアウトして表示します<br>
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を受け取る
・2019/04/16 ver2.7.2 ブックマークの仕様変更に伴う修正<br>
switch(mid)
・2018/12/31 微修正<br>
{ // 選ばれた項目毎に処理
・2018/12/31 初版<br>
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時点における最新版

概要[編集]

簡易検索一覧などをパス付きでアウトプットバーに表示します。

機能[編集]

  1. カーソル位置をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
  2. ブックマーク一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します
  3. 簡易検索一覧をフルパス(行番号,桁数) 付きでアウトプットバーに表示します

アウトプットされたパスなどをダブルクリック、または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;	// 
}
スポンサーリンク