カーソル移動No.00284
JINA さん 98/10/27 23:49
 
HTMLの作成で、テンプレートを読み込むために以下のような
マクロを書いてみました。

newfile;
openfile "D:\\docs\\template.html";
selectall;
copy;
prevhidemaru;
paste;
nexthidemaru;
exit;
prevhidemaru;
gofiletop;

しかし実行してみると、なぜか最後のgofiletopが動作せず、
カーソルが一番下(paste実行直後のまま)になってしまうの
ですが、なぜでしょう?

あと、カーソルを特定のキーワード、例えば<TITLE>タグ等の
直後に移動させる方法はありますか?
movetoで座標に移動させるしかないのでしょうか。

[ ]
RE:00284 カーソル移動No.00285
杉浦 まさき さん 98/10/28 01:16
 
JINA さん、はじめまして。
 杉浦 まさき と申します。

>しかし実行してみると、なぜか最後のgofiletopが動作せず、
>カーソルが一番下(paste実行直後のまま)になってしまうの
>ですが、なぜでしょう?

途中で exit 命令を使っているために、
 マクロの実行がそこで終了しているからです。

以下のように setactivehidemaru, closehidemaruforced 命令を
 使ってみて下さい。
 #その他の部分もいじってますが、
  それは単なる趣味の世界なので気にしないで下さい(^^;。

//--------------- ここから --------------//
// 現在のウィンドウのウィンドウハンドルを取得
#hwnd_org = hidemaruhandle( 0 );

// テンプレートファイルをステルスモードで開く
openfile "/h D:\\docs\\template.html";
// テンプレートファイルのウィンドウのウィンドウハンドルを取得
#hwnd_templ = hidemaruhandle( 0 );
if( #hwnd_templ == 0 ){
    message "テンプレートファイルが見つかりません。";
    endmacro;
}
// テンプレートの取得
selectall;
copy;

// 元のウィンドウに戻る
setactivehidemaru #hwnd_org;
// テンプレートファイルを閉じる
closehidemaruforced #hwnd_templ;

// 新規ウィンドウを開いてテンプレートを貼り付ける
newfile;
paste;

gofiletop;
endmacro;
//--------------- ここまで --------------//

ちなみに、同じ事を

newfile;
insertfile "D:\\docs\\template.html";
gofiletop;
endmacro;

の4行お手軽マクロ(^^;で実現できると思います。


>あと、カーソルを特定のキーワード、例えば<TITLE>タグ等の
>直後に移動させる方法はありますか?
>movetoで座標に移動させるしかないのでしょうか。

検索でヒットした部分を範囲選択状態にするように
オプションを変更した上で、
searchdown/up して selendx, selendy に moveto させるのが
一番楽でしょうね。
やり方が分からない時はまたここで質問して下さい。


[ ]
RE:00285 カーソル移動No.00286
JINA さん 98/10/28 12:39
 
杉浦さんありがとうございます。
なるほど insertfile は、このように使う関数だったのですか。
アドバイスを元にして、以下のようなマクロが書けました。


// テンプレートの読み込み
insertfile "D:\\docs\\template.html";
gofiletop;

// タイトルの入力
searchdown "<TITLE>";
moveto selendx, selendy;
$page_title = input ( "タイトルを入力してください", );
insert $page_title;

// 本文開始位置までカーソルを移動
searchdown "<!-- ここから本文 -->";
moveto selendx, selendy;
down;
endmacro;


[ ]
RE:00286 カーソル移動No.00290
杉浦 まさき さん 98/10/29 00:25
 
JINA さん、こんばんは。
 杉浦 まさき です。

>なるほど insertfile は、このように使う関数だったのですか。

そう…みたいですね(^^;。
 #このサンプルで初めて使ったような気がする(^^;。>insertfile

>アドバイスを元にして、以下のようなマクロが書けました。

おめでとうございますV(^^)V
 で、一応言い出しっぺの義務(^^;として、
 秀丸の設定によらずに正常に動作するようにした物を
 書き込んでおきます。
 #最初と最後に設定変更と復元を付け足しただけです。

// テンプレートの読み込み
insertfile "D:\\docs\\template.html";
gofiletop;

// 現在の設定の保存と設定の変更
#org_findsel = getininum("hidemaru.ini","Env","FindSelect");
if( #org_findsel == 0 ) writeininum "hidemaru.ini", "Env", "FindSelect", 1;

// タイトルの入力
searchdown "<TITLE>";
moveto selendx, selendy;
$page_title = input ( "タイトルを入力してください", );
insert $page_title;

// 本文開始位置までカーソルを移動
searchdown "<!-- ここから本文 -->";
moveto selendx, selendy;
down;

// 設定の復元
if( #org_findsel == 0 ) writeininum "hidemaru.ini", "Env", "FindSelect", 0;

endmacro;


[ ]