sakura
sakura copied to clipboard
行削除の機能が複数行を選択した場合には実行できない
問題内容
複数行を選択した状態ではサクラエディタの行削除(折返し単位)
が動作しない
選択した行の単位で削除できるようにできないだろうか?
再現手順
適当な文字列を複数行に記載する
文字列を2行以上選択した状態だと行削除(折返し単位)
が実行されない。
再現頻度
常に再現される
問題のカテゴリ
- 仕様の問題
- プログラムの動作上の問題
- 正式リリース版
環境情報
- OS バージョン Windows 10 Home 64bit
- サクラエディタバージョン サクラエディタ v2.4.1.2849 32bit (tag v2.4.1) (GitHash ee8234f65fd7a69116e07e819c6972b246eda926) (GitURL https://github.com/sakura-editor/sakura.git) Compile Info: V1916 WPR WIN601/I800/C000/N601 Last Modified: 2020/5/30 03:10:34
サクラエディタのコマンド仕様として考えられることは2つあります。
考え方 | 説明 |
---|---|
コマンドが実行できないのがおかしい | 状況によってコマンドを実行できない不具合を修正することになります。 |
メニューが有効なのがおかしい | メニューが無効化されない不具合を修正することになります。 |
いずれにしろ「バグじゃね?」ってことになるんですが、なんとなく後者な気がします。 コマンドに「実行できない状況」があるのは当たり前だと思うからです。 ex) 挿入するにはキャレットが必要、タブを閉じるにはタブを表示していることが必要。
詳細見ないでテキトー言ってるので「違ってたらごめん」です。
手元で試したところ、単一行・複数行を問わず、何らかのテキストが選択されている状態ではメニューが無効化されますし、ショートカットキー(Shift+Ctrl+E)も機能しません。 不具合の報告ではなく、テキストが選択されている場合でも「行削除(折り返し単位)」を実行できるように仕様を変更してほしい、という要望だと解釈しましたが、相違ないでしょうか?
@kasumikagari はい、そのとおりです。
メニューが無効になるから困ってる、ということですかね。
「行削除(折り返し単位)」の機能はたぶん、 現在位置の「折り返し行頭」から「折り返し行末」までの文字列(=1行)を削除する だと思われます。
1文字以上選択されていたら即使えない機能ではないので、メニューの活性条件が誤っている気がします。
ただ、それとは別に選択された範囲(複数行も考慮する)の外側にある「折り返し行頭」から「折り返し行末」までを削除させたいのであれば、それは確かに仕様変更である気もします。
類似機能がいくつかあるので進め方を迷う感じです。
類似機能は以下の4つです。
- 行頭まで切り取り(改行単位)
- 行末まで切り取り(改行単位)
- 行頭まで削除(改行単位)
- 行末まで削除(改行単位)
いずれもテキストが選択されている場合にも実行可能ですが、コマンドの内容にかかわらず選択された範囲だけを削除します。言い換えると、テキストが選択されているときは2回実行しないと望んだ動作になりません。
本題の行切り取り・行削除が選択中に実行できないのは他のコマンドと比較すると不自然です。ただ、提案されている通りに複数行を削除できるように単純に拡張すると、それはそれで選択範囲だけをまず削除する他のコマンドとの整合性が問題になります。
他のコマンドと同様に、選択されていれば選択範囲だけを削除するように拡張するのが無難だと思います。複数行を削除する場合は2回実行することになりますが、他のコマンドと同じ動作になるので問題だとは思いません。
理想の動作としては下記のページに置いてあるDeleteLineEx.zip
のマクロになります。
Macro/投稿/235 - SakuraEditorWiki
マクロで解決可能ですので、難しいようでしたらエディタの機能についてはそのままでもいいかと思います。
コマンド一発で複数行を行頭から行末まで削除する機能をお望みなら、私が思うに実現は難しいでしょう。他のコマンドと動作が微妙に異なることについて、いろいろなところからツッコミが入る可能性が高いからです。