sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.23k stars 162 forks source link

行削除の機能が複数行を選択した場合には実行できない #1468

Open ten9miq opened 3 years ago

ten9miq commented 3 years ago

問題内容

複数行を選択した状態ではサクラエディタの行削除(折返し単位)が動作しない 選択した行の単位で削除できるようにできないだろうか?

再現手順

適当な文字列を複数行に記載する 文字列を2行以上選択した状態だと行削除(折返し単位)が実行されない。

再現頻度

常に再現される

問題のカテゴリ

環境情報

berryzplus commented 3 years ago

サクラエディタのコマンド仕様として考えられることは2つあります。

考え方 説明
コマンドが実行できないのがおかしい 状況によってコマンドを実行できない不具合を修正することになります。
メニューが有効なのがおかしい メニューが無効化されない不具合を修正することになります。

いずれにしろ「バグじゃね?」ってことになるんですが、なんとなく後者な気がします。 コマンドに「実行できない状況」があるのは当たり前だと思うからです。 ex) 挿入するにはキャレットが必要、タブを閉じるにはタブを表示していることが必要。

詳細見ないでテキトー言ってるので「違ってたらごめん」です。

kengoide commented 3 years ago

手元で試したところ、単一行・複数行を問わず、何らかのテキストが選択されている状態ではメニューが無効化されますし、ショートカットキー(Shift+Ctrl+E)も機能しません。 不具合の報告ではなく、テキストが選択されている場合でも「行削除(折り返し単位)」を実行できるように仕様を変更してほしい、という要望だと解釈しましたが、相違ないでしょうか?

ten9miq commented 3 years ago

@kasumikagari はい、そのとおりです。

berryzplus commented 3 years ago

メニューが無効になるから困ってる、ということですかね。

「行削除(折り返し単位)」の機能はたぶん、 現在位置の「折り返し行頭」から「折り返し行末」までの文字列(=1行)を削除する だと思われます。

1文字以上選択されていたら即使えない機能ではないので、メニューの活性条件が誤っている気がします。

ただ、それとは別に選択された範囲(複数行も考慮する)の外側にある「折り返し行頭」から「折り返し行末」までを削除させたいのであれば、それは確かに仕様変更である気もします。

類似機能がいくつかあるので進め方を迷う感じです。

kengoide commented 3 years ago

類似機能は以下の4つです。

いずれもテキストが選択されている場合にも実行可能ですが、コマンドの内容にかかわらず選択された範囲だけを削除します。言い換えると、テキストが選択されているときは2回実行しないと望んだ動作になりません。

本題の行切り取り・行削除が選択中に実行できないのは他のコマンドと比較すると不自然です。ただ、提案されている通りに複数行を削除できるように単純に拡張すると、それはそれで選択範囲だけをまず削除する他のコマンドとの整合性が問題になります。

他のコマンドと同様に、選択されていれば選択範囲だけを削除するように拡張するのが無難だと思います。複数行を削除する場合は2回実行することになりますが、他のコマンドと同じ動作になるので問題だとは思いません。

ten9miq commented 3 years ago

理想の動作としては下記のページに置いてあるDeleteLineEx.zipのマクロになります。

Macro/投稿/235 - SakuraEditorWiki

マクロで解決可能ですので、難しいようでしたらエディタの機能についてはそのままでもいいかと思います。

kengoide commented 3 years ago

コマンド一発で複数行を行頭から行末まで削除する機能をお望みなら、私が思うに実現は難しいでしょう。他のコマンドと動作が微妙に異なることについて、いろいろなところからツッコミが入る可能性が高いからです。