◀Unicode版開発トップへ
  • 1127 plugin機能について
    • 1128 Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
      • 1129 Re:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
        • 1130 Re2:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
          • 1133 Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
            • 1136 Re4:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
              • 1137 Re5:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
        • 1131 Re2:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
          • 1134 Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
          • 1135 Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
  • [1127] plugin機能について Uchi 2010年03月19日 06:59

    syatさんのプラグイン機能をMocaさんのsolXmlで使用させていただきました。

    そこで気づいた点と要望をいくつか上げさせてもらいます。

    不具合から
    1. ツールバーの設定でプラグインのコマンドと「折返」が衝突を起こしています。

    以下は要望です(個人的優先度順)。
    2. sakuraW.iniの設定で szOutlineRuleFilename の設定を相対パスで指定してほしい。
    (sakuraw.exeをUSBメモリに入れて、複数マシンで使用しているので絶対パスで指定されるとちょっとつらいものがあります)
    .iniファイルの直接書き換えで相対パスにすれば動作することは確認しています。
    3. 「新規プラグインの追加」、「削除」を実行した後、再起動せずに有効となるようにしてほしい。
    4. プラグインの「オプションファイル」の設定を行うダイアログがほしい。
    RubyIndent.ini の SpaceIndent の設定などです。
    5. プラグインの中のファイルをZIP等で固めて、そのZIPファイルごとプラグインとして使用できるようにしてほしい。
    (XP以降限定になるかな?)

    (sakuraW_pluginU7.2.zip、sakuraw_plugin_solXml0.1.zip、RubyOutline0.1.zip、RubyIndent0.1.zipで確認しています)
    • [1128] Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 syat 2010年03月21日 09:10

      ▼ Uchiさん
      > 1. ツールバーの設定でプラグインのコマンドと「折返」が衝突を起こしています。
      ご指摘ありがとうございます。リビジョン1721で修正しました。

      > 2. sakuraW.iniの設定で szOutlineRuleFilename の設定を相対パスで指定してほしい。
      > (sakuraw.exeをUSBメモリに入れて、複数マシンで使用しているので絶対パスで指定されるとちょっとつらいものがあります)
      > .iniファイルの直接書き換えで相対パスにすれば動作することは確認しています。
      テキストボックスの内容を手で書き換えてください。というところですが
      改造するとすればダイアログで指定したファイルがiniと同じフォルダかそれ以下の階層にあれば相対パスで指定する、のようになるでしょうか。
      マクロフォルダの指定も同じく。

      > 3. 「新規プラグインの追加」、「削除」を実行した後、再起動せずに有効となるようにしてほしい。
      どうするか迷っています。今のレベルのプラグインであれば即時有効でも良いのですが、プロセスとプラグインの寿命が合っていた方がシンプルで良いのではないかと思って今の動きにしています。Firefoxのアドオン追加でも再起動を要求しますし、わりと一般的な動きかな、と。
      削除の方は、あるプロセスで即時削除しても別のプロセスで実行中かもしれないので完全な削除はできません。全プロセスに通知してアンロードさせるのも面倒くさい。。。

      > 4. プラグインの「オプションファイル」の設定を行うダイアログがほしい。
      ほしいです。共通設定・タイプ別設定を拡張する形になるのか、プラグインごとの設定という形になるのかはわかりませんが、Firefoxでいうabout:configのような感じになるのでは?(Firefoxばかりですみません)

      > 5. プラグインの中のファイルをZIP等で固めて、そのZIPファイルごとプラグインとして使用できるようにしてほしい。
      > (XP以降限定になるかな?)
      ファイル選択ダイアログでzipを指定すると、pluginsに解凍してインストールするところまでやってくれると便利ですね。
      第一段階としてzip置いておくと勝手に解凍する機能がほしいです。zipfldr.dllを使うのでしょうか。よく知りません。
      • [1129] Re:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 Uchi 2010年03月21日 20:59

        syatさん,
        ご返事ありがとうございます。

        ▼ syatさん
        > ▼ Uchiさん
        > > 1. ツールバーの設定でプラグインのコマンドと「折返」が衝突を起こしています。
        > ご指摘ありがとうございます。リビジョン1721で修正しました。
        CMenuDrawer.cpp
        ..\sakura_core\CMenuDrawer.cpp(538) : error C2065: 'F_TOOLBARWRAP' : 定義されていない識別子です。
        のエラーが出て、コンパイルできませんでした。
        >
        > > 2. sakuraW.iniの設定で szOutlineRuleFilename の設定を相対パスで指定してほしい。
        > > (sakuraw.exeをUSBメモリに入れて、複数マシンで使用しているので絶対パスで指定されるとちょっとつらいものがあります)
        > > .iniファイルの直接書き換えで相対パスにすれば動作することは確認しています。
        > テキストボックスの内容を手で書き換えてください。というところですが
        > 改造するとすればダイアログで指定したファイルがiniと同じフォルダかそれ以下の階層にあれば相対パスで指定する、のようになるでしょうか。
        > マクロフォルダの指定も同じく。
        すみませんでした。私の勘違いです。忘れてください。
        >
        > > 3. 「新規プラグインの追加」、「削除」を実行した後、再起動せずに有効となるようにしてほしい。
        > どうするか迷っています。今のレベルのプラグインであれば即時有効でも良いのですが、プロセスとプラグインの寿命が合っていた方がシンプルで良いのではないかと思って今の動きにしています。Firefoxのアドオン追加でも再起動を要求しますし、わりと一般的な動きかな、と。
        > 削除の方は、あるプロセスで即時削除しても別のプロセスで実行中かもしれないので完全な削除はできません。全プロセスに通知してアンロードさせるのも面倒くさい。。。
        この要望を出した理由は、
        「追加」の後に、「タイプ別設定」で「アウトライン解析方法」「インデント」を設定するわけですが、そこまで一連で作業が行いたい。
        ということです。
        Firefoxでもアドオン追加 直後でも設定は出来るので、出来ればなと思います。
        >
        > > 4. プラグインの「オプションファイル」の設定を行うダイアログがほしい。
        > ほしいです。共通設定・タイプ別設定を拡張する形になるのか、プラグインごとの設定という形になるのかはわかりませんが、Firefoxでいうabout:configのような感じになるのでは?(Firefoxばかりですみません)
        たとえば、「共通設定」の「プラグイン」タグの「削除」の隣当たりに「プラグイン設定」のボタンがあり、それを押すと、設定ダイアログが表示され、たとえばRubyIndent.ini の内容を設定する、という様なイメージです。
        何を設定するかは、plugin.defに設定することになるでしょうね。
        >
        > > 5. プラグインの中のファイルをZIP等で固めて、そのZIPファイルごとプラグインとして使用できるようにしてほしい。
        > > (XP以降限定になるかな?)
        > ファイル選択ダイアログでzipを指定すると、pluginsに解凍してインストールするところまでやってくれると便利ですね。
        > 第一段階としてzip置いておくと勝手に解凍する機能がほしいです。zipfldr.dllを使うのでしょうか。よく知りません。
        わたしは、解凍せずにそのままの形でプラグインとして機能することを考えていました。
        インストールでも良いのですけれども。
        • [1130] Re2:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 もか 2010年03月21日 23:40

          >> > 5. プラグインの中のファイルをZIP等で固めて、そのZIPファイルごとプラグインとして使用できるようにしてほしい。
          >わたしは、解凍せずにそのままの形でプラグインとして機能することを考えていました。
          >インストールでも良いのですけれども。
          unzip32.dllというファイル名は鬼門で、最近は減りましたが海外のソフトが 統合アーカイバ仕様でない
          unzip32.dllをWindowsフォルダに放置したりするため、エラーの原因になります。
          CAB形式なら Windows の SetupIterateCabinet() とかもあります。
          圧縮したままというのは、1ファイル、1プロセスのサクラでやるのはおかしいです。
          シングルプロセス版にするなら別ですが。

          Firefoxの拡張はたぶんだけど、JavaScriptがGCで動いているのもあって開放するタイミングが分からないのと、
          元もとのchrome.js等のJavaScriptのコードを拡張が書き換えて(!)動かしていたりするので、途中で削除すると大変なことになるからだとおもいます。
          xpiはzip圧縮形式だけど、実は圧縮しないでまとめてあるだけのほうが多い気がします。

          narとかwarとかjarは良く知りません。
          • [1133] Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 Uchi 2010年03月22日 01:12

            ▼ もかさん
            > 圧縮したままというのは、1ファイル、1プロセスのサクラでやるのはおかしいです。
            > シングルプロセス版にするなら別ですが。
            「解凍せずにそのままの形でプラグイン」ということにこだわっているわけではありませんが、
            上記の判断の理由がわからないので、後学のために、教えていただけたらと思います。
            よろしくお願いします。
            • [1136] Re4:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 もか 2010年03月22日 02:57

              >タイトル: Re4:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突
              >発言者: Uchi
              >▼ もかさん
              >> 圧縮したままというのは、1ファイル、1プロセスのサクラでやるのはおかしいです。
              >> シングルプロセス版にするなら別ですが。
              >「解凍せずにそのままの形でプラグイン」ということにこだわっているわけではありませんが、
              >上記の判断の理由がわからないので、後学のために、教えていただけたらと思います。
              >よろしくお願いします。
              プロセスごとにプラグイン設定の実体を持っているので、
              ウィンドウを開くたびに設定している全プラグインをメモリー上で解凍する処理が必要になります。
              plugin.defだけ解凍すればいいのかもしれないけど、19個全部読み込んだら重そうです。
              そのうち50個にしてほしいとか言われて、もっと重くなることが容易に想像できます。
              と思ってたのですが、やってみないとわからないですね。
              新規作成したいだけなのに、非常にのっそり起動するサクラを想像して感情的になってました。すみません。
              共通設定(sakura.ini)のほうを工夫すれば、関係ないときは解凍しないようにできそうですが、プラグインがバージョンアップしたときなどに矛盾しそうで怖いです。
              #今もsakura.iniとplugin.defでplugin.defを書き換えるとID(番号でないほう)が矛盾するきがする

              ちなみに私も本当はデメリットがなければ 3. 4. 5. 全部ほしいです。
              サクラに設定ファイルzip(のようなもの)を適用(ドロップかインポートみたいなアクションか何か)させたら、タイプ別設定・強調キーワード・マクロ設定・プラグイン設定・などなどがユーザの許可が下りれば自動でできるのが理想です。

              心配なのはzipfldr.dllを使った場合、
              IE6に依存したクリップボードマクロに似た互換性問題のようなものを感じます。
              zipの中身をエクスプローラで検索されると重いので、zipfldr.dllのCOM登録を解除することがよくあるのですが、それでも解凍できるのでしょうか?
              もうひとつは Windows XP Gold/SP2/SP3/Vista/7 次のOSとx86でない場合でも同じ方法で使えるのかどうかです。
              だたの想像ですけど、次のOSからエクスプローラは64bitだけになって32bit版zipfldr.dllが添付されなくなって、32bitサクラエディタはプラグインが読めない発生する可能性がありそう。

              そういえば、Tomcatはwarを置くと自動で検出して、workディレクトリ以下に展開して使ってくれると思います。
              • [1137] Re5:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 Uchi 2010年03月22日 06:58

                ▼ もかさん
                > プロセスごとにプラグイン設定の実体を持っているので、
                > ウィンドウを開くたびに設定している全プラグインをメモリー上で解凍する処理が必要になります。
                > plugin.defだけ解凍すればいいのかもしれないけど、19個全部読み込んだら重そうです。
                私もそう思いました。
                が、しかし、現在の実装でも、解凍が無いだけで各プロセスの起動時に読み込むことは変わりが無いわけです。
                実装のほうで、プラグインの共有メモリ化を図った方が建設的ではないかと思います。
                > サクラに設定ファイルzip(のようなもの)を適用(ドロップかインポートみたいなアクションか何か)させたら、タイプ別設定・強調キーワード・マクロ設定・プラグイン設定・などなどがユーザの許可が下りれば自動でできるのが理想です。
                私もほしいです。
                私は、まずは、タイプ別設定の丸ごとインポート、エクスポートを作成しようとしたら、引っ付いてくるデータが多すぎてあきらめたことがあります。
                今回のプラグインでまた引っ付くデータ2個増えたという感じですね。
                > だたの想像ですけど、次のOSからエクスプローラは64bitだけになって32bit版zipfldr.dllが添付されなくなって、32bitサクラエディタはプラグインが読めない発生する可能性がありそう。
                Windowsの次期バージョンは64bitのみの提供になることは、既定の路線のようですね。
                その時点でsakuraの64bit版が32bit版と同じくらいに走っていればいいですね。
        • [1131] Re2:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 syat 2010年03月22日 00:45

          ▼ Uchiさん
          > CMenuDrawer.cpp
          > ..\sakura_core\CMenuDrawer.cpp(538) : error C2065: 'F_TOOLBARWRAP' : 定義されていない識別子です。
          > のエラーが出て、コンパイルできませんでした。
          すみません。ヘッダ自動生成されるのを忘れてました。なぜかビルド通ったので気付かなかった;
          リビジョン1722で修正しています。

          > > > 3. 「新規プラグインの追加」、「削除」を実行した後、再起動せずに有効となるようにしてほしい。
          > この要望を出した理由は、
          > 「追加」の後に、「タイプ別設定」で「アウトライン解析方法」「インデント」を設定するわけですが、そこまで一連で作業が行いたい。
          > ということです。
          なるほど。

          > > > 4. プラグインの「オプションファイル」の設定を行うダイアログがほしい。
          > たとえば、「共通設定」の「プラグイン」タグの「削除」の隣当たりに「プラグイン設定」のボタンがあり、それを押すと、設定ダイアログが表示され、たとえばRubyIndent.ini の内容を設定する、という様なイメージです。
          ボタンを押すと別サクラでRubyIndent.iniを開くという悪魔案を思いつきましたが、いらないですよね。。

          > > > 5. プラグインの中のファイルをZIP等で固めて、そのZIPファイルごとプラグインとして使用できるようにしてほしい。
          > わたしは、解凍せずにそのままの形でプラグインとして機能することを考えていました。
          > インストールでも良いのですけれども。
          OSの機能でZIP内のファイルを直接読み込めるのだったらそれがいいと思います。
          毎回テンポラリに解凍するくらいなら、プラグイン追加時に解凍してしまった方が性能的に良いかなと思ったので。
          • [1134] Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 Uchi 2010年03月22日 01:24

            4. 5. の要望を出した理由は、
            プラグインの作者と使用者が異なり、かつ使用者が初心者クラスであることを想定しています
            (もちろん、初心者でなくても十分役に立ちますが)。
            ネットから拾ってきて、そのまま設定すればOKねに近いほうが使用してもらえるのではと思いました。
            作成のほうは大変のなので、プラグインが固まってからでも考慮していただけたら嬉しく思います。
          • [1135] Re3:Commit報告(Fix): ツールバーの設定でプラグインのコマンドと「折返」が衝突 Uchi 2010年03月22日 01:56

            ▼ syatさん
            > ▼ Uchiさん
            > > CMenuDrawer.cpp
            > > ..\sakura_core\CMenuDrawer.cpp(538) : error C2065: 'F_TOOLBARWRAP' : 定義されていない識別子です。
            > > のエラーが出て、コンパイルできませんでした。
            > すみません。ヘッダ自動生成されるのを忘れてました。なぜかビルド通ったので気付かなかった;
            > リビジョン1722で修正しています。

            コンパイル、動作確認いたしました。

            不具合というほどのものではないのですが、プラグインコマンドのデフォルトアイコンの右上と左上に小さな点が付いています。
            何かの折に綺麗にしていただけたらと思います。