「アウトラインのノードレベルを上げる」の版間の差分

MSY-07 (トーク | 投稿記録)
タブと空行の除去
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
当方プログラムをする身ではないため、不適切な記述があるかもしれません。訂正・更新あればよろしくお願いします。
2025年1月11日現在、Google Playでハルナアウトラインがダウンロードできないため、このマクロを使用する意味がなくなりました。


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript" copy>
#title = "ノードレベルを上げる"
#title = "ノードレベルを上げる"
/******************************************************************************************
/******************************************************************************************
25行目: 25行目:
var pos = 0;
var pos = 0;


reg = new RegExp("^\\" + NdMkr + "+");
var reg = new RegExp("^\\" + NdMkr + "+");


with (document.selection) {
var sel = document.selection;


//カーソル位置を保持
//カーソル位置を保持
pos = GetActivePos();
pos = sel.GetActivePos();


//ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動
//ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動
EndOfLine(false,mePosLogical);
sel.EndOfLine(false,mePosLogical);


//カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得
//カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得
//先頭n文字がノードの深さを示している想定
//先頭n文字がノードの深さを示している想定


if (Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){
if (sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){
SelectLine();
sel.SelectLine();
ndNmOld = Text;
ndNmOld = sel.Text;


//深さ2以上の時のみ、動作。
//深さ2以上の時のみ、動作。
if(ndNmOld.match(reg)[0].length > 1 ){
if(ndNmOld.match(reg)[0].length > 1 ){
//旧ノード名の先頭1文字を削除し、新ノード名とする(深さを1減らしレベルを上げる)
//旧ノード名の先頭1文字を削除し、新ノード名とする(深さを1減らしレベルを上げる)
ndNmNew = ndNmOld.slice(1) ;
ndNmNew = ndNmOld.slice(1) ;


//選択中の旧ノード名文字列を削除し、新ノード名を追記する。
//選択中の旧ノード名文字列を削除し、新ノード名を追記する。
Delete();
sel.Delete();
document.write(ndNmNew);
document.Write(ndNmNew);


//ノード記号を削除した分カーソル位置を巻き戻す
//ノード記号を削除した分カーソル位置を巻き戻す
pos --;
pos --;
}
}
}
//カーソル位置の復帰
SetActivePos (pos, false);
}
}
//カーソル位置の復帰
sel.SetActivePos (pos, false);


document.HighlightFind = false;
document.HighlightFind = false;
</syntaxhighlight>
</syntaxhighlight>
スポンサーリンク