アウトラインのノードレベルを下げる

提供: MeryWiki
2018年6月25日 (月) 23:48時点における125.14.101.162 (トーク)による版 (ページの作成:「<source lang="javascript"> #title = "ノードレベルを下げる" /****************************************************************************************************...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動
#title = "ノードレベルを下げる"
/*******************************************************************************************************
********************************************************************************************************
**
**  当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」
**  https://play.google.com/store/apps/details?id=jp.blogspot.halnablue.HalnaOutliner
**  とMeryを併用する前提で、Mery側に欲しい機能を私が勝手にマクロで実装したものです。
**  当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」と直接の関係はありません。
**  当マクロについてhalna氏への問い合わせはおやめください。
**  
**  選択中のノードの「ノードを示す文字」を一つ追加する。
**  但し、Meryの仕様上8階層目以降はMeryのアウトラインに適用されない。
**  ノードを示す記号にはハルナアウトライン用に"."を用いる。
**  NdMkrの値を変更すればMarkdownやらにも使えるかもしれません(未検証)。
**
********************************************************************************************************
*******************************************************************************************************/

var NdMkr = ".";
var cntMkr = 0;
var ndNmOld = "";
var ndNmNew = "";
var pos = 0;

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

with (document.selection) {

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

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

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

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

		//旧ノード名の先頭にもう1文字追加し、新ノード名とする(深さを1増やしレベルを下げる)
		ndNmNew = NdMkr + ndNmOld;
		
		//選択中の旧ノード名文字列を削除し、新ノード名を追記する。
		Delete();
		document.write(ndNmNew);

		pos ++;
	}
	
	//カーソル位置の復帰
	SetActivePos (pos, false);
}
document.HighlightFind = false;
スポンサーリンク