バグバグレポート Ver2.1

(一から書き直しました。ちなみにVer.2はこれ

Written at 1997.12.12

Last Update at 1998.09.30


 いつか、この日が訪れるだろうと、思ってました。

 いつか、このように書き込む機会を得るだろうと、思ってました。

 

 そうです。

 「秀丸エディタ for Windows95 Ver2.25」へのバージョンアップによって、下記バグバグレポートにある動作の再現が出来なくなりました。

 つまり、「改行文字指定マクロ Ver1.7 バグバグバージョン」を使って、「akt-txt.txt」を編集してもフリーズしなくなったということです。

 

 本来ならば、このページの最下部で言うような、

 

「改行文字指定マクロ」の「バグバグ Ver.2」が不必要になりました。

 

というアナウンスをするはずだったんですが、「改行文字指定マクロ」も、Ver3.5へのバージョンアップによって、すでに「バグバグ Ver.2」を必要としていないんです。

 それならば、こんなページを残しておくのも、混乱への引き金と成りかねないんですが、元々、このページを公開するために作ったのが、「秀丸エディタ用改行文字指定マクロページ」で、深い階層に放り込んであるし、見えないカウンターで見ても、訪れる人もほとんど居ないようだし、で残しておきたいんです。

 

 ここに再度、または新たに来た貴方は、

「へー、そー。よかったね」

とか、思って頂ければ幸いです。

 

1998.09.04 AKT

 

P.S. しつこいようですが、以下のレポートは、「秀丸エディタ for Windows95 Ver2.24」「改行文字指定マクロ Ver3.46」以前のバージョン対応です。


以下、

バグバグレポート Ver2.1

 


 ようこそおいで下さいました。AKTです。

 このレポートは「改行文字指定マクロ Ver2.3」以降に含まれている『バグバグ Ver.2』(Ver2.3時 改行文字指定23.mac 107〜111行)の存在理由を説明するものです。何故説明しなければならなかったのかと言いますと、必要なくなった場合には、マクロをお使いになっているユーザーの皆様、各々でマクロの改訂をしていただこう思ったからです。

 だらだら言い訳を書いていると、また長くなってしまうので、もういきなり解説に入らせていただく事にします。


 さて、問題の『バグバグ Ver.2』は、下記のようになっています。

 

//----- バグバグ Ver.2 - (1997.10.25) ------------------------------------
left;
if(code != 32 && code != 33088 && code != 9 && code != 0)
right;
//-------------(バグバグレポート Ver.2 参照 履歴Ver1.71に所在記載)-----

 

 この動作にはいる前には改行文字の削除を行っています。

 何故、このような動作が必要だったのかと言いますと、[TAB]を含んだ文書のマクロ編集時に、カーソルが[TAB]に重なってしまう場合があるからです。

 その現象の確認には、「改行文字指定マクロ Ver1.7 バグバグバージョン」と、「akt-txt.txt」を使用します。

 

 「改行文字指定マクロ Ver1.7 バグバグバージョン」とは、確認用として用意したマクロです。確認後は削除するようにして下さい。

 「akt-txt.txt」の元は、ULHA3089.EXE UNLHA32.DLL Ver0.89の自己解凍実行ファイル内のコマンド説明ファイルです。窓の杜(http://www.forest.impress.co.jp/)より入手したもので、たまたま正常動作確認用に使った時に上記不具合を発見したわけです。
 この文書の[TAB]の使いようが、再現には具合がいい為、抜粋という形で(無断で)使わせていただいてます。

 

 まず、「改行-bug.mac」(改行文字指定マクロ Ver1.7 バグバグバージョン)を秀丸のマクロ用フォルダにコピーして下さい。
 次に、秀丸で開いて、

して下さい。

 以上の設定で「akt-txt.txt」を開いて、「改行-bug.mac」マクロを実行します。

 

 すると、次の画面のようにマクロの実行が止まるはずです。

 これが、カーソルが[TAB]に重なった状態で、こうなるとカーソル移動のマクロ命令しか効かなくなります(実際には、「カーソル位置の文字を削除」しているんですが、重なっているので実行できずにマクロ動作を止めてしまいます)。そこで、カーソル位置を明確にする為、左右にカーソル移動するのですが、重なった状態で左移動しても、(重なっている)[TAB]の頭に来るだけなので、そのまま右に戻ると、[TAB]を残してしまいます。
 と言うわけなので、『バグバグ Ver.2』のように、左移動した後、カーソル位置の文字を確認し、空白([TAB]含む)であれば右に戻らず、そのまま空白削除ルーチンに移行するようにしました。
 初めに左ではなく、右に移動すれば空白の確認動作を省略できるのですが、移動する前のカーソルが行の末尾にあって、次行の先頭が[TAB]であった場合に誤動作が起こるので、あのような形にしました。

 

 秀丸の設定("禁則処理方法"と"改行文字のぶら下げ"は必要です)を戻し、「改行文字指定マクロ Ver2.3以降」で「akt-txt.txt」を試してみて下さい。マクロの動作を止めることなく終了するはずです。

 


 以上の動作は、秀丸エディタ for Windows95 Ver2.18で確認しましたが、後々「改行-bug.mac」でも、あのようにならない秀丸が出来るかもしれません。
 その状態では『バグバグ Ver.2』は、ただのウェイトに成り下がります。当然削除しなければなりません。

 そのための、このバグバグレポートだったわけです。

 

 『バグバグ Ver.2』を削除するには、前述の5行を消すだけでOKです。

 その上で、マクロ内のマクロ履歴のVer1.71に改訂日付を入力してやって下さい。

 

//----- Data Area ------------------(適宜削除してください)--------------
//
//--- History ---

 

//Ver1.7 - (1997.09.12) 範囲選択処理時の最下行は、行末空白削除しない。
//
//Ver1.71 - (ここですね) カーソル位置の確定動作、空白確認を削除。Edit by "Your name"
//
//Ver1.8 - (1997.09.25) 範囲選択の不具合をほぼ解消(場合によっては最下行

 

//
//Special Thanks to "Etsu"! & All Users!
//
//Written by AKT (akt@interlink.or.jp/YHE01162@niftyserve.or.jp) & "Your name"!
//----- End of File ------------------------------------------------------

 

 橙字も入れてくれると、(たとえ知らなくても)何となく、うれしいんですが……。

 

 

 

 ここまで読んだ、あんたはえらい!


 

 戻る

 

 

 

 


書き直したVer2.1が本物です。(1997.12.14)


バグバグレポート Ver.2

(……というか間違ってただけ)

Written at 1997.09.12

Last Update at 1997.12.14


Ver.2追記 (1997.10.25)

改行文字指定マクロ Ver2.1」の改定時、因縁のakt-txt.txt(下記)を(あくまで)確認の為、動作してみたところ、やっぱり、不具合が出ました。今回、削除時の確認動作を入れた為、画面表示を復帰することにしたんですが、そのタイミングが悪くて、行末文字が削除されてしまう場合があったんです。
まー、それは解消できたんですが、Ver1.7時の「TABキーの呪い」対策が不十分だったため、改行キャンセル時の空白を残したまま、実行していました(当然、Ver1.7以降、Ver2.01以前まで、そのまま)。

そりゃーいかんやろ、と、今回、バグバグ部をVer.2として、空白の確認を再度(詳しくは、『改行をキャンセルした後、カーソル位置の確認と共に、空白が残っているかを確認する』)行うように変更しました。

下記の「バグバグレポート」メイン部もVer2.1対応で変更しました。

 

追記 (1997.09.24)

このバグバグレポートは「改行文字指定マクロ Ver1.7」用に書いたものであり、その本当の目的は、ユーザー自ら改訂作業をしてもらおうというものでした。
そこで改定後のバージョンを指定したのですが、図らずもその指定した改定内容を含まずに改訂せざるを得なくなりました。
と、言うのもあると思っていなかった、と思い込んでいた大きなバク太郎が出てきたからです(ひじょーにかなしい!)。

このマクロは改行のみを出来るだけ制御下に置いて削除していくものですが今回のバグ次郎はその制御外に住み着いているものとして駆除対象にあると判断しました。要するに、「ここは改行のみ行がいるんや」としてあった場合、不都合なことになるからです(文章は見た目も大切ですよね……と言いながら見にくい文を書く俺)。

で、Ver1.71(下記文参照)を新たに切ろうかとも思ったのですが、多分こんなしょぼいマクロをバージョンアップしようなんて方もそんなにいないでしょうし、使うに及ばない方もいらっしゃるでしょう。でも、使ってないけどあるよ、なんてマクロの一つや二つはみなさんのハードディスクの中に眠ってますよね。そーです、そーなんです。改定内容の違う同じバージョンのマクロがどこかに存在するようになるかもしれないんですよ。
僕は、
「そんなのいやー!」
な、たちなんです。

というわけで、次回アップには外そうと思っていたこの「バグバグレポート」に追記して理解していただこう、ついでに当初の目的である、「ユーザー自ら改訂作業をしてもらおう」も完遂しようと。でも、動作自体には不都合のない改訂ですし(ウェイトと言えばウェイト……詳しくは下記文にて)どっちでもいいんですが。

今回のバク三郎は泉水氏のメールをきっかけに発見できました。ありがとうございました。

1997.9.24  AKT

 

さらに追記 (1997.09.28)

Ver2.0に向けて例の部分を変更。

 

これ以降はVer1.7の時のままです。変えるの面倒だし。Ver1.7のつもりでどうぞ。

 

Ver.2 (1997.10.25)
これ以降もVer2.1対応としました。Ver1.7以降、Ver2.01以前とは、バグバグ部が異なります。



えー、恥ずかしながらAKTです。

このファイルを見ていただけると言うことは、日頃、愚作改行文字指定マクロをお使い、もしくは一応ダウンしてみた、けど使うには至らんなーと言う方々だと思います。

お使いでなければこれ以降読まれる必要はありません。ダウンしていただいてありがとうございます。こんな無駄なファイルは即刻削除して下さい。


さて、問題はお使いいただいている方、どうです、このくそマクロ正常に動作していましたか?
実はこのヘたれマクロはバグバグマクロだったのです!(自分にとっては衝撃の事実ってやつでした)。

今まで(1997.09.12現在)、
「おい、動かんやんけー!」
「止まるがなー!!」
「この、しょぼマクロ!!!」
と言ったようなお叱りの言葉もなければ、自分が今回報告致します状態になったこともなかったので全く、全然、一切気づきませんでした。

「いや、知っとったんやけど、このあまりもの現象に文句言う気力もなかったんや」
もっともです。そらそーでしょう。


そんなことを分かり切っていながらこんな文章を書いているのは、何とか改善対策を発見できたからなのです。しかーし、その対策というのも大した対策ではなく、Ver1.7のマクロ本文を見ていただいた方にはおわかりでしょうが、
「なんや、これ?」
というようなものなのです。

そこで、
「これにはこういうわけがあるんです」
と言う意味と、
「今まで、不具合の出ていた方々、本当に申し訳ありません」
と言う意味とを込めまして、書かせていただいています。

「直ってるんやったら、もういいで」
「読むのめんどくさい」
と言う方々は、どうもここまで読んでいただいてありがとうございました。
また、何か不具合が起こりましたら、どうぞ遠慮なく、akt@interlink.or.jpの方までお叱りのメールでもお送り下さい。



ここからは、実際の動作を確認していただきながら改善対策に至るまで、です。

同梱のファイルは、

command.txt - 今回、本当になにげに使ったテキストファイル。(転載を取りやめました。1997.09.29)
ULHA3089.EXE UNLHA32.DLL Ver0.89の自己解凍実行ファイル内のコマンド説明ファイルです。窓の杜(http://www.forest.impress.co.jp/)より入手。今回勝手に使わせていただきます。しかし、誤解していただきたくないのは、このファイルはあくまで丁度いいフォーマットであっただけで、文句をつけているわけではありません。文句がつくのはこのマクロです。

改行-bug.mac - 改善対策前、改行文字指定マクロ Ver1.7 バグバグレポートバージョン。ウインドウ内表示を行います。

akt-txt.txt - バグ確認用に上記のcommand.txtを編集したテキストファイル。


とりあえず、改行-bug.macを秀丸のマクロ用フォルダに入れてもらって、akt-txt.txtを秀丸で読み込んで下さい。
次に[動作環境]-[禁則処理]の「改行文字のぶら下げ」チェックボックスをOFFにして下さい。

その状態で改行-bug.macを起動して見て下さい。

行文字数の違いで何処になるかはわかりませんが、とりあえず止まったはずです。
もし、止まらなかった場合は、[設定]-[詳細]の「折り返し文字数」を"80"にして見て下さい。

そう、なんです。このマクロは禁則、改行ぶら下げ状態でないと、全く動かなかったんですねー。そら、1行を、何文字にでもするマクロなんだから当たり前なんですが、そんなことはどっこにも記述していませんでしたねー。これで動かなかった人はいるでしょうか? これは、禁則処理状態、及び改行文字ぶら下げにするしかありません。もしかしたら、Ver1.7から紹介文のところに出ているかもしれません。詐欺ですねー。自分(AKT)が悪いんですねー。


さて、気を取り直して禁則処理、改行ぶら下げのチェックボックスをオンにして、akt-txt.txtを(保存せずに)読み直しましょう。今までであれば、これでちゃんと動作するはずなんですが、このakt-txtは曲者です。

どちら様も折り返し文字数を"80"にして下さい。
ついでに[設定]-[詳細]「タブの文字数」は"8"です。
さらに[動作環境]-[禁則処理]「禁則処理の方法」は"追い出し+句読点のぶら下げ"か"句読点のぶら下げのみ"です。
これは関係あるか?フォントはプロポーショナル不可です。

さあ、改行-bugを実行です。
「おお、調子いい」
なんて眺めてると、……止まりましたね? 止まるはずです。もし止まらなければ再現は不可かもしれません。細かい設定を合わせればいいはずなんですが、そこまでする必要もないので、
「ここで止まるはずなんか……」
と、思って下さい。
止まれば、ウィンドウ内をクリックしてマクロを中断して下さい。
するとどうでしょう? カーソルが変な位置で瞬いてますね。そう、これこそが、バグバグの正体、「TABキーの呪い」なんです。

今回のVer1.7の改訂で行接続時の(接続した行の先頭の)空白を削除するようしたため、わかったんですがTABキーがめっちゃ含まれてるテキストを編集していくとTABの位置がずれることがあって、改行を削除するとそのずれが残り(カーソルを移動させると復帰するようだ)、カーソルがTABキーに重り、「delete」が効かない状態までになってしまんです

こうなっては、カーソルしか効かない……っと言うことはカーソルなら効くってことで、「delete」の前にカーソルを揺してみます。

ここで、改行-bug.macではなく、「改行文字指定マクロ Ver2.01」(← クリック)を使ってみて下さい。Ver2.01は、

----------------------------------------------------------
   right;    //--- バグバグレポート(履歴に所在記載) 参照
   left;     //--- (カーソルの位置確定動作)
      if(code == 0 || code == 32 || code == 33088 || code == 9){
         delete;
         goto del2;}
----------------------------------------------------------

のように、カーソルを左右に揺らすことによって、「TABキーの呪い」を改呪しようと言うものです。

では、ここでakt-txt.txtを新たに(保存せずに)読み直して下さい。
次に、akt-txt.txtの、258〜271行までを、範囲選択して下さい。

----- (akt-txt.txt 258〜271行) -------------------------------
%7. ファイル数等の制限

   UNLHA32.DLL は,

      1024 コマンドラインでのパラメータ数
      2048 コメント(注釈)の文字
       ※1 ワイルド名から得られるファイル名
       ※1 除外できるファイル名とワイルド名
       ※1 "-z" スイッチの拡張子名


          ※1 malloc() の限界,またはメモリの限界まで

   を最大限許します。
--- (これはサンプル。これをコピーしてもだめです) --------------

それで、Ver2.01を実行してみて下さい(起動して、すぐリターン)。多分、下記のようになるはずです。

----------------------------------------------------------
%7. ファイル数等の制限UNLHA32.DLL は,1024 コマンドラインでのパラメータ数2048 コメント(注釈)の文字※1 ワイルド名から得られるファイル名※ 1 除外できるファイル名とワイルド名 ※1 "-z" スイッチの拡張子名※1 malloc() の限界,またはメモリの限界までを最大限許します。
----------------------------------------------------------

『 除外できるファイル名とワイルド名 ※1』のように、『名』と『※』の間にTABが残っているはずです。
Ver1.7でも残っていたんですが、あのときはフリーズを解消することしか頭になかったんで、「これでいける!」なんて思ってしまって、全然気付きませんでした。
どっちにしても、これが何故か、わからない。もー、仕方がないから、新たな対策を加えました。

カーソルのずれは、改行文字を削除した後に起こる、ずれは、カーソル位置の確定動作で直る。TABの残りは、そのカーソル位置の確定動作で出来てしまう。なら、カーソル位置の確定動作の途中で空白の確認をすればいいかと。

で、下記のようになりました。

-----------------------------------------------------------
   left;
   if(code != 32 && code != 33088 && code != 9 && code != 0)
      right;
-----------------------------------------------------------

これで、一応、akt-txt.txtの、258〜271行でも、TABは残りません。上記対策済みの「改行文字指定マクロ Ver2.1」で、実行してみて下さい。

-----------------------------------------------------------
%7. ファイル数等の制限UNLHA32.DLL は,1024 コマンドラインでのパラメータ数2048 コメント(注釈)の文字※1 ワイルド名から得られるファイル名※1 除外できるファイル名とワイルド名※1 "-z" スイッチの拡張子名※1 malloc() の限界,またはメモリの限界までを最大限許します。
-----------------------------------------------------------

と、なりましたね。


最終的な動作条件は、

・禁則処理(処理方法"追い出しと句読点のぶら下げ"か"句読点のぶら下げのみ")状態であること。
・改行文字のぶら下げを"ON"。

です。
Ver2.1はプロポーショナルフォントでも動作可能です。



長文、失礼致しました。


1997.9.12 (9.13 ちょいと変更)(10.24 Ver2.1対応に変更)


!! 肝心なのを忘れてた! 動作確認した秀丸のバージョンはfor Windows95 Ver2.18です。(9.13)




「TABキーの呪い」解呪後の処置(1997.9.13) Ver2.1対応変更(1997.10.25)

呪いが解呪されればカーソルの揺らしはいらないはずなので、改行文字指定マクロVer2.1の、111,112,113,114,115行目(下記部分)を削除して下さい。

111行目://----- バグバグ Ver.2 - (1997.10.25) ------------------------------------
112行目:   left;
113行目:   if(code != 32 && code != 33088 && code != 9 && code != 0)
114行目:      right;
115行目://-------------(バグバグレポート Ver.2 参照 履歴Ver1.71に所在記載)-----


その上で改行文字マクロの履歴Ver1.71改訂日付に改定日を入力してやって下さい。

-----
//Ver1.7 - (1997.09.12) 範囲選択処理時の最下行は、行末空白削除しない。
//Ver1.71 - ( ここね ) カーソル位置の確定動作、空白確認を削除。Edit by "Your name"
//
//Ver1.8 - 1.6、1.73で解消したと公言していた、範囲選択の不具合を本当に解

           (省 略)

//Special Thanks to "Etsu"! & All user!
//
//Written by AKT(akt@interlink.or.jp/YHE01162@niftyserve.or.jp) & Me!
------


……ここまでする人はいませんか。


 戻る