「Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する」の版間の差分
細編集の要約なし |
編集の要約なし |
||
| 56行目: | 56行目: | ||
Document.Selection.Text = s_syntax; | Document.Selection.Text = s_syntax; | ||
// alert(s_syntax); //[dev] | // alert(s_syntax); //[dev] | ||
</source> | |||
---- | |||
(2018/10/15) | |||
catfist さんが作成したコードを元に、以下の機能の追加・修正を行いました。 | |||
追加: | |||
* 実行後に Undo を行った場合に、1回の Undo 操作で元の状態に戻るように調整 | |||
* 行頭で改行した場合には、通常の改行を挿入する | |||
修正: | |||
* 文中に半角スペースが入っているリスト行 (「* Hello World」など) で改行をすると、その行が消えてしまう不具合を修正 | |||
追伸: | |||
* さくさくと箇条書きできる感じが気持ち良いので、私は「Document.Mode == "Markdown"」の箇所を「Document.Mode == "Markdown" || Document.Mode == "Text"」に変えて、無題ドキュメント等でも発動するようにして使っています。 | |||
<source lang="javascript"> | |||
#title="Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力" | |||
if (Document.Mode == "Markdown") { // 編集モードがMarkdownの場合 | |||
// 現在位置を取得 | |||
var x = Document.Selection.GetActivePointX(mePosLogical); | |||
var y = Document.Selection.GetActivePointY(mePosLogical); | |||
// 現在行の内容を取得 | |||
var s = Document.GetLine(Document.Selection.GetActivePointY(mePosLogical), 0); | |||
var s_indent = s.match(/^[ \t]*/i, "$1"); | |||
// リストまたはブロックコメント開始記号に一致する部分を取得 | |||
if (x === 1) { | |||
Document.Selection.NewLine(); | |||
} else if (s.match(/^\s*([-\*\+>] +|\d+\. +)[^\s]/)) | |||
{ | |||
var s_syntax = s.replace(/^\s*([-\*\+>] ?|\d+\. ?).*$/,"$1"); | |||
// 順序ありリストの場合は数値を+1する | |||
var s_num = s_syntax.replace(/^(\d+).*/,"$1"); | |||
if (s_num !== "") { | |||
s_num = Number(s_num); | |||
s_num = s_num + 1; | |||
s_syntax = s_syntax.replace(/^\d+/,s_num); | |||
} | |||
Document.Selection.Text = "\n" + s_indent + s_syntax; | |||
} | |||
else if (s.match(/^\s*([-\*\+>]|\d+\.)\s*$/)) { // インデントと開始記号のみは場合は削除 | |||
Document.Selection.SetAnchorPoint(mePosLogical, 1, y); | |||
Document.Selection.EndOfLine(true, mePosLogical); | |||
Document.Selection.NewLine(); | |||
} | |||
else { // 指定の構文がない場合は改行のみ | |||
Document.Selection.NewLine(); | |||
} | |||
} | |||
else { // 編集モードがMarkdown以外の場合は改行のみ | |||
Document.Selection.NewLine(); | |||
} | |||
</source> | </source> | ||
スポンサーリンク