ファイル保存時の[行末の空白を削除]のときに、カーソル位置の空白は削除してほしくない

投稿者: Delフサ3 声11 投稿

要望です。 設定の[ファイル][保存時]に[行末の空白を削除] というものがあります。 こちらに追加のオプションとして、 あるいは、このままとして カーソル(キャレット)位置の空白だけは残してもらう という機能を希望します。 ----- 細かく自分の使い方を説明します。 ファイルタイプ別に切り替えて 特定の場合には、オートインデント設定して使っています。 空行にスペースだけ残るのは嫌なので [行末の空白を削除] をしたいと思って [行末の空白を削除] ON にしたのですが  if (なんとか) {   |  } こんな状態のときに、 「これからどんな処理書こうかなー」と迷いながらも 一時保存するのですが、 そのときに自分のカーソル位置のインデントが消えてしまうのが ちょっと残念になります。 それを避けるために [行末の空白を削除] OFF にして使っていますが、 やはり空行にスペースが残るのは嫌なので、 時々切り替えたいなと思うのですが、 [行末の空白を削除] は、ダイアログでの切り替えが 少したどらなければいけないので、面倒だな。と思う次第です。 マクロで機能ON/OFFを作成すればワンクリックで [行末の空白を削除] ON/OFF を切り替えられる気もしますが 本体の機能としてあるほうがありがたいなと思いました。 [行末の空白を削除]で、カーソル位置の行だけ無視しても ユーザーのほぼすべての方には問題にならないのではないかと思いました。 細かい使い勝手について、長くなりましたが ご検討いただければ幸いです。
Delフサ 様 いつもお世話になっております。江村です。 beta 4 で対応しました。 よろしくお願い申し上げます。
まぢですか! ありがとうございます。 すごく嬉しいです。
ダウンロードして動作確認しました。 機能としては望んでいた機能です。 とてもいい感じで使いやすいです。 ブログのこちらの文言だけ気になりました。 > EmEditor v17.2.0 beta 4 を公開しました > 一般の新機能 > [行末の空白を削除] コマンドで、カーソル位置の右側の空白は削除しないようにしました。 ここが「右側の」ではなく「左側の」になると思います。 すごく細かくてすいません。 細かい要望にも対応していただき、 とても感謝してます。
この変更はおおむね歓迎ですが,逆にありがたくないケースもあります。 最終行がインデントされたテキストを書き終わり,最後に [Enter] を押すとオートインデントによってスペースだけの行ができますが,この状態で保存した場合はやはりそのスペースは削除してほしい。 1~2 段のインデントなら [BackSpace] で消せばいいのですが,多段になるとつい [BackSpace] を押しすぎることもありますし,[Shift]+[Ctrl]+[←] とか [Shift]+[Home] とかで選択して削除とかも面倒です。[Ctrl]+[L] という手もありますが,クリップボードが変化するのは嬉しくありません。 「最終行がインデントされたテキスト」は,Python,CoffeeScript,Slim,Sass などでよくあります。 そこで,beta 4 の仕様を基本にしつつ,カーソル行が最終行だった場合はやっぱり末尾空白を削除する,という仕様はいかがでしょうか。 なお,「EmEditor v17.2.0 beta 4 を公開しました 」において > [行末の空白を削除] コマンドで、カーソル位置の右側の空白は削除しないようにしました。 とありますが「カーソル位置の右側の空白」は「カーソル行の行末の空白」の間違いですよね?
あ,ごめんなさい,beta 4 の仕様は,「カーソル位置の右側の空白は削除するが,左側は削除しない」ということだったのですね。 いずれにしても,最終行の件はご検討いただければと思います。
redakt55さん。 行末削除設定の新しい実装の場合、 カーソル行の空白を削除したいときは保存前に[Home]キーで先頭に移動すると 行の空白は削除されました。
Delフサさん,ご教示ありがとうございます。 カーソルの右のスペースは削除されるからそうなるのですね。 人によるのでしょうが [Home] や [End] は私にとっては押しづらく,また,[Home] を押し忘れてうっかり保存すると,もう一度保存操作をやっても保存が行われないので整形もされない,という点がちょっとツラいですが,提案が採用されなかった場合はこの方法で対処しようと思います。
なるほど。今のノートPCとかは、Homeキーは確かに押しにくいっすね。 自分は最終行のインデントが問題になることは今までなかったのと 最終行に空行でも入れておけば何も変わらなさそうなので redakt55さんご提案の仕様でも使い勝手は変わらないです。 って、すごく個別の1ユーザーのわがまま的な仕様の要望について 勝手なこと言わせてもらっていますが、 江村さんには大変感謝しております。 使いやすいです。
Delフサ 様、redakt55 様 いつもお世話になっております。江村です。 「カーソル位置の左側の空白は削除しない」の間違いでした。失礼しました。 まもなく公開される v17.2.0 正式版で、以下のマクロをマイ マクロに追加し、[マクロのカスタマイズ] ダイアログで、このマクロを選択して、「保存直前」のイベントに割り当てていただければ、ご希望の動作が可能です。
if( document.selection.GetActivePointY( eePosLogical ) == document.GetLines() ) {
	document.selection.StartOfLine( false, eeLineView );
}
残念ながら、v17.2.0 正式版が必要です。v17.2.0 beta 版では、マクロの実行と「行末の空白を削除」のタイミングが異なるために、希望通り動作しません。 よろしくお願い申し上げます。
分かりました。

このトピックの投稿: 11