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

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


<source lang="javascript">
== ソースコード ==
#title="ブックマーク一覧"
<syntaxhighlight lang="javascript" copy>
/*
#title="ブックマーク一覧"
* ブックマーク一覧をポップアップメニューにして選択ジャンプ
/*
* Mery標準のブックマークが対象
* ブックマーク一覧をポップアップメニューにして選択ジャンプ
* 範囲選択中の場合は選択範囲を拡大
* Mery標準のブックマークが対象
*/
* 範囲選択中の場合は選択範囲を拡大
(function(){
*/
  // 描画停止
(function(){
  Redraw = false;
// 描画停止
  with(document.selection){
Redraw = false;
    var flgBlock = !isEmpty;
var sel = document.selection;
    //カーソル位置の保存
var flgBlock = !sel.IsEmpty;
    var activePos = GetActivePos();
//カーソル位置の保存
    var anchorPos = GetAnchorPos();
var activePos = sel.GetActivePos();
    var sX = ScrollX;
var anchorPos = sel.GetAnchorPos();
    var sY = ScrollY;
var sX = ScrollX;
var sY = ScrollY;
    var bookmarks = new Array();
 
    StartOfDocument(false);
var bookmarks = [];
    // 先頭行がブックマークされてないか
var menuKey = "";
    var isTopMarked = false;
// 先頭行がブックマークされてないか
    CharRight(false);
var isTopMarked = false;
    if(PreviousBookmark()){
sel.SetActivePoint(mePosLogical, 1, 2);
      isTopMarked = true;
if(sel.PreviousBookmark()){
      SelectLine();
isTopMarked = true;
      menuKey = Text.slice(0,24).replace(/\t/g, "\\t");
sel.SelectLine();
      Collapse();
menuKey = sel.Text.slice(0,24).replace(/\t/g, "\\t");
      bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
sel.Collapse();
    } else {
bookmarks.push("Line " + sel.GetActivePointY(mePosLogical) + ":\t" + menuKey);
      StartOfDocument(false);
} else {
    }
sel.StartOfDocument(false);
    while(NextBookmark()){
}
      SelectLine();
while(sel.NextBookmark()){
      menuKey = Text.slice(0, 24).replace(/\t/g, "\\t");
sel.SelectLine();
      Collapse();
menuKey = sel.Text.slice(0, 24).replace(/\t/g, "\\t");
      bookmarks.push("Line " + GetActivePointY(mePosLogical) + ":\t" + menuKey);
sel.Collapse();
    }
bookmarks.push("Line " + sel.GetActivePointY(mePosLogical) + ":\t" + menuKey);
    var bmcount = bookmarks.length;
}
    if(bmcount == 0){
var bmcount = bookmarks.length;
      //カーソル位置の復帰
if(bmcount == 0){
      SetActivePos(activePos);
//カーソル位置の復帰
      SetAnchorPos(anchorPos);
sel.SetActivePos(activePos);
      ScrollX = sX;
sel.SetAnchorPos(anchorPos);
      ScrollY = sY;
ScrollX = sX;
    } else {
ScrollY = sY;
      var BookmarkMenu = CreatePopupMenu();
} else {
      for(var i = 0; i < bmcount; i++){
var BookmarkMenu = CreatePopupMenu();
        //メニューのアクセスキーも1から始まるほうが便利
for(var i = 0; i < bmcount; i++){
        BookmarkMenu.Add("&" + (i+1) + " " + bookmarks[i], i+1)
//メニューのアクセスキーも1から始まるほうが便利
      }
BookmarkMenu.Add("&" + (i+1) + " " + bookmarks[i], i+1);
      var ret = BookmarkMenu.Track(0);
}
      if(ret == 0){
var ret = BookmarkMenu.Track(0);
        //カーソル位置の復帰
if(ret == 0){
        SetActivePos(activePos);
//カーソル位置の復帰
        SetAnchorPos(anchorPos);
sel.SetActivePos(activePos);
        ScrollX = sX;
sel.SetAnchorPos(anchorPos);
        ScrollY = sY;
ScrollX = sX;
      } else {
ScrollY = sY;
        StartOfDocument(false);
} else {
        if(isTopMarked)ret--;
sel.StartOfDocument(false);
        for(i = 0; i < ret; i++){ NextBookmark(); }
if(isTopMarked){
      }
ret--;
    }
}
    if(flgBlock){
for(i = 0; i < ret; i++){
      //ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
sel.NextBookmark();
      SetAnchorPos(anchorPos);
}
    }
}
  }
}
  // 描画再開
if(flgBlock){
  Redraw = true;
//ジャンプ前の選択開始位置からジャンプ後のカーソル位置まで範囲選択
})()
sel.SetAnchorPos(anchorPos);
</source>
}
// 描画再開
Redraw = true;
})();
</syntaxhighlight>
スポンサーリンク