「ブックマーク一覧ジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
配列を修正、文の末尾にセミコロンを追加 |
変数の宣言を追加 |
||
| (同じ利用者による、間の2版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ||
== ソースコード == | == ソースコード == | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title="ブックマーク一覧" | #title="ブックマーク一覧" | ||
/* | /* | ||
| 24行目: | 22行目: | ||
var bookmarks = []; | var bookmarks = []; | ||
var menuKey = ""; | |||
// 先頭行がブックマークされてないか | // 先頭行がブックマークされてないか | ||
var isTopMarked = false; | var isTopMarked = false; | ||
sel. | sel.SetActivePoint(mePosLogical, 1, 2); | ||
if(sel.PreviousBookmark()){ | if(sel.PreviousBookmark()){ | ||
isTopMarked = true; | isTopMarked = true; | ||
| 81行目: | 79行目: | ||
})(); | })(); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2025年11月25日 (火) 16:53時点における最新版
概要[編集]
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。
ソースコード[編集]
#title="ブックマーク一覧"
/*
* ブックマーク一覧をポップアップメニューにして選択ジャンプ
* Mery標準のブックマークが対象
* 範囲選択中の場合は選択範囲を拡大
*/
(function(){
// 描画停止
Redraw = false;
var sel = document.selection;
var flgBlock = !sel.IsEmpty;
//カーソル位置の保存
var activePos = sel.GetActivePos();
var anchorPos = sel.GetAnchorPos();
var sX = ScrollX;
var sY = ScrollY;
var bookmarks = [];
var menuKey = "";
// 先頭行がブックマークされてないか
var isTopMarked = false;
sel.SetActivePoint(mePosLogical, 1, 2);
if(sel.PreviousBookmark()){
isTopMarked = true;
sel.SelectLine();
menuKey = sel.Text.slice(0,24).replace(/\t/g, "\\t");
sel.Collapse();
bookmarks.push("Line " + sel.GetActivePointY(mePosLogical) + ":\t" + menuKey);
} else {
sel.StartOfDocument(false);
}
while(sel.NextBookmark()){
sel.SelectLine();
menuKey = sel.Text.slice(0, 24).replace(/\t/g, "\\t");
sel.Collapse();
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 ret = BookmarkMenu.Track(0);
if(ret == 0){
//カーソル位置の復帰
sel.SetActivePos(activePos);
sel.SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
} else {
sel.StartOfDocument(false);
if(isTopMarked){
ret--;
}
for(i = 0; i < ret; i++){
sel.NextBookmark();
}
}
}
if(flgBlock){
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
sel.SetAnchorPos(anchorPos);
}
// 描画再開
Redraw = true;
})();
スポンサーリンク