自動インデントについての要望No.05073
tac2000 さん 00/02/23 10:55
 
はじめまして。

秀丸エディタの自動インデントの仕様についての要望です。

自動インデント+C言語用のインデントを使用しています。

C言語の"{ }"で括られたブロックを作成する際に、始めに"}"
も同時に入力してブロックを閉じてから、中身を作成するよう
な場面がよくあります。

main(){
>>>>
}
(>>>>はタブ文字)

つまり、上記のような関数の書き始めにおいて、
"main(){" -> "リターン" -> "}" -> "shift+リターン"
というようにキーボードを打っていきます。
(これは括弧の閉じ忘れ防止のために、よく行われる手段
 だと思いますが。)

ここで要望なのですが、最後の"shift+リターン"で上に戻った
際に、自動でタブ文字を入力していただけたらとてもありがた
いのですが、ご検討いただけないでしょうか。

よろしくお願いします。

[ ]
RE:05073 自動インデントについての要望No.05077
秀丸担当 さん 00/02/23 12:03
 
>ここで要望なのですが、最後の"shift+リターン"で上に戻った
>際に、自動でタブ文字を入力していただけたらとてもありがた
>いのですが、ご検討いただけないでしょうか。

shift+リターンは、改行ではなく、空行挿入なので、自動イン
デントがかかるのは変なのではないかと思います。
以下のようなマクロで対処してみてはどうでしょうか。
少し改善する必要があるかもしれないですが。

up;
golineend;
insertreturn;

[ ]
RE:05077 自動インデントについての要望No.05078
tac2000 さん 00/02/23 13:23
 
コメントありがとうございます。

>shift+リターンは、改行ではなく、空行挿入なので、自動イン
>デントがかかるのは変なのではないかと思います。
空行挿入とはいえ、インデント挿入済みの行に対して空行挿入を
実行すると、空行に対してインデントされるので(行頭ではイン
デントされないようですが)、仕様的におかしくはないと思いま
すが。


>以下のようなマクロで対処してみてはどうでしょうか。
>少し改善する必要があるかもしれないですが。
実際問題としては、"shift+リターン"のあとにタブキーを押下す
るだけなので、マクロを作成するほどのことではないとは思って
います。

[ ]
RE:05078 自動インデントについての要望No.05079
ひろ さん 00/02/23 18:58
 
 tac2000 さん今日は、ひろです。
> 空行挿入とはいえ、インデント挿入済みの行に対して空行挿入を
> 実行すると、空行に対してインデントされるので(行頭ではイン
 日本語の意味から考えると、tab などが挿入されたら空行じゃないので「
空行挿入」なのに indent されるのはなんだか変です。ただ実際に
programming をするとなると、現在の仕様のほうが圧倒的に使いやすいので、
良いんでしょうね。

 「空行挿入」は常に括弧の対応を考慮して indent されたほうが使いやす
いような気はします。しかし理由は後に書きますが、仕様変更には反対です。

> >以下のようなマクロで対処してみてはどうでしょうか。
> >少し改善する必要があるかもしれないですが。
> 実際問題としては、"shift+リターン"のあとにタブキーを押下す
> るだけなので、マクロを作成するほどのことではないとは思って
 この話の展開って変じゃないですか。本当に「tab key を押すだけ」で「
それほど手間とは感じていない」なら、そもそも最初の発言自体が無意味に
なってしまいます(^^)。

 単純な作業を秀丸の仕様を変えることなく実現できるなら、macro で十分
だと思います。それに下手に仕様を変更すると、既に公開されている macro
との整合性が取れなくなる恐れがあります。

 ただ macro は上書き mode を考慮に入れて、
up;
golineend;
if(overwrite ){
    overwriteswitch;
    insertreturn;
    overwriteswitch;
  }else {
    insertreturn;
  }
とする良いんでしょうね、。

[ ]
RE:05079 自動インデントについての要望No.05085
tac2000 さん 00/02/24 09:35
 
コメントありがとうございます。

> この話の展開って変じゃないですか。本当に「tab key を押すだけ」
>で「それほど手間とは感じていない」なら、そもそも最初の発言自体
>が無意味になってしまいます(^^)。
 macro で実現するということは、何らかのキーに割り当てて使用する
ことになり、それならば、タブキーを押すだけと何ら変わりがないと考
えて上記発言となっていました。
 しかし、macro を"shift+リターン"に割り当てればよいことに気付き
ました。macro で簡単に実現できるとはこのことだったのですね。

ということで、この問題は無事解決することができました。
ありがとうございました。


[ ]