|
三月さんからのご指摘で、問題点に気がつきました。
「秀丸に言語の解釈する機能が必要」ということが私なりの結論なのですが、順を追
って書かせてください。
ここで、私からの要望をまとめさせてください。
「caseキーワードに対して、caseに続くステートメントのインデント有無を指定可能
にする」です。
これは、既存機能の「switchキーワードに対するcaseステートメントのインデント制
御」を拡張するものになると思います。
このため、指定方法として次のようなUIイメージが考えられます。
現在:「□ C言語インデントで、switchの場合はインデントしない」
案 :「□ switchキーワードに対してcaseキーワードをインデントす
る」..............(1)
「□ caseキーワードに対してcaseに続くステートメントをインデントす
る」......(2)
これらの組み合わせによるコードイメージは、次の通りです。
<a> (1)on, (2)on
switch (i) {
case 1:
....
break;
}
<b> (1)off, (2)on
switch (i) {
case 1:
....
break;
}
<c> (1)on, (2)off
switch (i) {
case 1:
....
break;
}
<d> (1)off, (2)off
switch (i) {
case 1:
....
break;
}
ここまでの内容は、「指定方法」と「その結果」に関するものです。
次に、三月さんからご指摘がありました「入力中の動作」について考えてみました。
<a>または<b>のレイアウトを指定しているとき、caseキーワードの次行に進むとイン
デントされます。
しかし、No12423のようなコードの場合、2つ目のcaseからインデントが不必要になり
ます。
<No12423 三月さん より>
> switch (i) {
> case 1:
> case 2:
> case 3:
> ....
> break;
> }
そこで、caseの後に続くコロンが入力されたことを契機にし、インデントを再調整す
る方法を書きました。
具体的には、コロンが入力されたときにインデントを1つ戻します(=削除します)。
しかし、インデントを「後(あと)」から調整する場合、その前にユーザが修正する
ケースも考えられます。
<No12432 三月さん より>
> caseでインデントが発生すると、
> 次のcaseを書くためにバックスペースを入れないといけないですよね。
ユーザが修正した場合は、余計にインデントを戻さないよう、注意が必要になります。
また、次のようなケースも考えられます。
<caseキーワードを同一の行に記述>
switch (i) {
case 1:case 2:case 3:
....
break;
}
<コメント内にコロンを記述>
switch (i) {
case 1:
// コメント:
....
break;
}
つまり、switchブロックを解釈しないと、正確に制御できないでしょう。
ここで、別スレッドNo12428、アルビレオさんのコメントが気になります。
> 単なるテキストエディタの支援機能にそこまで特定の言語に依存したものを望むの
>はちょっと酷な気がします。
私も自分の要望にそう感じ始めました。
ただ、一旦提示したことなので、秀丸担当様からの何らかの回答をいただけると幸い
です。
|
|