自動インデントを有効にしたときのインデントのみの行が続いた時の挙動についての要望

  1. お世話になります。Mery3.2.5を使用しています。

    設定で自動インデントを有効にしたとき、インデントのみの行が続いたら、余分なインデントを削除して以降の自動インデントをしないようにしてほしいです。
    具体的には、こんな感じです。(□はスペース、|はカーソル位置です)

    現状
    -----
    □あああ|
    -----
    ↓[Enter]
    -----
    □あああ
    □|
    -----
    ↓[Enter]
    -----
    □あああ

    □|
    -----

    理想
    -----
    □あああ|
    -----
    ↓[Enter]
    -----
    □あああ
    □|
    -----
    ↓[Enter]
    -----
    □あああ

    |
    -----

    動きのイメージとしては、Wikiのマクロライブラリにある『Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力』のインデントと開始記号のみの場合は削除の挙動がまさにそれです。

    ご検討いただけると幸いです。
    よろしくお願いいたします。

     |  nono  |  返信
  2. nonoさん

    こんにちは。

    正式な回答としては作者のKuroさんから出ることになろうかと思いますが、「Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する」の改版をした私の方で、ご要望の動作になるであろうマクロを書いてみました。(違ってたらごめんなさい)
    よければ試してみてください。

    BeginUndoGroup();
    Redraw = false;
    
    var doc = Document;
    var sel = Document.Selection;
    
    var indentOnly = /^[  \t]+$/
    
    main();
    
    function main() {
      if (!sel.IsEmpty) {
        sel.NewLine();
        return;
      }
      
      var posY = sel.GetActivePointY(mePosLogical);
      var curLine = doc.GetLine(posY, 0);
      
      if (curLine.match(indentOnly)) {
        sel.SetAnchorPoint(mePosLogical, 1, posY)
        sel.EndOfLine(true, mePosLogical);
      }
      
      sel.NewLine();
    }
     |  yuko  |  返信
  3. yukoさん

    いただいたマクロで完全にやりたかったことができました。
    マクロまで書いていただいて、感謝してもしたりません。
    これで、より気持ちよくMeryで長文が書けるようになりました。
    本当にありがとうございました!

     |  nono  |  返信
  4. ご要望の動作になったようで何よりです!

     |  yuko  |  返信
スポンサーリンク