「アウトライン用ノード追加」の版間の差分
改行の修正 |
変数にvarの宣言を追加 |
||
| (同じ利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
2025年1月11日現在、Google Playでハルナアウトラインがダウンロードできないため、このマクロを使用する意味がなくなりました。 | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title = "ノード追加" | #title = "ノード追加" | ||
/*********************************************************************************************************** | /*********************************************************************************************************** | ||
| 30行目: | 30行目: | ||
var adNodeNm = "[AddedNode]"; | var adNodeNm = "[AddedNode]"; | ||
var sel = document.selection; | |||
//カーソル位置を保持 | |||
var pos = sel.GetActivePos(); | |||
//ノード行先頭にカーソルがある場合、自ノードを取り漏らすためカーソルを移動 | |||
sel.EndOfLine(false,mePosLogical); | |||
//先頭ノードより手前でない限り… | |||
if(sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){ | |||
//カーソル復帰し、行末にカーソルを移動 | |||
//ノード記号をカーソル手前へ検索して、発見した行を選択する。 | |||
sel.SetActivePos (pos, false); | |||
sel.EndOfLine(false,mePosLogical); | |||
sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp); | |||
sel.SelectLine(); | |||
//行頭ノード記号の数(ノードの深さ)を取得 | |||
var reg = new RegExp("^\\" + NdMkr + "+"); | |||
cntMkr = sel.Text.match(reg)[0].length; | |||
//次のノードを検索するためカーソルを移動 | |||
sel.LineDown(false, 1); | |||
sel.StartOfLine(false,mePosLogical); | |||
//カーソルより後にある行頭ノード記号の存在する行を取得 | |||
//末尾ノードでない限り… | |||
if (sel.Find("^\\"+ NdMkr , meFindNext | meFindReplaceRegExp) > 0){ | |||
//その1行手前に新ノード用の行を追加する | |||
//一行遡って行末へ移動 | |||
sel.LineUp(false, 1); | |||
sel.EndOfLine(false,mePosLogical); | |||
//改行、段落分の自動インデント発生を抑制できないためアンインデント、改行 | |||
// | sel.NewLine(1); | ||
sel.SelectLine(); | |||
sel.Unindent(1); | |||
sel.NewLine(1); | |||
//ノードの深さに応じたノード記号と、仮ノード名[AddedNode]と、空行を追加 | |||
for(var step = 0; step < cntMkr; step++){ | |||
document.Write(NdMkr); | |||
} | } | ||
document.Writeln(adNodeNm + "\r\n"); | |||
} else { | } else { | ||
//末尾ノードの場合、「次ノードの手前」が取得できないため特殊処理 | |||
//ファイル末尾に追加する | |||
sel.EndOfDocument(false); | |||
sel.NewLine(2); | |||
sel.StartOfLine(false,mePosLogical); | |||
// | //ノードの深さに応じたノード記号と、仮ノード名[AddedNode]と、空行を追加 | ||
document.Write(NdMkr); | for(var step = 0; step < cntMkr; step++){ | ||
document.Write(NdMkr); | |||
} | |||
document.Writeln( adNodeNm + "\r\n"); | document.Writeln( adNodeNm + "\r\n"); | ||
} | } | ||
} else { | |||
//先頭ノードより手前の時 | |||
//「手前のノードのノード記号の数」から深さを取得できないため特殊処理 | |||
//先頭に、ハルナアウトライン用の特殊記述行がある前提 | |||
sel.StartOfDocument(); | |||
sel.LineDown(false, 2); | |||
sel.NewLine(); | |||
//ノード記号1つと仮ノード名[AddedNode]と、空行を追加 | |||
document.Write(NdMkr); | |||
document.Writeln( adNodeNm + "\r\n"); | |||
} | } | ||
document.HighlightFind = false; | document.HighlightFind = false; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
スポンサーリンク