「ブックマーク一覧ジャンプ」の版間の差分

MSY-07 (トーク | 投稿記録)
ソースコードの整形
MSY-07 (トーク | 投稿記録)
変数の宣言を追加
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。
Mery Ver 1.1.2.2840 および Ver 2.0.9.3936 での動作を確認しています。


== ソースコード ==
== ソースコード ==
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript" copy>
#title="ブックマーク一覧"
#title="ブックマーク一覧"
/*
/*
15行目: 13行目:
// 描画停止
// 描画停止
Redraw = false;
Redraw = false;
with(document.selection){
var sel = document.selection;
var flgBlock = !isEmpty;
var flgBlock = !sel.IsEmpty;
//カーソル位置の保存
//カーソル位置の保存
var activePos = GetActivePos();
var activePos = sel.GetActivePos();
var anchorPos = GetAnchorPos();
var anchorPos = sel.GetAnchorPos();
var sX = ScrollX;
var sX = ScrollX;
var sY = ScrollY;
var sY = ScrollY;


var bookmarks = new Array();
var bookmarks = [];
StartOfDocument(false);
var menuKey = "";
// 先頭行がブックマークされてないか
// 先頭行がブックマークされてないか
var isTopMarked = false;
var isTopMarked = false;
CharRight(false);
sel.SetActivePoint(mePosLogical, 1, 2);
if(PreviousBookmark()){
if(sel.PreviousBookmark()){
isTopMarked = true;
isTopMarked = true;
SelectLine();
sel.SelectLine();
menuKey = Text.slice(0,24).replace(/\t/g, "\\t");
menuKey = sel.Text.slice(0,24).replace(/\t/g, "\\t");
Collapse();
sel.Collapse();
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
bookmarks.push("Line " + sel.GetActivePointY(mePosLogical) + ":\t" + menuKey);
} else {
} else {
StartOfDocument(false);
sel.StartOfDocument(false);
}
}
while(NextBookmark()){
while(sel.NextBookmark()){
SelectLine();
sel.SelectLine();
menuKey = Text.slice(0, 24).replace(/\t/g, "\\t");
menuKey = sel.Text.slice(0, 24).replace(/\t/g, "\\t");
Collapse();
sel.Collapse();
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
bookmarks.push("Line " + sel.GetActivePointY(mePosLogical) + ":\t" + menuKey);
}
var bmcount = bookmarks.length;
if(bmcount == 0){
//カーソル位置の復帰
sel.SetActivePos(activePos);
sel.SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
} else {
var BookmarkMenu = CreatePopupMenu();
for(var i = 0; i < bmcount; i++){
//メニューのアクセスキーも1から始まるほうが便利
BookmarkMenu.Add("&" + (i+1) + " " + bookmarks[i], i+1);
}
}
var bmcount = bookmarks.length;
var ret = BookmarkMenu.Track(0);
if(bmcount == 0){
if(ret == 0){
//カーソル位置の復帰
//カーソル位置の復帰
SetActivePos(activePos);
sel.SetActivePos(activePos);
SetAnchorPos(anchorPos);
sel.SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollX = sX;
ScrollY = sY;
ScrollY = sY;
} else {
} else {
var BookmarkMenu = CreatePopupMenu();
sel.StartOfDocument(false);
for(var i = 0; i < bmcount; i++){
if(isTopMarked){
//メニューのアクセスキーも1から始まるほうが便利
ret--;
BookmarkMenu.Add("&" + (i+1) + " " + bookmarks[i], i+1)
}
}
var ret = BookmarkMenu.Track(0);
for(i = 0; i < ret; i++){
if(ret == 0){
sel.NextBookmark();
//カーソル位置の復帰
SetActivePos(activePos);
SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
} else {
StartOfDocument(false);
if(isTopMarked)ret--;
for(i = 0; i < ret; i++){ NextBookmark(); }
}
}
}
}
if(flgBlock){
}
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
if(flgBlock){
SetAnchorPos(anchorPos);
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
}
sel.SetAnchorPos(anchorPos);
}
}
// 描画再開
// 描画再開
Redraw = true;
Redraw = true;
})()
})();
</syntaxhighlight>
</syntaxhighlight>
== Mery Ver 2.7.0 以降への対応 ==
Mery Ver 2.7.0 以降で使用する場合は、20 行目付近を以下のように書き換えてください。
変更しない場合、ドキュメントの 1 行目がブックマークされていてもポップアップメニューに表示されなくなります (sukemaru) 。
; 変更前
18.    var bookmarks = new Array();
19.    <span style="color:#c00;">StartOfDocument(false);</span>
20.    <i style="color:#408080;">// 先頭行がブックマークされてないか</i>
21.    var isTopMarked = false;
22.    <span style="color:#c00;">CharRight(false);</span>
23.    if(PreviousBookmark()){
24.        isTopMarked = true;
; 変更後
18.    var bookmarks = new Array();
19.    <span style="color:#c00;">'''//''' StartOfDocument(false);</span>
20.    <i style="color:#408080;">// 先頭行がブックマークされてないか</i>
21.    var isTopMarked = false;
22.    <b style="color:#c00;">SetActivePoint(mePosLogical, 1, 2);</b>
23.    if(PreviousBookmark()){
24.        isTopMarked = true;
スポンサーリンク