Cソースでのインデントがおかしい時があNo.13713
kbhakt さん 02/12/19 18:02
 
 秀丸エディタを最近使い始めた者です。
 Cのソースを打っていてしばらく使っていると、インデントが聞かなくなるときが
あります。

void hogehoge()
{
}

 例えば上のような関数を作ろうとすると、

void hogehoge()
{
    }

のようになってしまいます。 まあ手で戻せばいいのですが。
 確かif文でも、
if (hoge) {
    }
 となったような記憶もあります。(多分)

 そのファイルを閉じ、もう一度開きなおすと正常になります。

 複数の秀丸エディタを立ち上げていた場合、全ての秀丸で起こるわけではありませ
ん。大丈夫なものもあります。
 バージョンは3.19、OSはXPです。
 私のPCでしか確認していないので、こちらの問題なのかも知れませんが・・・

[ ]
RE:13713 CソースでのインデントがおかしNo.13714
秀丸担当 さん 02/12/19 18:47
 
> Cのソースを打っていてしばらく使っていると、インデントが聞かなくなるとき
>があります。

やってみたのですが、再現できませんでした。
特定のケースのソースでしか再現できないのかもしれません。
マクロを使用していて、マクロが自動インデントの状態を変えている
ということはないでしょうか。
再現する状態のとき、[ファイルタイプ別の設定]の[自動インデント]
の状態はどのようになっているのかもしれません。

[ ]
RE:13713 CソースでのインデントがおかしNo.13715
秀まるお2 さん 02/12/19 18:58
 
 もしかしてですが、インデントがおかしくなった関数の上が関係してるんじゃ
ないでしょうか。

 たとえば、

----------------------------------------------
    a() {
    }

b() {
----------------------------------------------

 と書いて、b()の後ろの「{」の後ろでリターンキーを押すと、インデントが2
タブ分になります。その状態で「}」を入力すると、こうなります。


b() {
    }

 そういう話かと思いましたが、少し違うかも。

[ ]
RE:13715 CソースでのインデントがおかしNo.13718
kbhakt さん 02/12/20 11:49
 
 早速の返信、ありがとうございます。

 特にマクロは使用していません。

 ちょっと今日はソースをあまり打ちこまないので例の現象がでるかどうかわかりま
せんが、起きた場合はインデント設定を確認してみます。


 インデント関連で別の質問ですが、カッコなしif文を打ち込んだ時、

if (hoge)
    hoge++;

というような記述をした場合、「if (hoge)」のところでの改行では、ifと同じ高さ
にカーソルがいくのはいいのですが、その後の入力が「{」以外だった場合、一つイ
ンデントしてくれるとうれしいのですけど。

 現状ですと、最初の改行した後一つインデントさせ、「hoge++;」の入力&改行後
にタブをデリートするという二つの無駄な作業があります。
 これは何か設定で回避できるのでしょうか。


 以上です。 最初の不具合が起きたらまた投稿します。

[ ]
RE:13718 CソースでのインデントがおかしNo.13719
たけのこ さん 02/12/20 12:03
 
たけのこです。

// これと云って回避方法でも何でもありませんが。

>if (hoge)
>    hoge++;

ウチではこういうコーディングは許していないし、こうい
うコーディングを許している会社と一緒に仕事をしたこと
もありません。

if(hoge){
        hoge++;
}
か、{が次行のifと同カラムに来るかどちらかですね。
ifやループのブロック内センテンスが1つの時は{}を省略
できるってコトでしょうけど、もしそのセンテンスが複数
になるとバグの元({}の付け忘れ。コンパイルエラーにな
らないし)なので、許さないトコが多いみたいです。

[ ]
RE:13719 CソースでのインデントがおかしNo.13722
kbhakt さん 02/12/20 15:06
 
たけのこ様へ
>ifやループのブロック内センテンスが1つの時は{}を省略
>できるってコトでしょうけど、もしそのセンテンスが複数
>になるとバグの元({}の付け忘れ。コンパイルエラーにな
>らないし)なので、許さないトコが多いみたいです。

 おっしゃるとおりですね。
 私も習慣的に{}を省略していましたが、意図的に{}をつけたコーディングの方が
「正しい」かもしれません。
 これについてはいろいろ意見もありそうですが、この件については、私は{}をつけ
ることで回避しようと思います。
 ご忠告、ありがとうございました。


 問題のインデント不良は今のところ再現していません・・・
 あの時だけだったのかな? PCを再起動したりしてしつこく検証してみればよか
ったです。

[ ]
RE:13722 CソースでのインデントがおかしNo.13725
秀丸担当 さん 02/12/20 18:57
 
> 問題のインデント不良は今のところ再現していません・・・
> あの時だけだったのかな? PCを再起動したりしてしつこく検証してみればよ
>かったです。

もしまた再現するようでしたらよろしくお願いします。
カッコなしif文は、常用的な使い方といえないかもしれないので、
保留とさせていただきます。

[ ]