行コメントのコメント記号挿入位置について / Insertion position of comment delimiters
Environment (環境)
- CotEditor: 3.7.0-rc.3 (335)
- System: macOS Mojave 10.14.3 (18D109)
- Language: Japanese
Question (確認事項)
環境設定 > [編集] パネル
- [x] コメント記号にスペースを追加
- [ ] 常に行頭からコメントアウト
行コメントを使う場合、直感的にはカーソルの列に関わらず "最初の [[:graph:]] (印字文字)" の位置に コメント記号を挿入してほしいのですが、どのような仕様/意図で今のような挙動になってますか? 例えば、⌘/ キーを2回押下した場合、コメント解除ではなく、コメント記号が2回入力されるのとか。
Request (要望)
- 単一行の行コメントの場合は、"最初の印字文字" の位置にコメント記号 (+スペース) を挿入する
- コメント解除の場合は、前方一致で最初のコメント記号 (+スペース) を削除する
- 複数行の行コメントの場合は、選択範囲内の "左端の印字文字" の位置にコメント記号を挿入する
- ただし、空行の場合はスペースまたはタブを補充して、コメント記号を挿入する
- コメント解除の場合は、単一行と同様
すみません、状況がよく把握できないので例をいただけますか?
行コメントを使う場合、直感的にはカーソルの列に関わらず "最初の [[:graph:]] (印字文字)" の位置に コメント記号を挿入してほしいのですが
例えば、|の位置にカーソルがあって#が行コメント記号だとしたときに
foo {
abc|
}
⌘/以下のように挿入がしたいということでしょうか?
foo {
# abc|
}
コメント解除については、「常に行頭からコメントアウト」オプションがオフのときは、「テキストが選択されている」ときのみ選択範囲の内のコメント記号を除去していますが、これについてはたしかに前方の最初の最初のコメント記号にしてもいいのかもしれません。ただ、ロジックを結構変える必要があるので、3.7.1以降の課題とさせて下さい。
説明不足で申し訳ないです。
はい、おっしゃる通りです。
指定の通り、| がカーソル、# がコメント記号です。
単一行を行コメントする場合
foo {
abc|
}
⌘/ キー押下
foo {
# abc|
}
複数行を行コメントする場合
if { } ブロックを選択している前提で、
foo {
if (true) {
abc
def
ghi
}
}
⌘/ キー押下
foo {
# if (true) {
# abc
# def
#
# ghi
# }
}
マルチカーソルで単一行を行コメントする場合
if の前にカーソル移動、^⇧↓ キー×5
foo {
|if (true) {
| abc
| def
|
| ghi
|}
}
⌘/ 押下
foo {
|# if (true) {
| # abc
| # def
| #
| # ghi
|# }
}
空行の行コメントは難しいかも。すぐ上の行のカラム位置を取得するとか煩雑そうだし。
状況説明ありがとうございます。完璧にわかりました。
たしかにAtomとかSublime Textなんかはご要望の挙動ですね。メンタルモデルとしても気持ちはわかるので、中期的に検討させて下さい。数ヶ月以内にはおそらく。
Atom は要望の挙動です。 逆に、eclipse の行コメントは "行頭に行コメント記号挿入" がデフォルト挙動だったりします。
解釈の問題なのかもしれませんが、⌘/ キー押下が
- カーソル位置に "行コメント記号を挿入する"
- カレント行を "コメントアウトする"
の違いともとれます。 要望してみたものの、利用者によって解釈や利用状況も違うので一概にどちらがいいとも言えなくもないです。
ただ、行コメントの解除は変更の余地ありと理解ください。
そうなんですよね、別に今の仕様が誤りというわけでもないので好みの問題かと思います。現状だと「常に行頭からコメントアウト」オプションによって
- カーソル位置に "行コメント記号を挿入する"
- カレント行を "コメントアウトする"
を切り替えており、オンの時の"コメントアウト" が常に行頭にコメント記号が入ってる状態です。個人的にはプログラミングコードについては行頭からコメントアウト派なので「常に行頭からコメントアウト」の挙動をするオプションは残すつもりなのですが、インデント後にコメント記号を入れたい気持ちもわかりますし、オフのときはインデント後に記号挿入でもいいかなと考えています。カーソル位置に記号を挿入するアクションについては、これはコメントアウトとは別の動作なので別にコマンドを設けるのが正解な気も。 とはいえ細かい仕様は要検討ですね
ただ、行コメントの解除は変更の余地ありと理解ください。
同意します。
個人的にはプログラミングコードについては行頭からコメントアウト派
そうなんですよね。"Editor War" ではないけど、派閥化した問題の気がします。 私は、"ブロックの頭からコメント派" です。
遅くなりましたが第一歩として、インデント後のコメント記号もコメント解除コマンドで削除できるようにしました。CotEditor 3.8.5にて導入予定です。 挿入については今しばらくお待ちください。