overwriteでの改行の扱いNo.08219
TAKA さん 01/04/03 13:45
 
TAKA です。

overwriteでの改行の扱いで、挙動不信な所がありましたので、お
知らせします。(マクロ作者用会議室で、ひろさんの指摘されてた
件も含めて)


// テスト用ファイル(ここから)
01234567890123456789[EOF]
// テスト用ファイル(ここまで)

[EOF]はファイルの終了位置です。


// マクロ(ここから)
    overwrite "TEST1\nTEST2";
    endmacro;
// マクロ(ここまで)


テスト用ファイルを開き(カーソルはファイルの先頭)、マクロを
実行すると、

// テスト用ファイル(マクロ実行後)(ここから)
TEST1[J]TEST20123456789[EOF]
// テスト用ファイル(マクロ実行後)(ここまで)
[J]はJが反転した状態(文字コードは0x0A)

となります。改行されないのは正解なのでしょうか?
ひょっとして、overwriteで改行を指定すること自体が認められて
いないのでしょうか?

でも、上書きで改行しなさいといった時に、どうなるのが正解なの
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
かもよく分かりませんね。
^^^^^^^^^^^^^^^^^^^^^^^^
私は、上書きでの改行は保証しないでもよいとは思いますが。

それと、アンドゥが一文字単位になるのですが、これは仕様なので
しょうか?
「insert」はアンドゥは文字列単位なので、同様な仕様の方がいいと
思うのですが。



もう一つは、overwriteで改行が認められているという前程で、
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
アンドゥとリィドゥの制御がおかしいようです。


マクロ実行後に、アンドゥを可能なかぎり実行(マクロ実行前の状
態)すると、

// テスト用ファイル(アンドゥ実行後)(ここから)
01234567890123456789[EOF]
// テスト用ファイル(アンドゥ実行後)(ここまで)

となります。(これは意図した通り)


次に、リィドゥを可能なかぎり実行(マクロ実行後の状態)すると、

// テスト用ファイル(リィドゥ実行後)(ここから)
TEST1TEST2
567890123456789[EOF]
// テスト用ファイル(リィドゥ実行後)(ここまで)

となってしまいます。(最初の56789はいらない)


もう一度、アンドゥを可能なかぎり実行(マクロ実行前の状態)す
ると、

// テスト用ファイル(再度のアンドゥ実行後)(ここから)
012340123456789[EOF]
// テスト用ファイル(再度のアンドゥ実行後)(ここまで)

となってしまいます。(明らかにおかしい)


もう一度、リィドゥを可能なかぎり実行(マクロ実行後の状態)す
ると、

// テスト用ファイル(再度のリィドゥ実行後)(ここから)
TEST1TEST2
0123456789[EOF]
// テスト用ファイル(再度のリィドゥ実行後)(ここまで)

となってしまいます。



最後に整理しておきます。

・overwriteでの改行は認められている?
・overwriteでのアンドゥは1文字単位になっている(insertと違う)
 が、仕様?

以下は、改行が認めれているという前程です。
・overwriteで改行した時にはどうなるのが正解?
・アンドゥリィドゥの制御がおかしいようです。

[ ]
RE:08219 overwriteでの改行の扱いNo.08221
きいろいまふらあ さん 01/04/03 14:30
 
そもそも上書きモードでリターンキーを押した場合に、
[EOF]がある行(ファイルの最終行)だと「そこ」に改行が入り、
それ以外の行だと、改行は入らずに次の行の先頭にキャレットが移動する、
ってのは、これはこれで仕様なんでしたっけか?
#動作環境→カーソル→高度な…→上書き…は「…移動する」

マクロの話からはずれてしまいますけども。

「リターンキー押下」と「改行」はちゃんと区別しないとね。>自分

[ ]
RE:08221 overwriteでの改行の扱いNo.08222
TAKA さん 01/04/03 15:53
 
TAKA です。

>そもそも上書きモードでリターンキーを押した場合に、
>[EOF]がある行(ファイルの最終行)だと「そこ」に改行が入り、
>それ以外の行だと、改行は入らずに次の行の先頭にキャレットが移動する、
>ってのは、これはこれで仕様なんでしたっけか?

