[2263] RE: ppaマクロで単語選択して検索したい 
2002/9/2 (月) 12:43:40 すい
INCM1.23a
>ppaを利用したマクロで、
>S_SelectWord を使って、単語選択してその単語を検索、
>ってなことをやりたいのですが、うまくいきません。
>
>僕がマクロ関数とppaとのやり取りをよくわかってないからだと
>思うのですが、どなたか ppa の変数に エディタにある文字を
>代入する方法を教えてください。


いえ、残念ながら、今現在、サクラエディタ側の関数(?)で何らかの値を返すのは
S_GetFilename();        // ファイル名を返す(編集中のファイルのフルパス名)
だけで、他の機能は一切、数値も文字列も何も返さないので、、、

残念ながら出来ないかと。 (ノ;_;)


[2264] Re2: ppaマクロで単語選択して検索したい 
2002/9/2 (月) 13:18:40 どんくん
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
> いえ、残念ながら、今現在、サクラエディタ側の関数(?)で何らかの値を返すのは
> S_GetFilename();        // ファイル名を返す(編集中のファイルのフルパス名)
> だけで、他の機能は一切、数値も文字列も何も返さないので、、、
>
> 残念ながら出来ないかと。 (ノ;_;)


そうですか・・・。
旧来の関数(S_ で始まる関数) だけで実現
できればいいんですね。

S_SelectWord(0);        // 現在位置の単語選択
S_SearchNext(xxxx, 18);        // 次を検索
のxxxx の部分に単語を入れるには、旧来のやり方
だとどうすればいいんでしょう?

もう一つ、質問です。
旧来のマクロ関数のヘルプあればそれをみたいんですが、
どこかのArchiveにあるんでしょうか?



[2266] Re3: ppaマクロで単語選択して検索したい 
2002/9/2 (月) 20:24:01 すい
INCM1.23a
>S_SelectWord(0);        // 現在位置の単語選択
>S_SearchNext(xxxx, 18);        // 次を検索
>のxxxx の部分に単語を入れるには、旧来のやり方
>だとどうすればいいんでしょう?


いぇ、現状、そういう処理はできないんです。
そういう処理をするなら、当然、どんくんさん が初めにおっしゃっているような
変数を使うやり方しかないでしょう。
↑でも、現状、それが出来ない。
 ↑よって、そのような処理は出来ません。

という事で。

>もう一つ、質問です。
>旧来のマクロ関数のヘルプあればそれをみたいんですが、
>どこかのArchiveにあるんでしょうか?


・PPA については PPA.DLL の配布パッケージ内のヘルプをみる。
・サクラエディタの S_xxxx についてはソースをみて解析...
というのも悲しい現状です。

ソース内の sakura_core/CSMacroMgr.cpp に関数名の一覧と、
そのプロトタイプ宣言みたいなのがされていますので、それを見るしかないです。

文字列型:VT_BSTR
整数数値型:VT_I4
無し:VT_EMPTY
で、

{F_FILESAVEAS, "FileSaveAs", {VT_BSTR, VT_I4, VT_I4, VT_EMPTY}, VT_EMPTY, NULL}, //名前を付けて保存

↑なら、
{
  F_FILESAVEAS,
  "FileSaveAs",  ← 関数名
  {
    VT_BSTR, VT_I4, VT_I4, VT_EMPTY  ← 引数の型
  },
  VT_EMPTY,  ← 返り値の型
  NULL
}, //名前を付けて保存

↑という事で↓こういう事、とか。

void    S_FileSaveAs( 文字列型 , 整数数値型 , 整数数値型 );

さらに引数の中身・意味については、トライアンドエラーで試しまくって確認するか
ソースの奥地まで探検しまわって確認しなければなりません。
現在、私は探検しながら PPA & MAC の強調キーワード,キーワードヘルプ作成中です...
# いつになるやら :-|


[2267] Re4: ppaマクロで単語選択して検索したい 
2002/9/3 (火) 11:11:14 どんくん
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
> いぇ、現状、そういう処理はできないんです。
> そういう処理をするなら、当然、どんくんさん が初めにおっしゃっているような
> 変数を使うやり方しかないでしょう。
> ↑でも、現状、それが出来ない。
>  ↑よって、そのような処理は出来ません。
>
> という事で。
>
> >もう一つ、質問です。
> >旧来のマクロ関数のヘルプあればそれをみたいんですが、
> >どこかのArchiveにあるんでしょうか?

>
> ・PPA については PPA.DLL の配布パッケージ内のヘルプをみる。
> ・サクラエディタの S_xxxx についてはソースをみて解析...
> というのも悲しい現状です。
>
> ソース内の sakura_core/CSMacroMgr.cpp に関数名の一覧と、
> そのプロトタイプ宣言みたいなのがされていますので、それを見るしかないです。
>

(中略)
> さらに引数の中身・意味については、トライアンドエラーで試しまくって確認するか
> ソースの奥地まで探検しまわって確認しなければなりません。
> 現在、私は探検しながら PPA & MAC の強調キーワード,キーワードヘルプ作成中です...
> # いつになるやら :-|


そうですかー。ご丁寧にご回答ありがとうございます。

マクロ機能は、まだ発展段階ということなんですね、たぶん。
メインには秀○を使用しているのですが、秀○にはない「アウトライン解析」や「豊富なバックアップ機能」の充実が大変気に入ったので、
さくらをメインにしようと考えているので、ここらへんの開発が待ち遠しいですね^^


[2268] Re3: ppaマクロで単語選択して検索したい 
2002/9/3 (火) 15:17:43 げんた
INCM1.23c
>S_SelectWord(0);        // 現在位置の単語選択
>S_SearchNext(xxxx, 18);        // 次を検索
>のxxxx の部分に単語を入れるには、旧来のやり方
>だとどうすればいいんでしょう?

文字列を取得することはできないのですが,S_SearchNextの第一引数が空文字列だった場合は前回の検索文字列を引き続き検索します.

で,これとは別に現在の選択範囲を検索文字列としてセットするコマンドがあります.
S_SearchClearMark(0);        // 検索マークの切替え
標準だと Ctrl + F3だったかな.

結局
S_SelectWord(0);        // 現在位置の単語選択
S_SearchClearMark(0);        // 検索マークの切替え
S_SearchNext('', 18);        // 次を検索
で希望の動作になる...と思ったのですが,実際にやってみると最後のSearchNextで検索位置は動くのですけれどキャレット位置が動きません(T_T).バグっぽいです.


[2269] Re4: ppaマクロで単語選択して検索したい 
2002/9/3 (火) 21:26:50 すい
INCM1.23a
>S_SelectWord(0);        // 現在位置の単語選択
>S_SearchClearMark(0);        // 検索マークの切替え
>S_SearchNext('', 18);        // 次を検索
>で希望の動作になる...と思ったのですが,実際にやってみると最後のSearchNextで検索位置は動くのですけれどキャレット位置が動きません(T_T).バグっぽいです.


私も↑これは考えてやってみたんですが、そもそも S_SearchClearMark() の方が駄目でしたよ。SearchNext じゃなく。
例えば、今、検索対象文字列が 'BBB' に設定されている時に、文字列 'AAA' の所でこのマクロを実行してみる。
と、結果、正常に 'AAA' を検索するようになる事も希にありますが、検索対象が 'BBB' のままになる事が多く。。。
つまり、検索対象文字が切り替わらない。結局、そっちの方が問題で使えなかったり。

ってよくよく考えてみれば、それもバグだぁ。 (^^ゞ
それが直れば使えそうですね。

INCM/CMT
Cyclamen v3.81