フォーラムの返信を作成しました。
- 作成者投稿
- newtonメンバー
江村様
早速の返答ありがとうございます。箱型選択は、貼り付け後のカーソルの位置がどのようになるかで使い勝手が決まります。
「張付け操作を2回以上」した場合のカーソルの位置がポイントとなります。もし私の要望が妥当ならば、10.xで変更をお願いいたします。
newtonメンバー江村さま
対応ありがとうございます。V9.17で動作を確認して見ました。
残念ながら、ボックス選択した後、コピー操作を連続させた場合のカーソルのx方向の位置が保持されていないと使いにくいです。
下記の「動作-2」をV10で実現させていただければ幸いです。▼現在の動作 (動作-1)
+–+
aa|aa|
bb|bb|
cc|cc|
+–+
+–+
|aa|
|bb|
|cc|
+–+
$ ← 貼り付け2回目のカーソルの位置
(x方向の位置が変化)▼要望する動作 (動作-2)
+–+
aa|aa|
bb|bb|
cc|cc|
+–+
+–+
|aa|
|bb|
|cc|
+–+
% ← 貼り付け2回目のカーソルの位置
(x方向の位置は保持)+-+
| | …. 箱型データ貼り付け領域
+-+$ … 現在のカーソルの位置
% … 要望するカーソルの位置※ 個人的には「動作-2」しか必要ないですが、人によっては現行の動きのほうがよい人もいるかもしれません。
貼り付け後のカーソルの位置は、エディタ設定でどちらにするか設定できるとよいと思います。
確かWZはそのようになっていたように記憶しております。■参考:秀丸で使用しているマクロ
※ BOX選択のマクロは省略
//
// WZ Like BOX貼り付け
//
// 2007/03/12
// 2007/03/15 y方向のカーソル移動スペースの確保処理を修正
// 2007/05/12 余分な半角スペースが入る現象: コピー範囲が2バイトコードの 2バイト目にかかる場合を考慮
//
beginclipboardread;
while(1) {
$s = getclipboard;
if( $s == “” ) {
break;
}
#len = strlen($s) – 1;
if( #cx < #len ) {
#cx = #len;
}
#cy = #cy + 1;
}
#x = x;
#y = y;
pasterect;
//REM moveto #x + #cx, #y + #cy – 1;#x2 = #x; // new X-posi
#y2 = #y + #cy; // new Y-posi
moveto #x2, #y2; // カーソル移動#x_delta = x – #x2; // x方向における指定した位置とのズレ
#y_delta = y – #y2; // y方向における指定した位置とのズレ#kanjiF = 0;
if (#x_delta < 0) {
//
// コピー範囲が2バイトコードの 2バイト目にかかる場合を考慮:
// (1) 一つ前の行の2桁前が2バイト文字の場合 (現在行の2桁前は 1or2バイト文字の両方の場合がある)
// (2) 一つ前の行の2桁前は1バイト文字だが、現在行の2桁前が2バイト文字の場合
//
call sub_chkkanj (#x2 – 2), (#y2 – 1); // 一つ前の行の2桁前が2バイトコードか
#kanjiF = ##return;
if (#kanjiF == 0) {
call sub_chkkanj (#x2 – 2), (#y2); // 現在行の2桁前が2バイトコードか
#kanjiF = ##return;
}
if (#kanjiF == 1) {
#x_delta = #x_delta + 1; // 調整: 半角スペースが余分に挿入されるのを防ぐため
}
if (#x_delta < 0) {
$padding = ""; // x方向にカーソルが移動できるようにするための挿入文字列
while(#x_delta < 0) {
$padding = $padding + " ";
#x_delta = #x_delta + 1;
}
insertfix $padding; // x方向のカーソル移動スペースを確保
moveto #x2, #y2; // もう一度カーソル移動
}
}if (#y_delta < 0) { // y方向のカーソル移動スペースの確保処理
if (x == 0) { // 現在位置の確認: このまでの処理でカーソルが行の先頭にあるか否か
golineend; // 最後に編集した箇所の行末に移動
insertreturn; // 改行を挿入
} else { // x方向における指定した位置とのズレをもう一度考慮
golineend; // 最後に編集した箇所の行末に移動
insertreturn; // 改行を挿入。y方向のカーソル移動スペースを確保#x_delta = x – #x2; // x方向における指定した位置とのズレ (0 – #x2)
$padding = ""; // x方向にカーソルが移動できるようにするための挿入文字列
while(#x_delta 0xff) {
##ret = 1;
} else {
##ret = 0;
}
moveto ##x0, ##y0; // restore the cursor position
return ##ret;newtonメンバー返答、ありがとうございます。
現在の実装で利用している『Windowsのタブコントロール』の仕様であるということで、了解しました。
タブ表示の際は、タブの表示スタイル設定を「タブ」ではなく「ボタン」にします。ただ、***Firefoxのtabは列のローテーションを起こしません*** 。
(Tab Mix Plusというadd-onを使っていますが)
これは見た目はタブですが、EmEditorで言うところの「ボタン」スタイル相当を利用しているのもしれません。◆09/03/02追記: 他の実装方法での改善の可能性
(09/02/20 追記の修正)
・アプリの中の設定パネルでのタブの動作としては良いかもしれませんが、***エディタのタブの動作としては良い仕様とは思えません***。
・Firefoxのタブの実装を見てもわかるように、ローテーションしない動作も実装可能に思えます。
・Wndows APIは詳しくないですが、タブ機能を提供する「タブスクロールが起きないWindowsコントロール」がないでしょうか。。。newtonメンバー※ 自己レスです。
※ 機能追加要望がなくなったわけではありません。タブのスタイルが「タブ」の時のタブのフォーカスの動き方は設定で変更できるようにしていただきたいと思っています。◆タブ列のローテーション現象が出なくするための設定 【当面の回避策】
(私と同じ悩みを抱えている人への設定)・ツール – カスタマイズ:[ウィンドウ]-[次の文書コマンドで最後に表示した文書に切り替える]: OFF
・ツール – カスタマイズ:[タブ]-[スタイル]: ボタン (*1)
・ツール – カスタマイズ:[タブ]-[閉じた時]: 左のタブをアクティブにする
・ツール – カスタマイズ:[タブ]-[幅]: 指定幅に固定する
・ツール – カスタマイズ:[タブ]-[入りきらない時]: 列を増やす
・ツール – カスタマイズ:[タブ]-[指定幅]: 160 ← 例※ 最初の2つの設定により、文書移動での違和感 (←個人的な見解です。すみません) がなくなります。
(*1): 表示スタイルをボタンにすることにより、元の記事にあるような「タブ列のローテーション現象」が起きなくなります。
だたし、ボタン化された「タブ」列の左側に「ウィンドウ」という文字列が表示されて少し格好悪くなります。newtonメンバーnewtonです。
早速の回答、ありがとうございます。楽しみにしております。
実は、私は WZ→秀丸→EmEditor とエディタを変えてきました。
WZの箱型選択して貼り付けする際のカーソルの動作が「%」の位置なのです。秀丸では、箱型選択したデータの貼り付け後のカーソルの位置が移動しません (V6まで。V7では使っていないので不明)。秀丸のこの仕様はかなり使いにくく、過去のフォーラムであるユーザがかなり食い下がってお願いしているのですが、はねつけられていました。
(私はこのユーザの言い分の方が正しいと思っています。)
下記URL参照。▽秀丸エディタ関連ソフト会議室 – スレッド17429, 04/06/2
http://maruo.dyndns.org:81/hidesoft/hidesoft_2/x17429.html仕方がないので、上記スレッドに書かれていたマクロを元に自作したものを使っておりました。
EmEditorは使い始めてから1週間ほどなのですが、とても気に入っています。使い始めて数時間で秀丸からの移行を決め、購入手続きをしました。
- 作成者投稿