Perlにおける自動インデントに関してNo.16640
kikuto さん 04/02/06 15:36
 
Perlのコーディングでは、「自動インデント」と「C言語用のインデント」を有効に
しています。

if while for など、C言語にあるものはもちろんまともにインデントされるのですが、
foreach のように、C言語にないものは、まともに動作しないときがあります。

    if (aaa) {
        bbb
        ccc
        foreach (ddd) {
            eee
        }


のような場合はまともに動作してくれるのですが、親構造(この場合はif)の開き中括
弧の次の行のインデント位置(bbbの位置)が、下のように、(「C言語用のインデン
ト」を有効にしていた場合には)本来あるべきところになかった場合、

    if (aaa) {
    bbb
        ccc
        foreach (ddd) {
        eee
    }


のように、foreach インデントの基準はbbbの位置になってしまいます。

上記のような例は滅多にありませんが、私は「改行するとき空白だけの行だったら空
白を削除する」を有効にしているので、if行の次の行を空行にすることはあります。
そのときは、インデントの基準が行頭になり、

    if (aaa) {

        ccc
        foreach (ddd) {
    eee
}

となってしまいます。

ちなみに、開き中括弧だけの場合は、

    if (aaa) {

        ccc
        {
            eee
        }

と、まともに動作します。

foreach はC言語のものではないので、C言語用のインデントを有効にしてもこちらの
ねらい通りの動作をしないのは当たり前なのかもしれません。

そこで、要望(提案)です。
・「C言語用のインデント」の対象に foreach も加える
・「Perl言語用のインデント」の項目を追加する
・「C言語用のインデント」を「C言語/Perl言語用のインデント」に変更して foreac
h を対象に加える
等の検討してもらえませんでしょうか?
宜しくお願いします。

[ ]
RE:16640 Perlにおける自動インデントに関No.16641
秀まるお2 さん 04/02/06 16:06
 
 現状のC言語インデントに「foreach」も含める程度の修正なら簡単に出来ると
思います。

 そもそもPerlの文法を知らないのでなんですが、単純に現状のC言語インデン
トと同じロジックで、「foreach」をインデント対象に加える程度の修正で、そ
れでちゃんとPerlでのインデントが出来るのでしょうか?。

 もしかしてそれではダメで、ちゃんとしたPerl用のインデント処理が必要って
ことになると、それはそれで大きな修正になるし、そもそも修正以前にPerl言語
についての学習が必要になります。

 あるいは、これを対応するならついでに他の××言語でも…って話が出てこな
いかという心配もあります。

 どんなもんでしょ?>詳しいユーザー様

[ ]
RE:16641 Perlにおける自動インデントに関No.16665
kikuto さん 04/02/12 09:16
 
> 現状のC言語インデントに「foreach」も含める程度の修正なら簡単に出来ると
>思います。
>
> そもそもPerlの文法を知らないのでなんですが、単純に現状のC言語インデン
>トと同じロジックで、「foreach」をインデント対象に加える程度の修正で、そ
>れでちゃんとPerlでのインデントが出来るのでしょうか?。

Perlを使い始めて間もないので、Perlの深いところまでは解らないのですが、とりあ
えずその程度の修正をしていただければ、Perlとしてのまともなインデントはできる
と、私は思っています。

[ ]