「簡易検索一覧などをアウトプット」の版間の差分
→変更履歴: バージョン表記の追加 |
ソースコードの追加、ダウンロードの削除 |
||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
簡易検索一覧などをパス付きでアウトプットバーに表示します<br> | 簡易検索一覧などをパス付きでアウトプットバーに表示します<br> | ||
| 34行目: | 31行目: | ||
* 1.0.0 (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> | |||
スポンサーリンク