編集していないはずの最終行の行番号No.06423
#funayuki1 さん 10/09/03 16:56
 
#funayuki1です。

行末の空白を削除する以下のマクロを作成したのですが、
マクロを実行した際、最終行が更新されていなくても
必ず行番号が太文字に変わってしまいます。
原因が判れば教えていただけないでしょうか?

また、全角空白ですが、SJIS、EUC、JISコードに関係なく
0x8140で判定されるようですが正しいでしょうか。
---------------------------------------------------------
#nowX=column;
#nowY=lineno;
gofileend;
#LastLine=lineno;
gofiletop;
while(#LastLine>=lineno){
  golineend2;
  left 1;
  while( code == 0x20 || code == 0x8140){
      left 1;
  }
  right 1;
  deleteafter;
  golinetop;
  down;
  if (result == false) break;
}
moveto2 #nowX, #nowY;
---------------------------------------------------------
お手数をおかけしますが、よろしくお願いします。

[ ]
RE:06423 編集していないはずの最終行の行No.06424
秀まるお2 さん 10/09/03 17:30
 
 ループの中でdeleteafterが必ず実行されるようになっているので、仮に何も
削除しなかったとしても、その命令を実行したということで、編集された扱いに
なってしまいます。

 このような一括した置換を実行するなら、正規表現を使うのが高速で簡単だと
思います。

 マクロの例としては、

    #x = x; #y = y;
    replaceallfast "[  ]$", "", regular;
    moveto #x, #y;

 だけで出来ると思います。

 上記の"[  ]$"となっている部分は[]の中に半角空白と全角空白が入っていま
す。

 半角空白または全角空白が2つ以上並んでいる場合でも削除するなら、

    #x = x; #y = y;
    replaceallfast "[  ]+$", "", regular;
    moveto #x, #y;

 とすればいいです。

> また、全角空白ですが、SJIS、EUC、JISコードに関係なく
> 0x8140で判定されるようですが正しいでしょうか。

 それで合ってると思います。

[ ]
RE:06424 編集していないはずの最終行の行No.06425
#funayuki1 さん 10/09/03 17:45
 
#funayuki1です。

ご回答ありがとうございました。
いただいた回答を参考に直してみます。

> ループの中でdeleteafterが必ず実行されるようになっているので、仮に何も
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> それで合ってると思います。

[ ]