「ブックマーク一覧ジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「;説明 ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 Mery 本体 Ver1.0.14.2780 ...」 |
編集の要約なし |
||
| 1行目: | 1行目: | ||
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 | ||
Mery 本体 Ver1.0.14.2780 では論理行頭での SelectLine が効かないらしいので参考文字列は表示されません。 | Mery 本体 Ver1.0.14.2780 では論理行頭での SelectLine が効かないらしいので参考文字列は表示されません。 | ||
<source lang="javascript"> | <source lang="javascript"> | ||
//ブックマーク一覧をポップアップメニューにして選択ジャンプ | //ブックマーク一覧をポップアップメニューにして選択ジャンプ | ||
2012年6月22日 (金) 17:41時点における版
ポップアップメニューでジャンプ先を選択。範囲指定中はジャンプ先まで選択範囲を拡大します。 Mery 本体 Ver1.0.14.2780 では論理行頭での SelectLine が効かないらしいので参考文字列は表示されません。
//ブックマーク一覧をポップアップメニューにして選択ジャンプ
// 描画停止
Redraw = false;
with(document.selection){
//現在位置の記憶
var cursolX = GetActivePointX(mePosLogical);
var cursolY = GetActivePointY(mePosLogical);
var sX = ScrollX;
var sY = ScrollY;
var shift = !IsEmpty;
if(shift){
//選択範囲の記憶
var anchorX = GetAnchorPointX(mePosLogical);
var anchorY = GetAnchorPointY(mePosLogical);
var topX = GetTopPointX(mePosLogical);
var topY = GetTopPointY(mePosLogical);
var bottomX = GetBottomPointX(mePosLogical);
var bottomY = GetBottomPointY(mePosLogical);
}
var bookmarks = new Array;
var menyKey;
StartOfDocument(false);
//先頭行がブックマークされてないか
var isTopMarked = false;
CharRight(false);
if(PreviousBookmark()){
isTopMarked = true;
SelectLine();
menuKey = Text.slice(0,24).replace(/\t/g, "\\t");
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
} else {
//もう一回先頭行に戻る
StartOfDocument(false);
}
while(NextBookmark()){
SelectLine();
menuKey = Text.slice(0, 24).replace(/\t/g, "\\t");
bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
}
var bmcount = bookmarks.length;
if(bmcount == 0){
//カーソル位置と選択範囲の復帰
SetActivePoint(mePosLogical, cursolX, cursolY, false);
if(shift){
SetAnchorPoint(mePosLogical, anchorX, anchorY);
}
SCrollX = sX;
SCrollY = sY;
} else {
var BookmarkMenu = CreatePopupMenu();
for(var i = 0; i < bmcount; i++){
BookmarkMenu.Add("&" + i + " " + bookmarks[i], i + 1)
}
var ret = BookmarkMenu.Track(0);
if(ret == 0){
//カーソル位置と選択範囲の復帰
SetActivePoint(mePosLogical, cursolX, cursolY, false);
if(shift){
SetAnchorPoint(mePosLogical, anchorX, anchorY);
}
SCrollX = sX;
SCrollY = sY;
} else {
StartOfDocument(false);
if(isTopMarked){ ret--; }
for(i = 0; i < ret; i++){ NextBookmark(); }
}
}
if(shift){
if(GetActivePointY(mePosLogical) > topY){
SetAnchorPoint(mePosLogical, topX, topY);
}else{
SetAnchorPoint(mePosLogical, bottomX, bottomY);
}
}
}
// 描画再開
Redraw = true;
スポンサーリンク