「ブックマーク一覧ジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 1行目: | 1行目: | ||
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ||
Mery | Mery Ver.1.1.2.2840 および Ver.2.0.9.3936 での動作を確認しています。 | ||
(2012.09.24) | |||
<source lang="javascript"> | <source lang="javascript"> | ||
/ | #title="ブックマーク一覧" | ||
/* | |||
// 描画停止 | * ブックマーク一覧をポップアップメニューにして選択ジャンプ | ||
Redraw = false; | * Mery標準のブックマークが対象 | ||
with(document.selection){ | * 範囲選択中の場合は選択範囲を拡大 | ||
*/ | |||
(function(){ | |||
// 描画停止 | |||
Redraw = false; | |||
with(document.selection){ | |||
var flgBlock = !isEmpty; | |||
//カーソル位置の保存 | |||
var activePos = GetActivePos(); | |||
var anchorPos = GetAnchorPos(); | |||
var sX = ScrollX; | |||
var sY = ScrollY; | |||
var bookmarks = new Array(); | |||
StartOfDocument(false); | |||
// 先頭行がブックマークされてないか | |||
var isTopMarked = false; | |||
CharRight(false); | |||
if(PreviousBookmark()){ | |||
isTopMarked = true; | |||
SelectLine(); | |||
menuKey = Text.slice(0,24).replace(/\t/g, "\\t"); | |||
Collapse(); | |||
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey); | |||
} else { | |||
StartOfDocument(false); | |||
} | |||
while(NextBookmark()){ | |||
SelectLine(); | |||
menuKey = Text.slice(0, 24).replace(/\t/g, "\\t"); | |||
Collapse(); | |||
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey); | |||
} | |||
var bmcount = bookmarks.length; | |||
if(bmcount == 0){ | |||
//カーソル位置の復帰 | |||
SetActivePos(activePos); | |||
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 ret = BookmarkMenu.Track(0); | |||
if(ret == 0){ | |||
//カーソル位置の復帰 | |||
SetActivePos(activePos); | |||
SetAnchorPos(anchorPos); | |||
ScrollX = sX; | |||
ScrollY = sY; | |||
} else { | |||
StartOfDocument(false); | |||
if(isTopMarked)ret--; | |||
for(i = 0; i < ret; i++){ NextBookmark(); } | |||
} | |||
} | |||
if(flgBlock){ | |||
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択 | |||
SetAnchorPos(anchorPos); | |||
} | |||
} | |||
// 描画再開 | |||
Redraw = true; | |||
})() | |||
} | |||
// 描画再開 | |||
Redraw = true; | |||
</source> | </source> | ||
2012年9月24日 (月) 22:21時点における版
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 Mery Ver.1.1.2.2840 および Ver.2.0.9.3936 での動作を確認しています。 (2012.09.24)
#title="ブックマーク一覧"
/*
* ブックマーク一覧をポップアップメニューにして選択ジャンプ
* Mery標準のブックマークが対象
* 範囲選択中の場合は選択範囲を拡大
*/
(function(){
// 描画停止
Redraw = false;
with(document.selection){
var flgBlock = !isEmpty;
//カーソル位置の保存
var activePos = GetActivePos();
var anchorPos = GetAnchorPos();
var sX = ScrollX;
var sY = ScrollY;
var bookmarks = new Array();
StartOfDocument(false);
// 先頭行がブックマークされてないか
var isTopMarked = false;
CharRight(false);
if(PreviousBookmark()){
isTopMarked = true;
SelectLine();
menuKey = Text.slice(0,24).replace(/\t/g, "\\t");
Collapse();
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
} else {
StartOfDocument(false);
}
while(NextBookmark()){
SelectLine();
menuKey = Text.slice(0, 24).replace(/\t/g, "\\t");
Collapse();
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
}
var bmcount = bookmarks.length;
if(bmcount == 0){
//カーソル位置の復帰
SetActivePos(activePos);
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 ret = BookmarkMenu.Track(0);
if(ret == 0){
//カーソル位置の復帰
SetActivePos(activePos);
SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
} else {
StartOfDocument(false);
if(isTopMarked)ret--;
for(i = 0; i < ret; i++){ NextBookmark(); }
}
}
if(flgBlock){
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
SetAnchorPos(anchorPos);
}
}
// 描画再開
Redraw = true;
})()
スポンサーリンク