「アウトラインのノードレベルを上げる」の版間の差分
ナビゲーションに移動
検索に移動
<source>タグを<syntaxhighlight>タグに置き換える |
変数にvarの宣言を追加 |
||
| (同じ利用者による、間の5版が非表示) | |||
| 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 + "+"); | ||
var sel = document.selection; | |||
//カーソル位置を保持 | |||
pos = sel.GetActivePos(); | |||
//ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動 | |||
sel.EndOfLine(false,mePosLogical); | |||
//カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得 | |||
//先頭n文字がノードの深さを示している想定 | |||
if (sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){ | |||
sel.SelectLine(); | |||
ndNmOld = sel.Text; | |||
// | //深さ2以上の時のみ、動作。 | ||
if(ndNmOld.match(reg)[0].length > 1 ){ | |||
//旧ノード名の先頭1文字を削除し、新ノード名とする(深さを1減らしレベルを上げる) | |||
if ( | ndNmNew = ndNmOld.slice(1) ; | ||
ndNmOld | |||
// | //選択中の旧ノード名文字列を削除し、新ノード名を追記する。 | ||
sel.Delete(); | |||
document.Write(ndNmNew); | |||
//ノード記号を削除した分カーソル位置を巻き戻す | |||
pos --; | |||
} | } | ||
} | } | ||
//カーソル位置の復帰 | |||
sel.SetActivePos (pos, false); | |||
document.HighlightFind = false; | document.HighlightFind = false; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2025年11月24日 (月) 16:56時点における最新版
2025年1月11日現在、Google Playでハルナアウトラインがダウンロードできないため、このマクロを使用する意味がなくなりました。
#title = "ノードレベルを上げる"
/******************************************************************************************
*******************************************************************************************
**
** 当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」
** https://play.google.com/store/apps/details?id=jp.blogspot.halnablue.HalnaOutliner
** とMeryを併用する前提で、Mery側に欲しい機能を私が勝手にマクロで実装したものです。
** 当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」と直接の関係はありません。
** 当マクロについてhalna氏への問い合わせはおやめください。
**
** 選択中のノードの「ノードを示す文字」を一つ削除する。但し、1階層目には適用しない。
** ノードを示す記号にはハルナアウトライン用に"."を用いる。
** NdMkrの値を変更すればMarkdownやらにも使えるかもしれません(未検証)。
**
*******************************************************************************************
******************************************************************************************/
var NdMkr = ".";
var cntMkr = 0;
var ndNmOld = "";
var ndNmNew = "";
var pos = 0;
var reg = new RegExp("^\\" + NdMkr + "+");
var sel = document.selection;
//カーソル位置を保持
pos = sel.GetActivePos();
//ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動
sel.EndOfLine(false,mePosLogical);
//カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得
//先頭n文字がノードの深さを示している想定
if (sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){
sel.SelectLine();
ndNmOld = sel.Text;
//深さ2以上の時のみ、動作。
if(ndNmOld.match(reg)[0].length > 1 ){
//旧ノード名の先頭1文字を削除し、新ノード名とする(深さを1減らしレベルを上げる)
ndNmNew = ndNmOld.slice(1) ;
//選択中の旧ノード名文字列を削除し、新ノード名を追記する。
sel.Delete();
document.Write(ndNmNew);
//ノード記号を削除した分カーソル位置を巻き戻す
pos --;
}
}
//カーソル位置の復帰
sel.SetActivePos (pos, false);
document.HighlightFind = false;
スポンサーリンク