マクロでヘッダ追加時の挙動についてNo.03290
きいろいまふらあ さん 10/10/20 09:17
 
きいろいまふらあです。
以下の件、仕様かどうか確認したく。長文ですみません。

●手操作の場合
手操作でヘッダを追加する場合は、ヘッダ領域の最下段に例えば「hoge:」と入
力すると、自動的に10桁目にカーソルが移動し、そこから入力可能な状態になる。

●手順1
ヘッダ領域の最下段にカーソルがある状態で

insert "hoge:     ";

とすると、手操作の場合と同じ結果になる。→OK

●手順2
ヘッダ領域の最下段にカーソルがある状態で

insert "hoge:";

とすると「:」の後ろ(5桁目)にカーソルが移動し、そこから入力可能な状態に
なる。この状態でさらに

insert "     ";

とすると、この行は●手順1の場合と同様の内容になるが、カーソルは本文領域
に移動している。→???

●検証(Ver.5.50beta32)

 |From:     ……↓
 |To:       ……↓
 |Subject:  ……↓
 |↓
1|abcdefg↓
2|[EOF]

という状態で「Subject:」の次の行にカーソルがある状態で、いくつかのパター
ンを検証してみた(「↓」は改行を示す)。

insert "hoge:";insert" ";
 →「hoge: ↓」という行を生成
  カーソルは「hoge:」の次の行頭に移動

insert "hoge:";insert"  ";
 →「hoge:  ↓」という行を生成
 →カーソルは本文の「a」の位置に移動

insert "hoge:";insert"     ";
 →「hoge:     ↓」という行を生成
 →カーソルは本文の「d」の位置に移動

insert "hoge:";insert"     hoge";
 →「hoge:     hoge↓」という行を生成
 →カーソルは本文の「d」の位置に移動

「:」の後ろに挿入する半角の個数分カーソルが先に進むようだ。

●確認したいこと
「:」の後ろに挿入する半角の個数分カーソルが先に進むのは仕様でしょうか?
(あるいは何かの設定に依存していますか?)

●蛇足
もし仕様なら、秀丸メールテスト.mac あるいは 秀丸メールマクロヘルプ の
中のサブルーチン「GoToHeader:」は、存在しないヘッダを指定したときに想定
通りに動くのかちょっと疑問です……。

  if( x == 0 ) {
    insertline;
    insert $$1;
    if( ##len < 10 ) {
      insert leftstr( "          ", 10 - ##len );
    } else {
      insert " ";
    }
    return;
  }

の部分は、例えば

  if( x == 0 ) {
    insertline;
    if( ##len < 10 ) {
      insert leftstr( $$1 + "          ", 10);
    } else {
      insert $$1 + " ";
    }
    return;
  }

とした方がよいんじゃないかと思います。

[ ]
RE:03290 マクロでヘッダ追加時の挙動につNo.03291
秀まるお さん 10/10/20 10:29
 
 毎度詳しい情報ありがとうございます。

 連絡いただいた現象ですが、調べてみたら、明らかにバグでした。

insert "hoge:";
insert "     ";

 のようなマクロを実行した後のカーソル位置はおかしいし、そこからアンドゥ
していくとアンドゥバッファが壊れてエラーが出てしまいました。

 ということでさっそく修正させていただきます。

> もし仕様なら、秀丸メールテスト.mac あるいは 秀丸メールマクロヘルプ の
> 中のサブルーチン「GoToHeader:」は、存在しないヘッダを指定したときに想定
> 通りに動くのかちょっと疑問です……。

 たぶん、以前(といってもたぶんVersion 1以下の時代?)はこのマクロでう
まく動いていた所が、ある時期にレベルダウンして動かなくなっていたのだと思
います。

[ ]
RE:03291 マクロでヘッダ追加時の挙動につNo.03292
きいろいまふらあ さん 10/10/20 10:47
 
きいろいまふらあです。

勇気を出して確認してよかったです(笑)。

[ ]