見出しジャンプ

提供: MeryWiki
2023年11月3日 (金) 19:03時点におけるYuko (トーク | 投稿記録)による版 (ページの作成:「== 概要 == 見出しとしてよく使われる特定の記号で始まる行、および墨括弧【aaa】のように見出しを示す修飾括弧のみの行にジャンプします。 2023/11/03 現在、認識する見出し記号は以下のとおりです。(対象行内の前後の空白は無視します) * 右記の記号いずれかで始まる行: #■□◆◇◯○◎● * 行頭、行末が右記の記号の組み合わせの行: ** | **** | 【…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

見出しとしてよく使われる特定の記号で始まる行、および墨括弧【aaa】のように見出しを示す修飾括弧のみの行にジャンプします。

2023/11/03 現在、認識する見出し記号は以下のとおりです。(対象行内の前後の空白は無視します)

  • 右記の記号いずれかで始まる行: #■□◆◇◯○◎●
  • 行頭、行末が右記の記号の組み合わせの行: ** | **** | 【】 | [] | [] | 《》 | 〈〉

#include ディレクティブを用いて共通部をまとめているので、以下3つのファイルをまとめてMacroフォルダに格納してご利用ください。

  • MoveToHeadingSymbolAbove.js
  • MoveToHeadingSymbolBelow.js
  • MoveToHeadingSymbolFunc.js

ソースコード

MoveToHeadingSymbolAbove.js

#include "MoveToHeadingSymbolFunc.js"
#title = "前の見出し記号に移動"

moveAbove();

MoveToHeadingSymbolBelow.js

#include "MoveToHeadingSymbolFunc.js"
#title = "次の見出し記号に移動"

moveBelow();

MoveToHeadingSymbolFunc.js

var doc = document;
var sel = document.selection;

var HEADING_SYMBOL = /^[\s ]*([#■□◆◇◯○◎●]|(\*{1,2}.+\*{1,2}|【.+】|\[.+\]|[.+]|《.+》|〈.+〉)[\s ]*$)/;
var MAX_MOVE_LINES = 10000;

function moveBelow() {
    // 現在位置を取得
    var currentY = sel.GetActivePointY(mePosLogical);
    // 下方向に向かって検索
    for (var i = currentY + 1; i < currentY + MAX_MOVE_LINES; i++) {
        var s = doc.GetLine(i);
        if (s.match(HEADING_SYMBOL)) {
            // マッチした行の先頭に移動
            sel.SetActivePoint(mePosLogical, 1, i, false);
            break;
        }
    }
}

function moveAbove() {
    // 現在位置を取得
    var currentY = sel.GetActivePointY(mePosLogical);
    // 上方向に向かって検索
    var goalY = currentY - MAX_MOVE_LINES;
    if (goalY < 0) goalY = 0;
    for (var i = currentY - 1; i > goalY; i--) {
        var s = doc.GetLine(i);
        if (s.match(HEADING_SYMBOL)) {
            // マッチした行の先頭に移動
            sel.SetActivePoint(mePosLogical, 1, i, false);
            break;
        }
    }
}
スポンサーリンク