マクロ・エラーNo.04958
Iranoan さん 10/01/11 22:29
 
 秀丸担当さん今日は、Iranoan です。
 再現性は低いのですが、
-----------------------------------------------------------------------
マクロエラー:文字列変数の名前が指定されなければいけない所にそれ以外の
ものが指定されています。
-----------------------------------------------------------------------
のエラーが出たりでなかったりします。毎回出るなら解るのですが...。
 問題が起きるのは、「編集後タイマー」の指定している末尾のマクロです。
 問題が起きやすい状況としては、
//------------------------------------------------------------
newfile;
changename "sample.tex";
insert "\\begin{frame}{xxxx}\n\\begin{itemize}[<+->]\n"
  +"\t\\item\t\\href{http://www.xxxxx.ac.jp/}{www.xxxxx.ac.jp} \n"
  +"\t\\item\tああああああああああああああ\n\\end{itemize}\n"
  +"\\end{frame}\n";
//------------------------------------------------------------
で出来る内容で
・コピー
・「貼り付け+履歴戻し」
・[Enter] で改行を挿入
とした時です。
 一度他のファイルを開いたりすると、問題が再現しなくなるので、謎は深ま
るばかりです。
 何か解るでしょうか?
 こちらの環境は、WindowsXP+IE8.0+秀丸 Ver.8.00b35 です。
//------------------------------------------------------------
//編集後の自動起動マクロ
/*
  ・HTML の単語補完で、末尾にて
      o 連続していたら余分な > を削除
      o 文字列なら "> を補完
  ・TeX で箇条書き内で改行を行ったときに、\item を補完
*/
setcompatiblemode 0x20F;
disablehistory 0xFF;

if( geteventparam( 1 ) ){//改行
  if( filetype == ".tex" )goto TeX_Item;
  else if( filetype == ".htm" || filetype == ".html"
    || filetype == ".xml" )goto HTML_Item;
}
else if( geteventparam( 2 ) ){//単語補完
  if( filetype == ".htm" || filetype == ".html" || filetype == ".xml" ){
    $s = searchbuffer;
    #s = searchoption;
    #s2 = searchoption2;
    #x = x;
    #y = y;
    searchup "\\x11\\x06\\x06\\x06\\x06\\x06\\x06\\x17.+?\\x05", regular;
    begingroupundo;
    if( result ){
      if( #x == foundendx && #y == foundendy )delete;
      else moveto #x, #y;
    }
    if( gettext( x - 1, y, x + 1, y ) == ">>" )delete;
    if( colorcode[2]&0x1F == 0x14 )insertfix "\">";
    endgroupundo;
  }
}

End:
  endmacro;

TeX_Item:
  if( geteventparam( 0 ) )goto End;
  if( code != 0x0D )goto End;
  $$s = gettext2( 0, lineno - 1, 0, lineno );
  begingroupundo;
  if( strstr( $$s, "\\item[" ) != -1 ){
    insert "\\item[";
    insertfix "]\t";
  }
  else if( strstr( $$s, "\\item" ) != -1 )insert "\\item\t";
  endgroupundo;
  goto End;

HTML_Item:
  if( geteventparam( 0 ) )goto End;
  if( code != 0x0D )goto End;
  $$s = gettext2( 0, lineno - 1, 0, lineno );
  begingroupundo;
  if( strstr( $$s, "<li>" ) != -1 )insert "<li>";
  endgroupundo;
  goto End;

[ ]
RE:04958 マクロ・エラーNo.04974
秀丸担当 さん 10/01/12 16:53
 

> 再現性は低いのですが、
>-----------------------------------------------------------------------
>マクロエラー:文字列変数の名前が指定されなければいけない所にそれ以外の
>ものが指定されています。
>-----------------------------------------------------------------------
>のエラーが出たりでなかったりします。毎回出るなら解るのですが...。
> 問題が起きるのは、「編集後タイマー」の指定している末尾のマクロです。

報告ありがとうございます。
マクロの通りにしてみましたが、少し試してみた限りではいまのところ再現でき
ていないです。
エラーが出るというのは非常に稀なことだとしたらもう少し長くテストしてみな
いとわからないのかもしれないです。
コピーする場所や貼り付ける場所が特定の場所の場合、それも教えていただける
と助かります。

もしかしたら、自動起動マクロの「キャッシュファイル(.mac.cache)を自動的に
作成して高速化する」がONの場合、何らかの原因で読み込むキャッシュがうまく
いっていないときそうなってしまうのかもしれないです。
ONの場合、OFFにして様子を見てみると何かわかるかもしれません。
おそらくそのあたりが怪しそうなので、そのあたりのソースを改めて確認してみ
ます。

[ ]
RE:04974 マクロ・エラーNo.04976
秀丸担当 さん 10/01/12 17:45
 

調べてみて、やはりキャッシュファイルがONのときの問題でした。
すみません。
β30のときに一時似た報告があって修正したのですがまだ不足で、ラベルを使っ
たcallなどがあるとうまくジャンプできないことになってしまっていました。
とりあえずはOFFにしていただけたら回避できると思います。
次のβ版でまた修正させていただきます。

[ ]
RE:04976 マクロ・エラーNo.04983
Iranoan さん 10/01/12 23:08
 
 秀丸担当さん今日は、Iranoan です。
> 次のβ版でまた修正させていただきます。
 よろしくお願いします。

[ ]