フォーラムの返信を作成しました。
- 作成者投稿
Applek
Participantありがとうございます。その仕様は納得できました。ありがとうございます。
Applek
Participantありがとうございます。わかりました。画像で示したいと思います。
お気に入りで同じタイトルのテキストファイルが重複登録される問題は故意の仕様でしょうか?
それとも不具合でしょうか?同じファイルを二重にお気に入りにされてもややこしいだけかと思いますが意味があるなら的外れの指摘です。
よろしくお願いいたします。Applek
Participantツールバーを初期化したら登録できるようになりましたが、以下のカスタマイズ性の悪さが根幹にあります。
お気に入りは初期化しても復活してきますがマクロのお気に入りをツールバーに登録したのは初期化で毎回消えますので一からやり直しです。
もしかしたらできるのに私が気づいていないだけかも知れません。メールさせていただいた内容です。
.jseeのマクロはドラッグ&ドロップしても追加の反応が非常に鈍いままです。
再起動したら登録できていたりできていなかったりで、リアルタイムにブラウザのように反応して登録できないです。
登録のレスポンス、反応の鈍さはまだ治っていないです。
ブラウザなどはドラッグ&ドロップしただけで完璧に出来ますので、EmEditorの反応は非常に鈍いです。よほど意識して知っていないとこんな機能があるとすら気づかないと思います。
マクロ専用のお気に入りの段が実装されていないのでどこにドラッグ&ドロップしたらいいのかすらわかりにくいです。「マクロお気に入り」という段があれば直感的にわかりますがありません。
なぜ高度マクロの機能が圧倒的な大差で売りのEmEditorがマクロの登録や動作の仕様に関してはこんな使いにくい貧弱なまま放置されているのかと思います。
お気に入り、マクロのお気に入りのツールバーなどはトグル形式で閉じたり開いたり出来るようにして画面を占拠しなくても何百でも大量に登録できるようにして貰いたいです。
なぜ巨大ファイルが扱えるのが売りなのに大量のファイルの切り替え、いろんなマクロの作動が出来る機能はこんな貧弱なままなのかと思います。よろしくお願いいたします。
Applek
Participant一般のテキストファイルとしてのお気に入りは使えてますがドラッグ&ドロップすると同じ文書を重複登録していくようです。これは意図的な仕様かも知れませんが。
Applek
Participantマクロが再度消失したのは前回の一般公開バージョン(プレビュー版ではないほう)のため最新では起きるかはわかりません。解決している可能性はあります。
登録が難しい問題は同じです。Applek
Participantありがとうございます。なぜこんな必要なよく使う機能を標準の機能にされたくない理由を教えてください。
>マクロをツールバーに登録すれば同じことはできますが、今までも独自にマクロでやると不具合が出たときに自分だけがやっている問題なので他の問題が出たときの検証があいまいになりました。
これはマクロでやるとヘンな不具合が出たときにマクロなのか、EmEditorの不具合なのかがわからなくなるためです。
ファイルを一括で取り込む場合とファイル単位で取り込む場合のトグルスイッチを付けていただきたいという要望の理由と同じです。
よろしくお願いいたします。Applek
Participantマクロありがとうございます。この機能をツールバーに付けていただく標準機能はされないのでしょうか?
マクロをツールバーに登録すれば同じことはできますが、今までも独自にマクロでやると不具合が出たときに自分だけがやっている問題なので他の問題が出たときの検証があいまいになりました。
よろしくお願いいたします。Applek
Participantありがとうございます。
以下の説明のとおりです。よろしくお願いいたします。rticipant
横から失礼します。
途中で無関係の「複数行」コマンドに言及してしまったために、切り替え云々の前に「シングルラインモード」「マルチラインモード」が江村様に伝わっていません。
Googleの検索結果からは、「高度」ボタンから設定できる
・正規表現「.」が改行コードに一致することができる
・「^」と「$」が選択の最初と最後に一致することができる
の2つのオプションをボタン一発でオン・オフしたいという話に読めました。Applek
Participantありがとうございます。
切り替えが簡単にできないからです。どっちの意味で使う場合も多いのに設定から変えないと動作しない状況です。
よろしくお願いいたします。Applek
Participantお世話になります。
ツールバーでシングルラインモードとマルチラインモードを切り替えるアイコンを正規表現の切り替えアイコンの隣などにつけていただきたいという要望です。Applek
ParticipantApplek
Participantありがとうございます。
EmEditorにはツールバーで正規表現をシングルラインモードとマルチラインモードをアイコンで切り替えできないと思います。
これは不便ですので付け足して頂けませんでしょうか?
よろしくお願いいたします。Applek
ParticipantF11を押したときに全画面にならないです。この問題はどうなりますでしょうか?
Applek
Participantお世話になっております。別件ですが私の要望で以前作っていただきましたDrop.jseeは標準機能にされないのでしょうか?
これはないと作業にならないぐらい重要な機能ですが現在は私だけへの特製マクロのようです。
ただ、まれに特製マクロの原因で不具合も起きるのでトグルスイッチのようにして標準搭載はされないのでしょうか?Applek
Participantメールにします。
Applek
Participantありがとうございます。
タイトルは「マクロのサイズを小さくする方法」ではなく「マクロをリンクファイル形式で高速化する方法 Windows11 24H2の問題対応」に変更をお願いいたします。
不具合については動画で撮って送らせていただきます。上記のリンクの方法はスレ記事を見た人のために書いておきます。
これは変換候補のファイルがマクロと同一のフォルダにある前提です。
拡張子を.jseeにしているのは、コメントに色が付いて見やすくなると言うだけの理由です。batch_list = editor.filters; batch_list.AddReplace(ScriptFullName.substr( 0, ScriptFullName.lastIndexOf( "\\" ) + 1 ) + "変換候補.txt.jsee", "", eeFindReplaceCase | eeFindReplaceRegExp, eeExFindLinkFile); document.selection.BatchReplace(batch_list, eeReplaceAll, 0);
Applek
Participant回答ありがとうございます。
リンクの仕組みは理解しました。お気に入りの機能ですがマイマクロに含まれています。拡張子も.jseeです。
そのため同じマクロでも何度かやると登録されることがありますが反応が非常に悪いです。
そのため繰り返して登録されるかどうかですのでドラッグ&ドロップで登録できるとはほとんどの人は気がつかないと思います。
よろしくお願いいたします。Applek
Participantリンクファイル形式はファイルサイズが少なく済むのでメリットも大きいですが以下のように途中で別の処理が必要になった場合はそのたびに途切れます。
再度作らなければなりません。document.selection.Find("∈[^∋]{0,15000}?∋",eeFindNext | eeFindReplaceRegExp | eeFindSelectAll,eeExFindRegexOnigmo);// 置換の検索範囲を指定
そのためひとつのファイルで全部記述しているのに比べて一括編集が出来なくなります。
最終的に完成品で今後保守する必要がない場合は最後に作れば良いだけですがそれ以外では実質的に出来ないです。
他のデメリットが多いからです。そのため両方のやり方の良いところ取りが出来るように改良してもらいたいです。
よろしくお願いいたします。Applek
Participantありがとうございます。アドバイスいただいた方法でコメント含めて動作しました。
速度を測ったところ1割くらいは速くなる可能性はありそうですが期待するほど変わりませんでした。
複雑な正規表現マクロではあまり劇的な速度効果はなさそうです。●リンクファイルにしないままタブ形式で表記は可能でしょうか?
それ以外の記述の度にリンクしないと行けないので保守性としては別々のファイルになってめんどくさいです。●お気に入りに追加機能の不具合は御願いできますでしょうか?
よろしくお願いいたします。Applek
Participantタブで区切るやり方ですが空白文字なのでやりにくいです。何か見える文字が代替できたほうがいいです。
よろしくお願いいたします。Applek
Participant回答ありがとうございます。
まさに動作エラーはバックスラッシュの問題でした。
普通の記載に戻すとマクロは動作しました。別の問題が発生しています。
//
このマークの後ろのコメントで無効化しているはずのコードにまで反応してマクロが止まります。
そのためコメントになっているコードはすべて消さなければ動作しませんでした。
コメントを消すと普通に動きはしますが、これだと今後の保守性は極めて悪化するのでこの問題は解決しますでしょうか?
// から始まる後ろは一切反応してもらっては困ります。
/* */この範囲の無効化の記載も全部駄目になります。コメントで無効化も違うのでしょうか?
最終的にどれくらい速くなったか報告します。
よろしくお願いいたします。Applek
Participantいろいろ試して分かりましたのはこのリンクファイルにして連続置換するのは大量のリストとかには向いてますが複雑な正規表現の置換が絡み合ったタイプには向いてないようです。
全部この方法にすれば爆速マクロになるのではないかと試しましたがリンクにすると正規表現の記載にエラーがあると多発してまともに動作しませんでした。この方法は単純なリストが何万行もあるとかのような方法には使えますが一般の正規表現マクロでは正規表現の記載方法の統一がされていないので使い回しが出来ない問題があります。
この問題は解決しますでしょうか?
よろしくお願いいたします。Applek
Participantありがとうございます。リンクだと連続置換が爆速化したように感じます。
リンクの方法でWindows11 24H2でも以前のように大量の候補でも動作するようになりました。
リンクは一括置換だけかと思い込んでいました。やってみて連続置換なのに以前よりもリンクにすると猛烈に連続置換が速くなったように思います。
リンクファイルにすると連続置換も通常より速くなるのでしょうか?
これは多くの人は気がついていないと思います。
よろしくお願いいたします。Applek
Participant以下の代替方法は可能でしょうか?
今回の24H2の改定は一回当たりに読み込ませて動作させる一回当たりの量に制限が出たというだけなので2回、次のマクロのボタンを押したことにすれば何工程でも行けます。
一回当たりの動作範囲のマクロの範囲を指定して、そのマクロ群が終わったら次のマクロを動作させるという新機能です。
これだと分割するだけのため24H2の制限は掛かりません。
よろしくお願いいたします。Applek
Participantご回答ありがとうございます。御厚意、感謝しております。
この方法でいずれも単純な行数では動作はしましたが以下の問題で私のやりたいことが出来る代替にはなりませんでした。行が多いと
Maximum call stack size exceeded
このようなエラーが出ました。それから
for( i = 0; i < 20; ++i )
このようなコードがあると組み合わせて使えないようです。
以前の方法では動作していたのでなんとかなりませんでしょうか?
このままですとEmEditorでできることに大幅な制限が出来ます。Geminiの回答では以下のように出ました。
「Maximum call stack size exceeded」は、プログラミングにおいて、関数の呼び出しが深くなりすぎた場合に発生するエラーです。スタックとは
プログラムが関数を呼び出すとき、その関数の実行に必要な情報(引数、ローカル変数、戻り先アドレスなど)が「スタック」と呼ばれるメモリ領域に一時的に保存されます。関数が終了すると、スタックから情報が取り除かれ、呼び出し元の関数に戻ります。
エラーの原因
このエラーが発生する主な原因は、以下の2つです。
再帰呼び出しの無限ループ: 関数が自分自身を呼び出す「再帰呼び出し」において、終了条件が正しく設定されていない場合、関数が無限に呼び出され続け、スタックが溢れてしまいます。
非常に深い関数呼び出し: 再帰呼び出しでなくても、関数が非常に深くネストして呼び出される場合、スタックが溢れることがあります。
エラーの解決方法このエラーを解決するには、以下の方法を試してみてください。
再帰呼び出しの終了条件を見直す: 再帰呼び出しを使用している場合は、必ず終了条件が正しく設定されているか確認してください。
再帰呼び出しをループ処理に置き換える: 再帰呼び出しが必須でない場合は、ループ処理に置き換えることで、スタックオーバーフローを回避できる場合があります。
関数の呼び出し回数を減らす: 関数呼び出しのネストが深すぎる場合は、コードの構造を見直し、関数の呼び出し回数を減らすことを検討してください。
スタックサイズを増やす: 環境によっては、スタックサイズを増やすことでエラーを回避できる場合がありますが、根本的な解決にはなりません。
例以下は、再帰呼び出しの無限ループによって「Maximum call stack size exceeded」が発生する例です。
copy
def recursive_function():
recursive_function()recursive_function()
この例では、recursive_function関数が自分自身を無限に呼び出し続けるため、スタックが溢れてエラーが発生します。まとめ
「Maximum call stack size exceeded」エラーは、関数の呼び出しが深くなりすぎた場合に発生するエラーです。再帰呼び出しの無限ループや、非常に深い関数呼び出しが主な原因です。エラーを解決するには、再帰呼び出しの終了条件を見直したり、ループ処理に置き換えたり、関数の呼び出し回数を減らすなどの対策が必要です。
- 作成者投稿