「
Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する
」を編集中
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
中間の版での編集と競合したため、取り消せませんでした。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
== Catfist 版 == 改行を挿入し、編集モードがMarkdownでありかつ現在行がリストまたは引用ブロックの場合は開始記号を挿入します。 順序ありリスト(1.等)の場合、数値を+1します。 <syntaxhighlight lang="javascript"> #title="Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力" // by catfist // // 編集モードが'Markdown'の場合のみ実行 // 現在行が以下の構文を含む場合、改行して行頭に開始記号を追加する // (順序ありリストの場合は数値を1加算する) // // 順序なしリスト: '-','*','+' // 順序ありリスト: '1.','2.'... // 引用ブロック : '>' // // 開始記号のみの場合は記号を削除して改行する // // Enterに割り当てて使うことを想定 // // [2018-07-27] 1.0 // [2018-07-28] 1.1 // bug fix // 開始記号しかない行では開始記号削除+通常の改行を行うようにした // 自動インデント機能を利用するため、改行記号の挿入をNewLineメソッドに変更。ただしアンドゥが2回必要。 if (Document.Mode == "Markdown") { // 編集モードがMarkdownの場合 // 現在行の内容を取得 var s = Document.GetLine(Document.Selection.GetActivePointY(mePosLogical), 0); // リストまたはブロックコメント開始記号に一致する部分を取得 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); } } else if (s.match(/^\s*([-\*\+>]|\d+\.)\s*$/)) { // インデントと開始記号のみは場合は削除 Document.Selection.DeleteLeft(s.length); s_syntax = ""; } else { // 指定の構文がない場合は改行のみ s_syntax = ""; } } else { // 編集モードがMarkdown以外の場合は改行のみ s_syntax = ""; } // 改行と開始記号を挿入 // Document.Selection.Text = "\n" + s_syntax; Document.Selection.NewLine() Document.Selection.Text = s_syntax; // alert(s_syntax); //[dev] </syntaxhighlight> == Yuko 版 == (2020/09/04) yuko catfist さんが作成したコードを元に、以下の機能の追加・修正を行いました。 === 追加 === * 実行後に Undo を行った場合に、1回の Undo 操作で元の状態に戻るように調整 * 行頭で改行した場合には、通常の改行を挿入する * タスクリスト (* [ ]) に対応 === 修正 === * 文中に半角スペースが入っているリスト行 (「* Hello World」など) で改行をすると、その行が消えてしまう不具合を修正 === 追伸 === * さくさくと箇条書きできる感じが気持ち良いので、私は「Document.Mode == "Markdown"」の箇所を「Document.Mode == "Markdown" || Document.Mode == "Text"」に変えて、無題ドキュメント等でも発動するようにして使っています。 === ソースコード === <syntaxhighlight lang="javascript"> #title="Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力" BeginUndoGroup(); // 編集モードが'Markdown'の場合のみ実行 // 現在行が以下の構文を含む場合、改行して行頭に開始記号を追加する // (順序ありリストの場合は数値を1加算する) // // 順序なしリスト: '-','*','+' // 順序ありリスト: '1.','2.'... // 引用ブロック : '>' // // 開始記号のみの場合は記号を削除して改行する // // Enterに割り当てて使うことを想定 Redraw = false; if (Document.Mode == "Markdown" || Document.Mode == "Text") { // 編集モードが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*([-*+>]( \[ ]| \[x])?|\d+\.)\s+[^\s].*$/)) { var s_syntax = s.replace(/^\s*(([-*+>]( \[ ]| \[x])?|\d+\.)\s).*$/,"$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); } // チェック済みタスクリスト記号 [x] は [ ] に置換 s_syntax = s_syntax.replace(/\[x]/, "[ ]"); Document.Selection.Text = "\n" + s_indent + s_syntax; } // インデントと開始記号のみの場合は削除 else if (s.match(/^\s*([-*+>]( \[ ]| \[x])?|\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(); } Redraw = true; </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
編集を中止
編集の仕方
(新しいウィンドウで開きます)
スポンサーリンク
案内メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク