◀ANSI版開発トップへ
  • 769 マクロ登録機能
    • 773 Re:マクロ登録機能
      • 774 Re2:マクロ登録機能
  • [769] マクロ登録機能 じぇぷろ 2001年10月13日 15:23

    サクラエディタのマクロは大昔に使ってみようとしてうまく効かなかったのでそれ以降使ってませんが、今回登録可能になったので再チャレンジしてみましたがやっぱりうまくいきませんね。
    もともとマクロファイルのサンプルが同梱されていないし、ユーザ提供サンプルファイルが皆無なのも他のエディタユーザに比べ寂しい。色設定やキーワードファイルもバラバラだし。(>_<)
    私は便利なマクロは作るより利用させてほしい口です。(^_^;)うまく出来ないから。
    それはさておき、いくつかQです。
    Q1.[登録済みマクロ]のアクセラレータキーBはどういう意味ですか? Bが空いていたから、というだけなら浸透しないうちにregistered macroのうちはじめから見ていって使ってないアルファベットにしたほうがいいと思いますけど。
    Q2. 解除ボタンがなくなってますね。名前を消して「設定」を押せば解除ということになるようですが、この辺はヘルプにでも書いてないとわかりにくいでしょう。
    Q3. iniを見ると三桁でマクロ番号をとっていますが実際には20個です。2桁でも原理上は100個(!)登録できるのだから2桁で十分では?
    関連してファイル名とマクロ名の2つをiniに記録するのはちょっともったいない気もします。メモリもその分使うし。K2Editorではマクロファイルにマクロ名(マクロの説明)を先頭行に書き込めるようにしてますね。だからファイル名だけでよい。マクロ名はエディタが登録マクロの先頭行から取得して来る仕組み。
    ただこうすると動的にチェックしにいくので結局無駄になるのかしら。
    サクラエディタのマクロファイルの先頭行はマクロファイルかどうかのチェック機能としては意味がないので同じようにできると思いますが、登録済みマクロのメニューにもマクロ名を表示するので難しいかも。
    • [773] Re:マクロ登録機能 すとーにぃ 2001年10月15日 12:54

      ▼ じぇぷろさん
      > Q2. 解除ボタンがなくなってますね。名前を消して「設定」を押せば解除ということになるようですが、この辺はヘルプにでも書いてないとわかりにくいでしょう。
      ではヘルプもそのように修正します。

      一行挿入のマクロを作ろうとして、↓こういうのを定義したのですが、

      //insertline.mac
      GoLineTop(); /* 行頭に移動(折り返し単位) */
      Char(13); /* 文字入力 */
      Up(); /* カーソル上移動 */

      「行頭に移動」で、行の先頭にスペースやタブがあると、最初に文字がある部分に移動してしまい、
      うまくいきません。
      これはこれで編集時には便利な気もしますが....こういう仕様なのでしょうか?
      • [774] Re2:マクロ登録機能 げんた 2001年10月15日 17:48

        >「行頭に移動」で、行の先頭にスペースやタブがあると、最初に文字がある部分に移動してしまい、うまくいきません。
        現在のカーソル位置によって動作が変わるようなコマンドは確かにマクロでは使いにくいです.今後こういう事例をもとに少しずつコマンドのほうを変えていくしかないと思います.

        マクロもエディタ上のコマンド発行もHandleCommandという関数に機能番号と引数を渡すのですが,エディタから実行した場合には引数は常に0であるのに対して,マクロから実行する場合には1つ引数を渡すことができます.これをうまく利用すれば同じ名前で引数によって動作を変えることができます.

        たとえば GoLineTop() で GoLineTop(1)は絶対行頭,GoLineTop(2)はスペースを除いた行頭とか.

        こういう提案が次々と出そうであればマクロ開発掲示板を新設してもいいかと思っています.要望,実装,ヘルプと話が3つの掲示板にまたがるよりは専門のを1つ作る方がわかりやすい感じがします.