任意に選択した場所の書き換えNo.05953
Carbonaro さん 08/10/31 15:45
 
<tr>
  <td></td>
  <td></td>
  ・・・
 <td></td></tr>
<tr>
  ・・・

<tr><td></td><td></td>・・・<td></td></tr>
<tr><td></td><td></td>・・・<td></td></tr>
・・・

と整形するマクロは簡単にできたのですが、欲が出て<td>〜</td>間のデータも箱型
にコピーできるように列毎に揃えたいのです。

ところが書き換えがうまくできません。

以前ここで教えてもらった方法を踏襲して、gettext と insert でやろうとしている
のですができないのです。

問題を解決するために英数文字をばら撒いた単純なテキストファイルで

escape;
$$str = gettext(10, 9, 14, 9, true);
message $$str;
insert "efgh";

を実行するも、$$str に 目的の場所の abcd という文字を捉えている状態でも、ins
ert されるのはマクロスタート時にカーソルがあった場所です。

何か単純な間違いでド壷に嵌っていると思われますが、どこが間違っているか教えて
頂けると幸いです。

[ ]
RE:05953 任意に選択した場所の書き換えNo.05954
IKKI さん 08/10/31 21:29
 
こんにちは。ユーザの IKKI です。

> $$str = gettext(10, 9, 14, 9, true);
> message $$str;
> insert "efgh";
>
> を実行するも、$$str に 目的の場所の abcd という文字を捉えている状態でも、ins
> ert されるのはマクロスタート時にカーソルがあった場所です。

gettext はカーソルを移動しません。
insert で文字列を書き換えるには、別途明示的に範囲選択する必要があります。

$$str = gettext(10, 9, 14, 9, true);
message $$str;
moveto 10, 9;
beginsel;
moveto 14, 9;
endsel; // なくても同じ
insert "efgh";

[ ]
RE:05954 任意に選択した場所の書き換えNo.05955
Carbonaro さん 08/10/31 22:10
 
>insert で文字列を書き換えるには、別途明示的に範囲選択する必要があります。
>
>$$str = gettext(10, 9, 14, 9, true);
>message $$str;
>moveto 10, 9;
>beginsel;
>moveto 14, 9;
>endsel; // なくても同じ
>insert "efgh";

ありがとうございました、動作確認いたしました。

でも、以前(05870)で質問して回答を頂いたものも書き換えるものだったのですが、
ここでは moveto は出てきませんでした、この差は何なのか悩むのですが、お教えい
ただけると幸いです。


[ ]
RE:05955 任意に選択した場所の書き換えNo.05956
h-tom さん 08/11/01 11:30
 

h-tom です。

>でも、以前(05870)で質問して回答を頂いたものも書き換えるものだったのですが、
>ここでは moveto は出てきませんでした、この差は何なのか悩むのですが、お教えい
>ただけると幸いです。
以前のものは、setcompatiblemodeを使い設定変更することで、searchdown 実行時に、
マッチした箇所が範囲選択されているから。

今回のマクロは、先頭の escape で範囲選択を解除しているので、gettext の第五引数
も意味がないし、insert でも上書きされない。

[ ]
RE:05956 任意に選択した場所の書き換えNo.05957
Carbonaro さん 08/11/01 12:06
 
h-tom さん、コメントありがとうございました。

コメントをいただかないとヘルプを読んでもさっぱりでした。

お陰さまで所期のマクロは微調整の段階まで漕ぎつけました。

それから、最初にコメントしてくださった IKKI さんは前回も教えてくださった方だ
ったんですね、改めて御礼申し上げます。

[ ]