【要望・質問】 マクロのプロパティについて
-
@ Kuro さん
折り返し、色の反転、縦書き、全画面表示、zen モードなどの ON/OFF 状態や、エディタ領域の高さ(PageUp/Down でスクロールする行数)などを取得 ――あわよくば切り替えも―― できるようなプロパティがほしいです。
表示系のベータ機能も定着した感がありますので、そろそろいかがでしょうか?また、エディタペインにフォーカスをあてたり、フォーカスの有無を取得したりするために
Document.Focused : boolean
のようなプロパティがあると、
https://www.haijin-boys.com/discussions/4846
のようなマクロの動作も確実になりそうですよね。ご検討いただきますよう、よろしくお願いします。
(同種の要望も過去にありましたがあちこちに散乱しているので、新規トピックを立てさせていただきました)p.s.
あと、[ウインドウ] カテゴリのコマンド「アクティブなペイン」の機能・効果が分からないのですが…。
// ExecuteCommandByID マクロで
editor.ExecuteCommandByID( MEID_WINDOW_ACTIVE_PANE = 2189 );| sukemaru | 返信 -
マクロから設定を取得・変更する仕組みは開発は完了していますが、マクロから勝手に設定を変更されたくないというご意見がありまして現状では没となっています。
Mery はデジタル署名のついていない野良アプリですから、マクロからそのような操作をされることについて不安を覚えるユーザさんもいらっしゃるようです。
> Document.Focused : boolean
> のようなプロパティがあると、
> https://www.haijin-boys.com/discussions/4846
> のようなマクロの動作も確実になりそうですよね。アウトプットバーやアウトラインなどにフォーカスがある場合は一部のショートカットキーの入力しか受け付けない仕様になっていますので、そもそもマクロが発動しませんからあまり意味ないような気が ^^;
> あと、[ウインドウ] カテゴリのコマンド「アクティブなペイン」の機能・効果が分からないのですが…。
これはエディタ部分にフォーカスを移動させる機能です。
F6 キーは「次のペイン」なので、アウトラインやアウトプットバーなど複数のペインが表示されていると、順番にそのペインにフォーカスを移動します。
「アクティブなペイン」はどのペインにフォーカスがあってもエディタ部にフォーカスを戻します。
| Kuro | 返信 -
ご返信ありがとうございます。
> マクロから設定を取得・変更する仕組みは開発は完了していますが、マクロから勝手に設定を変更されたくないというご意見がありまして現状では没となっています。
INI 操作用のメソッドの件ですよね。
https://www.haijin-boys.com/discussions/4081#discussion-4105個別のプロパティとして明示的に記述するかたちならとおもったのですが、個別化は「まだベータ版ということでオプション項目が変動しがちなので」諸々のメンテが大変ということでしたね。 :(
縦書きや zen モードなど、窓の杜などでも紹介されて後に引けないはず(笑)ですから、ベータ機能と云うのも今さら感があるような気もしますが。 XD> そもそもマクロが発動しませんからあまり意味ないような気が ^^;
個人的に、意図的にアウトプットバーやアウトラインなどにフォーカスをあてて何かをするときはマウスでアクセスするのが常ですし、Document オブジェクトではなく Editor.ActiveDocument でコードを書いたマクロをツールバーアイコン化すればアイコンからは発動できるので、マウス派でアイコン中毒の私にとってはけっこう意味があります。 :)// i.e. Editor.ActiveDocument でコーディングしてアイコン化したマクロだと、エディタ部にフォーカスがなくてもツールバーアイコンからは発動可能 var docuFocused = ( Document == Editor.ActiveDocument ) ? true : false; Editor.ActiveDocument.Writeln( "\n" + docuFocused ); Editor.ExecuteCommandByID( MEID_WINDOW_ACTIVE_PANE = 2189 );
そういえばコレってマクロリファレンスや ks さんの「マクロ覚え書き(開発者向け)#window.Document と Editor.ActiveDocument の違い」には書いてありませんでしたね。
別トピックのほうでアウトプットバーへのフォーカシング強制をなしに仕様変更するとありましたので、一応、状況によっては楽になりそうです。
>> あと、[ウインドウ] カテゴリのコマンド「アクティブなペイン」の機能・効果が分からないのですが…。
> これはエディタ部分にフォーカスを移動させる機能です。
ありがとうございます。 やはりそうでしたか。
ポップアップメニューやショートカットキーのカスタマイズにしかないコマンドですが、どちらも「アウトプットバーやアウトラインなどにフォーカスがある場合」には利用できませんから、このコマンドの使い方は ExecuteCommandByID( 2189 ) 限定になってしまっているのでは…?>> Document.Focused : boolean
がボツでしたら、標準メソッドの Activate() に引数を追加して「アクティブなペイン」の機能を持たせるというのはいかがでしょうか?Editor.ActiveDocument.Activate( true ); // または meTabFocusing = 0x01 とか
で「アクティブ化したタブ内にフォーカスも入れられますよ」というかたちなら分かりやすそうです。
| sukemaru | 返信 -
ご返信ありがとうございます。
> INI 操作用のメソッドの件ですよね。
そうですね。これが使えるようになれば、オプション項目のほぼすべてをマクロから操作できるようになるので非常に便利だとは思うのですが…。
> 個別化は「まだベータ版ということでオプション項目が変動しがちなので」諸々のメンテが大変ということでしたね。 :(
はい。オプション画面の表示方法がタブ方式からツリー方式 (まだツリー構造は使っていませんが) になったので、各項目のカテゴリを整理したいなーと思っています。
[基本] 画面とか、とっ散らかってますからね。カテゴリを増やしてこれらの項目を分散させたいなと。
その過程で消滅するオプションや増えるオプションもあると思いますから、マクロからは INI 経由方式をご提案させていただいた次第です。
> 縦書きや zen モードなど、窓の杜などでも紹介されて後に引けないはず(笑)ですから、ベータ機能と云うのも今さら感があるような気もしますが。 XD
現在でも正式版のほうがダウンロード数が多くて、ベータ版を使ってくれているのは一部の方だけですからね… ^^;
> ポップアップメニューやショートカットキーのカスタマイズにしかないコマンドですが、どちらも「アウトプットバーやアウトラインなどにフォーカスがある場合」には利用できませんから、このコマンドの使い方は ExecuteCommandByID( 2189 ) 限定になってしまっているのでは…?
さすがにそれだと意味がありませんからね。この機能はアウトプットバーやアウトラインにフォーカスがある場合にもショートカットから使用できるようになっています。
> >> Document.Focused : boolean
> がボツでしたら、標準メソッドの Activate() に引数を追加して「アクティブなペイン」の機能を持たせるというのはいかがでしょうか?これはどういった目的なのかわからないのですが…。具体的にどのような操作をマクロで実現したいのかを教えていただると助かります ^^;
| Kuro | 返信 -
ご返信、ありがとうございます。
> これが使えるようになれば、オプション項目のほぼすべてをマクロから操作できるようになるので非常に便利だとは思うのですが…。
INI から設定値を「取得」する仕組みだけは GetIniOption2() 関数によりすでに確立できていますから、個人的には、バックグラウンドで「INI に最新の状態を反映する」仕組みだけでも解禁していただければと願っています 。 :)> [基本] 画面とか、とっ散らかってますからね。カテゴリを増やしてこれらの項目を分散させたいなと。
「オプション」設定ダイアログ自体、頻繁にいじる部分ではないとおもいますが、[基本] パネルはまさに「最初のパネル」にあってしかるべき項目が集まっていて、あまり分散化していただきたくないような…。 :)
私の場合、初期設定が済んでしまえば [基本] と [自動保存] のパネルしか触らないので(それとてマクロの動作確認などで弄る程度ですが)、[基本] パネルのごった煮状態が好きだったりします。
「行の表示方法」がメインメニューの [表示(&Y)] 配下に追加されてショートカットキーで切り替えできるようになるとありがたいですが、マニアックなマクロを作る人でなければ表示切り替えなんてめったにしなさそうですよね。 :(> 現在でも正式版のほうがダウンロード数が多くて
最新ベータ版を使っていないとは、なんともったいない…。> さすがにそれだと意味がありませんからね。この機能はアウトプットバーやアウトラインにフォーカスがある場合にもショートカットから使用できるようになっています。
おお。 デフォルトで割りあてられている特定のショートカットキーしか使用できないとおもっていましたが、機能の内容で 使用できる/できない が振り分けられていたんですね。 :o
エディタにフォーカスがないときでも使用できる機能の制限は少ないほうがありたいですが…。> これはどういった目的なのかわからないのですが…。具体的にどのような操作をマクロで実現したいのか
Editor.ActiveDocument... のコードならアイコンから起動できることはあまり知られていないようにおもわれますし、 ExecuteCommandByID() も半ば非公開のメソッドなので、フォーラムやブログのコメント欄を読みあさった人でないと使えませんよね。
ですが、 OutputBar.Visible=true; のあとでもエディタ部分にフォーカスが残るようになるとのことなので、あまり問題ない気もしてきました。
ツールバーアイコンでマクロを起動する人は少ないであろうということを考えると、先立ってお願いするべきポイントとして「エディタにフォーカスが入っていないときでもショートカットキーでマクロを起動できるようにしていただきたい」というのがあって、それが実現した上でないと Document.Activate( true ) 案は意味がありませんでした。私自身においては、エディタにフォーカスが入っていないときという状況に関して、アウトプットバーにフォーカスがある場合だけでなく、検索ダイアログを表示しての「前/次を検索」ボタンから得られた選択範囲を対象とする場合でも、文字列操作系のマクロをワンクリック起動しています(アイコン派なので)。
※「検索/置換」ダイアログがアクティブなときは F6 キー(次のペイン)や「アクティブなペイン」へのショートカットキーは使えないようです。| sukemaru | 返信 -
ご返信ありがとうございます。
> 個人的には、バックグラウンドで「INI に最新の状態を反映する」仕組みだけでも解禁していただければと願っています 。 :)
確かに、INI を最新の状態にするだけならセキュリティ面では問題ないかも?
INI を最新の状態にするマクロメソッドもすでに開発済みでコメントアウトしてるだけなのでいつでも解放できる状態にはありますが… ^^;
> 「オプション」設定ダイアログ自体、頻繁にいじる部分ではないとおもいますが、[基本] パネルはまさに「最初のパネル」にあってしかるべき項目が集まっていて、あまり分散化していただきたくないような…。 :)
現状のオプション画面だとそうなのですが、今後、隠しオプションを表に出すことになると、例えばファイル関連であれば「ファイル」カテゴリを作成しないと配置する場所がありませんからね。
そうなると、現在「基本」カテゴリにある「既定のエンコード」などのファイル関連項目をファイルカテゴリに移動させたりなどが発生します。
実際、ベータ版の段階で「スクロール」カテゴリを増やしましたし、基本カテゴリからスクロールカテゴリに移動になった項目もあります。
もう少しオプション項目の整理は必要だと考えています。
> 「行の表示方法」がメインメニューの [表示(&Y)] 配下に追加されてショートカットキーで切り替えできるようになるとありがたいですが、マニアックなマクロを作る人でなければ表示切り替えなんてめったにしなさそうですよね。 :(
テキストエディタの機能を補うためにマクロ機能があるのに、マクロを編集するためにテキストエディタの機能を増やしていくというのは本末転倒ですね ^^;
> ツールバーアイコンでマクロを起動する人は少ないであろうということを考えると、先立ってお願いするべきポイントとして「エディタにフォーカスが入っていないときでもショートカットキーでマクロを起動できるようにしていただきたい」というのがあって、それが実現した上でないと Document.Activate( true ) 案は意味がありませんでした。
ですね。私もその点が気になったので確認させていただきました。
仕様上、フォーカスがあるエディタを document オブジェクトとして扱うようになっています。現状の仕様ではエディタにフォーカスがない場合のマクロの動作は想定していません。
> ※「検索/置換」ダイアログがアクティブなときは F6 キー(次のペイン)や「アクティブなペイン」へのショートカットキーは使えないようです。
他のダイアログにフォーカスがあるときはショートカットキーを受け付けないように制限をかけています。
そうしないと、例えば検索ダイアログの [検索する文字列] のボックスにコピペしたいときでも CTRL + V を押すとエディタ側が反応しちゃいますから。ALT + キーによるアクセラレータキーも同様、エディタ側のショートカットキーが発動してしまうと使用できなくなってしまいますからね。
| Kuro | 返信