◀ANSI版開発トップへ
  • 3632 シンプルなC/C++インデント
    • 3633 Re: シンプルなC/C++インデント
      • 3635 Re2: シンプルなC/C++インデント
  • [3632] シンプルなC/C++インデント j2 2004年06月12日 17:05


    サクラエディタ初心者です。
    C/C++のスマートインデントで半角空白を使いたくて

    "{"直後に改行を入力した場合
    タブ、半角空白だけの行で"}"を入力した場合

    に限定したシンプルな仕様にお試しで改造してみました。

    (CEditView::Command_CHARを肥大化させてしまったので
     実装はシンプルとは....いえない状態です)

    smartindent20040612.lzh
    (ssrc_2004-06-05.tar.bz2との差分です。)

    オートインデントに依存した割には
    全角空白やその他のインデント対応文字の対応が
    中途半端("}"は対応していない)なのは
    "C/C++用"だからということで.....。

    過去、見て見ぬフリが続いているスマートインデントなので、
    こんな改造で済むわけないのでしょうが
    自分の書いた、稚拙なコードをたくさんの方に
    みてもらうチャンスなので思い切ってUPしてみました。


    • [3633] Re: シンプルなC/C++インデント げんた 2004年06月13日 02:39

      パッチを拝見しました.従来のSmartIndent_CPP()が全く使われていなくてびっくり.
      私としてはこの仕様が良いのか悪いのかはちょっと判断できません.こういうのは「期待通り動く」ことが重要ですから.

      smart indentに関しては#を入れたらインデントをキャンセルしたいとか for/whike等の次の行は中括弧が無くても印田として欲しいとか要望が色々出ており,たぶん今回の変更も含めて汎用的に行うためには特定の文字が入力されたら特別な関数を呼ぶ or マクロ実行といったことができる仕組みを入れる必要があるかと思います.
      • [3635] Re2: シンプルなC/C++インデント j2 2004年06月13日 18:04

        げんたさん コメントありがとうございます。

        > パッチを拝見しました.従来のSmartIndent_CPP()が全く使われていなくてびっくり.
        > 私としてはこの仕様が良いのか悪いのかはちょっと判断できません.こういうのは「期待通り動く」ことが重要ですから.
        >
        > smart indentに関しては#を入れたらインデントをキャンセルしたいとか for/whike等の次の行は中括弧が無くても印田として欲しいとか要望が色々出ており,たぶん今回の変更も含めて汎用的に行うためには特定の文字が入力されたら特別な関数を呼ぶ or マクロ実行といったことができる仕組みを入れる必要があるかと思います.

        for,whileで中括弧なしの場合のインデントですが
        確かに便利な事もありますが、逆に
        for (;;)
        {
        /* .... */
        }
        というスタイルで記述する人にとっては迷惑だったりします。
        思考を妨げないのがスマートなインデントだとすると
        デフォルトをOFFにしておくのが一番無難だったりします。
        (コーディングスタイルは人それぞれなので...)

        それはさておき、今回の変更ですが、
        最初 一般掲示板のwmlhqさんの修正(#3405)と
        同じような修正をしてみました。
        で、いろいろと触ってみて、
        現状の実装はオーバースペックに感じて....。
        で、余計なインデントされるよりは
        インデントが不足する場面があるほうが
        無難という判断の元に作成したのが今回の変更です。
        あくまで、せっかく作ったので、
        必要な方はどうぞレベルというレベルです。
        取り込まれるとは思っていませんので。

        最後に、あまり汎用的に作ろうと構えてしまうと
        沈み込んでしまうのではないかと心配です。
        また、完成したとしても、
        何でもできる=何にもできない
        に陥ってしまう、または
        Emacsのように
        マクロがエディタを覆ってしまうなんて事に
        ならなければいいのですが...。