一瞬、私の報告も[EOF]がある行の時だけおかしくなるのかと思い
ましたが、

// テスト用ファイル(ここから)
01234567890123456789
01234567890123456789
01234567890123456789[EOF]
// テスト用ファイル(ここまで)

というテストファイルでも同様におかしかったです。念の為に報告
しておきます。
#少しあせった。



まふさんの言う通り、[EOF]がある行での上書きモードのリターン
キーの仕様も聞いておきたいです。先日、マクロ作者用の会議室で
少し話題になりましたね。

[ ]
RE:08221 overwriteでの改行の扱いNo.08224
ひろ さん 01/04/03 20:46
 
 きいろいまふらあさん今日は、ひろです。私自身は返信を頂いていない事
に気付いていなかったのですが(^^;、
> そもそも上書きモードでリターンキーを押した場合に、
<中略>
> #動作環境→カーソル→高度な…→上書き…は「…移動する」
これは「動作環境」の設定に依存しますよね。ただしこれは insertreturn
に影響を与えても、insert 同様 overwirte には影響を与えないのが素直な
仕様のような気がします。

 これとは別件になりますが、上書きモード時に「挿入系」コマンドの「改
行」を選択しても何も起きません。

[ ]
RE:08224 overwriteでの改行の扱いNo.08230
きいろいまふらあ さん 01/04/04 09:32
 
こんがらかるとまずいかなと思ってコメントします。

>  きいろいまふらあさん今日は、ひろです。私自身は返信を頂いていない事
> に気付いていなかったのですが(^^;、

?おっしゃっていることがわかりませんが。(^^;

> > そもそも上書きモードでリターンキーを押した場合に、
> <中略>
> > #動作環境→カーソル→高度な…→上書き…は「…移動する」
> これは「動作環境」の設定に依存しますよね。ただしこれは insertreturn
> に影響を与えても、insert 同様 overwirte には影響を与えないのが素直な
> 仕様のような気がします。

(あくまで)念のためですが、私はマクロの話はしてません。

[ ]
RE:08230 overwriteでの改行の扱いNo.08239
ひろ さん 01/04/04 12:36
 
 きいろいまふらあさん今日は、ひろです。
> >  きいろいまふらあさん今日は、ひろです。私自身は返信を頂いていない事
> > に気付いていなかったのですが(^^;、
>
> ?おっしゃっていることがわかりませんが。(^^;
 マクロ会議室で同様の方向をしたのですが、まだ返信を頂いていなかった
という話です。

> (あくまで)念のためですが、私はマクロの話はしてません。
 このスレッドは元々マクロについての投稿だと思うのですが、きいろまふ
らあさんは上書き時の [Enter] の動きについて確認したかっただけですか?

[ ]
RE:08239 overwriteでの改行の扱いNo.08252
きいろいまふらあ さん 01/04/04 16:40
 
> > >  きいろいまふらあさん今日は、ひろです。私自身は返信を頂いていない事
> > > に気付いていなかったのですが(^^;、
> >
> > ?おっしゃっていることがわかりませんが。(^^;
>  マクロ会議室で同様の方向をしたのですが、まだ返信を頂いていなかった
> という話です。

「秀丸担当さんから」ってことですね?(^^;
私が返信を差し上げなきゃいけない、ってことじゃないですよね???(^^;;
#会議室が適切じゃない、なんてことはないか。

> > (あくまで)念のためですが、私はマクロの話はしてません。
>  このスレッドは元々マクロについての投稿だと思うのですが、きいろまふ
> らあさんは上書き時の [Enter] の動きについて確認したかっただけですか?

ひろさんの(私の記述に対する)コメントが、ゆるやかにマクロ方面の
話に移行していっていたので、読んでいる方が誤解されるとまずいなと思い、
「(あくまで)念のため」に書いただけです。

しつこいですが、#8221の

> そもそも上書きモードでリターンキーを押した場合に、
> [EOF]がある行(ファイルの最終行)だと「そこ」に改行が入り、
> それ以外の行だと、改行は入らずに次の行の先頭にキャレットが移動する、
> ってのは、これはこれで仕様なんでしたっけか?
> #動作環境→カーソル→高度な…→上書き…は「…移動する」
>
> マクロの話からはずれてしまいますけども。

をそのまま読んでいただければ、と。

「これ」が「仕様」でないなら、今回の「マクロにおける動作に一貫性がない
こと」と関連しているのかな?という話の展開を期待していました。
「これ」が「仕様」なら、んじゃ、今回はマクロだけの話だけですね、と。

[ ]
RE:08219 overwriteでの改行の扱いNo.08257
秀丸担当 さん 01/04/04 18:20
 
>・overwriteでの改行は認められている?

制御コード(0x00〜0x1F)に相当する文字は、overwriteの文字列中に
あっても、その文字だけはinsertするという処置が取られています。
[その他]→[制御コード入力]でも、上書きモード時であっても挿入
になります。

>・overwriteでのアンドゥは1文字単位になっている(insertと違う)
> が、仕様?

いちおういまのところ仕様とさせてください。
上の特例処置もあり、一括のアンドゥは複雑になってしまいます。

>以下は、改行が認めれているという前程です。
>・overwriteで改行した時にはどうなるのが正解?

[その他]→[制御コード入力]ではLFとCRが省かれているので、
overwrite時の\nは、insertreturnと同じ動作にしたほうが
適切かもしれません。検討しておきます。

>・アンドゥリィドゥの制御がおかしいようです。

これはバグでした。上の件と合わせて修正しようと思います。

[ ]
RE:08221 overwriteでの改行の扱いNo.08258
秀丸担当 さん 01/04/04 18:20
 
>そもそも上書きモードでリターンキーを押した場合に、
>[EOF]がある行(ファイルの最終行)だと「そこ」に改行が入り、
>それ以外の行だと、改行は入らずに次の行の先頭にキャレットが移動する、
>ってのは、これはこれで仕様なんでしたっけか?

これは仕様です。

[ ]
RE:08252 overwriteでの改行の扱いNo.08263
ひろ さん 01/04/04 18:23
 
 きいろいまふらあさん今日は、ひろです。
 思いっ切り端折っちゃいますが、どの件についての了承しました。どちら
にしても担当さんの返信待ちですね。

[ ]
RE:08257 overwriteでの改行の扱いNo.08268
TAKA さん 01/04/04 21:17
 
TAKA です。

>>・overwriteでのアンドゥは1文字単位になっている(insertと違う)
>> が、仕様?
>
>いちおういまのところ仕様とさせてください。
>上の特例処置もあり、一括のアンドゥは複雑になってしまいます。

そうですか。了解しました。
#overwrite自体あまり使わないので、支障はありまんが。


>>以下は、改行が認めれているという前程です。
>>・overwriteで改行した時にはどうなるのが正解?
>
>[その他]→[制御コード入力]ではLFとCRが省かれているので、
>overwrite時の\nは、insertreturnと同じ動作にしたほうが
>適切かもしれません。検討しておきます。

ふむふむ。
overwrite(上書き)なので、上書きモードでのinsertreturnと同
                           ^^^^^^^^^^^^^^^^
じ動作にするという案もありそうですね。

// テストファイル(ここから)
0123456789
0123456789
// テストファイル(ここまで)

// テストマクロ(ここから)
    overwrite "TEST1\nTEST2";
    endmcaro;
// テストマクロ(ここまで)

insertreturnと同じ動きにするということは、上書きモードにして
いた場合には、テストファイルの先頭でマクロを実行すると

// テストファイル(マクロ実行後)(ここから)
TEST156789
TEST256789
// テストファイル(マクロ実行後)(ここまで)

のようになるということですよね。
少し違和感(私にとっては)がありますが、そういう仕様であると
割り切れば、問題はなさそうですね。


>>・アンドゥリィドゥの制御がおかしいようです。
>
>これはバグでした。上の件と合わせて修正しようと思います。

よろしくお願いします。

[ ]