フォーラムの返信を作成しました。
- 作成者投稿
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
EmEditor では、null 文字はサポートしていません。ただし、エンコードとして バイナリ (アスキー表示) を指定してファイルを開く場合には、null文字を U+3100 に変換して @ の反転文字として表示しています。バイナリ (アスキー表示) 以外の場合には、既定だと警告メッセージを表示して、それでも継続する場合は、null文字をスペースに変換してから読み込んでいます。
今回のようにマクロで document.selection.Text = str とした場合、v8 の場合は、そもそも null文字のところで文字列が切れて代入されてしまいます。JScript だと null文字を含めて代入しようとしますので、v24.0.1 と v24.0.901 で修正しました。バイナリ (アスキー表示) の場合は U+3100 に変換し @ の反転文字として表示し、それ以外のエンコードでは、メッセージを表示してマクロを終了します。ただし、これは try 構文により回避可能です。
また、バイナリ (アスキー表示) の場合に null 文字を検索したい場合には、エスケープ シーケンスを使用して 0x3100 を検索すれば可能ですが、正規表現では検索できません。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ご報告ありがとうございます。
この問題は v24.0.1 と v24.0.901 で修正しました。よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
EmEditor では、IPv6 として認識する IP アドレスを厳密にしています。
2001:DB8:0:0:8:800:200C:a76b
というように、大文字が含まれていたり、
2001:cb0::fc0::abc
というように曖昧な表記、または
2345:425:2CA1:0000:0000:567:5673:23b5
というように 0000 を :: と表記していない場合は、IPv6 として認識される文字列からはじいています。
RFC では、大文字や 0000 は許されていますが、小文字で :: を使用して表記しているのが一般的であり、その一般的な表記のみを IPv6 として認識しています。そのようにしないと、IPv6 ではない英数字の組み合わせが IPv6 として誤って認識されてしまい、多くのユーザーが期待した結果と異なる可能性があります。
EmEditor の設定のプロパティのリンク ページで、IPv6 を有効にしておけば、IPv6 が強調表示されるため、わかりやすくなります。
すべて、小文字に変換し、曖昧な表記を直し、0000 を :: に変更して表記すれば、正しく並べ替えられていることが確認できました。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
EmEditor の機能改善でしたら検討できますが、本フォーラムの機能改善ということでしたら、私もあまり知識はありませんし、優先度は低くなります。もう少し具体的に、XXXX というプラグインは評判がいいから使用してみては、というような提案でしたら、私にとってはありがたいです。現状、申し訳ありませんが、画像などの提示が必要でしたら、直接メールをいただくか、スタックオーバーフロー https://ja.stackoverflow.com/questions/tagged/emeditor または Qiita https://qiita.com/tags/emeditor?type=questions などもご検討ください。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
次のようなマクロで可能です。
#language = "JScript" #async = "off" doc = document; document.selection.StartOfDocument(); while (document.selection.Find("#include", eeFindNext | eeFindReplaceQuiet)) { if (document.selection.Find('"', eeFindNext | eeFindReplaceQuiet)) { document.selection.CharRight(); document.selection.OpenLink(); } doc.Activate(); }
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
DirectWriteはオン、オフ、どちらの設定でしょうか? DirectWrite がオフの場合は、確かに、水平スクロールで、左右の端が再描画されないことがあります。その場合は、DirectWrite をオンにしてお試しください。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
行コメントというのは、
//
で始まる行になりますでしょうか?
だとすると、次のマクロを利用できます。
s = document.selection.Text; if( s.length == 0 ) { s = document.GetLine( document.selection.GetActivePointY( eePosLogical ) ); } if( s.length >= 2 && s.substr( 0, 2 ) == "//" ) { editor.ExecuteCommandByID(4372); // Uncomment } else { editor.ExecuteCommandByID(4371); // Comment }
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
特定の Preview 版から更新された場合、そのようになってしまった可能性があります。[マクロのカスタマイズ] ダイアログの [マイ マクロ] ページで [追加] ボタンをクリックして AI.jsee を追加してください。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
[ヘルプ] メニューの [キーボード マップ] で、「切り取り」で検索していただくと、わかりやすいですが、Ctrl+X に割り当てられている [切り取り] 以外に、[選択範囲を切り取り] コマンドがあります。こちらはショートカットが割り当てられていないので、Ctrl+X を [選択範囲を切り取り] コマンドに割り当てていただければ、ご希望の動作になります。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
EmEditor のバージョン情報を取得するには、
document.writeln( editor.Version );
で可能です。
EmEditor では Windows のバージョンを取得するメソッドは提供しておりませんが、
#language = "V8" document.writeln( navigator.appVersion );
で代用できるかもしれません。
参考文献: https://stackoverflow.com/questions/4006420/detect-windows-version-with-javascript
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ご指摘のように、この度は、深刻な不具合だと認識しております。ご迷惑をおかけして申し訳ありませんでした。
・「巨大ファイル」の具体的なファイルサイズ(バイト単位)
ファイル サイズは、[カスタマイズ] ダイアログの [高度] ページで、[ディスク ベースを有効にする最小ファイル サイズ] で指定されている MB 数以上のファイルになります。既定の設定の場合には、300 MB 以上のファイルの場合です。
・「巨大ファイルの一部が保存されない」について、具体的な現象の説明。現時点で把握している範囲。
変更されたはずの行全体の変更が保存されない可能性がありました。変更前の状態で保存されます。
発生頻度があるのであればその情報提供をしていただきたい。もし、違うのであればその説明をしていただきたい。
必ずしも発生するとは限りませんが、特定の手順と条件だと、必ず発生します。発生する操作手順の例:
(1) ファイル開く
(2) 検索機能で「bbbbb」を検索
(3) 「bbbbb」行を削除
(4) 上書き保存
(5) 閉じる
(5) ファイル開く
(6) 検索機能で「bbbbb」を検索
(7) 「bbbbb」行が検索できる
(8) 上記(3)の修正が保存されていない使用するファイルの例 (300MB 以上):
ファイルの中間の1行だけ
bbbbb
の行を作成。以下の例で、bbbbb
以外の上部と下部はすべて同じaaaaaa...
の行になります。aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbb aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
つまり、巨大ファイルの、例えば、中間程度を表示させて、ある 1行を変更してから保存を行い、読み直しを行うと、その行が変更されていないことがわかります。
Q3.現時点で判明しているこの不具合があるバージョンをすべて開示いただけますか?
本件の不具合は、正式版では、v23.1.2 のみで発生していた不具合です。プレビュー版では、v23.1.903 と v23.1.904 で発生していた不具合となります。
なお、現在公開されているバージョン、v23.1.3 および v23.1.905 では、この不具合は修正されています。
この度は大変ご迷惑をおかけして申し訳ありませんでした。
今後もよろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ActiveXObject
は、V8 では使用できませんので、最初に#language = "JScript"
を追加してください。よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
[ファイル] メニューまたは [スタート] ウィンドウのファイルの一覧で、お気に入りとして常に表示したいファイル上で右クリックして表示されるメニューから、[この(お気に入り)一覧に常に表示] を選択してください。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
それでは、以下のようにファイルが存在するかどうかを FileExists メソッドを使って、調べてから、OpenFile を呼ぶということで、いかがでしょうか?
if( shell.FileExists( ... ) ) { editor.OpenFile( ... ); } else { editor.NewFile(); }
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
将来のバージョンで検討させていただきます。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
「ツールバーの変更」ダイアログは、Windows のコモン ダイアログで、かなり昔から同じデザインになっていて、サイズ変更はできないようになっています。これをデザインし直すことも将来検討いたします。
「記号」についても調べて、可能なら修正いたします。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
さきほどの上の投稿は編集しましたので、後半の
もしかすると、テキストではなく、ファイルについてお気に入りの機能という意味でしょうか?
の部分を読みください。
お願いがあるのですが、トピックのタイトルは、できるだけ誤解が無いよう、わかりやすい言葉をお使いください。将来、サーチ/AI エンジンで検索されることもありますので、わかりやすいトピックにしていただけると幸いです。その結果が、将来の AI の結果にも反映されます。今回に限り、トピックタイトルをこちらで修正させていただきました。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ご質問には 2 つの意味が考えられます。
テキストのクリップボード機能のご希望という意味でしたら、スニペットを使えば、すべて可能です。スニペットの使い方を簡単に説明しますので、まずはお試しください。
好きなテキストをスニペットとして登録する方法:
1. プラグイン メニューから [スニペット] を選択して、スニペット カスタム バーを、通常、ウィンドウの左に表示されている状態にします。
2. テキストでスニペットに追加したいテキストを選択します。
3. 選択したテキストを、マウスでスニペット ツリーの好きなフォルダ上、またはツリーの下の何もない領域にドロップします。
スニペットをエディタに挿入する方法:
1. スニペット ツリーから挿入したいスニペットの項目を選択します。
2. その項目をダブル クリックするか、マウスでドラッグして、エディタ上にドロップします。
以上です。ぜひお試しください。
もしかすると、テキストではなく、ファイルについてお気に入りの機能という意味でしょうか? そうだとすると、[ファイル] メニューまたは [スタート] ウィンドウのファイルの一覧で、お気に入りとして常に表示したいファイル上で右クリックして表示されるメニューから、[この(お気に入り)一覧に常に表示] を選択してください。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
以下のように
try ... catch
を使って書いていただければマクロの継続が可能です。try { editor.OpenFile( ... ); } catch(e) { editor.NewFile(); }
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
スニペット プラグインを使用するという方法もあります。詳しくは、こちらをご覧ください。
https://jp.emeditor.com/text-editor-features/extensibility/plug-ins/snippets/
https://jp.emeditor.com/text-editor-features/extensibility/plug-ins/snippets/howto-1/
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ご希望の操作は可能です。よく使うテキストをファイルに保存しておき、[挿入] メニューから、挿入したいテキストファイルを選択することで行えます。最近挿入したファイルは、[挿入] メニューに順次追加されます。不要になったテキストファイルは、その「最近挿入したファイル」メニューで右クリックし表示されるメニューから [削除] を選択することで、一覧から削除できます。
どうぞよろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
以前にもお伝えしたかと思いますが、一括置換を行う際には、短い候補から優先して検索をすることで高速化を実現しています。ユーザーが検索順序を自ら指定する機能は現在のところ考慮しておりません。しかし、一括置換ではなく、連続置換の機能を利用することで、ユーザーが希望する順序に従って置換を実行することが可能です。もし一括置換で順序を指定したい場合は、マクロを利用して区切りを設定し、指定していただく必要があります。
ご理解とご協力を賜りますようお願い申し上げます。
どうぞよろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
前回もお伝えしましたが、JavaScriptの仕様上、ダブルクォーテーションマーク(”)は、バックスラッシュでエスケープする必要があります。これはEmEditorの問題ではなく、EmEditorから制御することもできません。しかし、JavaScriptの仕様を詳しく調べていただければ分かるように、シングルクォーテーションマーク(’)も使用でき、その中ではダブルクォーテーションマークをエスケープせずに記述することが可能です。したがって、次のように書くことができます:
batch_list.AddReplace('\\Q<span class="ruby">\\E','',eeFindReplaceRegExp | eeFindReplaceCase,0);
ところで、マスナガ様には、いつも多数のご質問をいただき、心より感謝しております。皆様からのご質問に丁寧に回答したいと思っておりますが、私が開発からサポートまで全てを一手に担っているため、時間は限られています。
そのため、ご質問の前に、ご自身でも問題解決のために努力をしていただければ幸いです。可能な限りご自身で問題解決を試みた後、どうしても解決が難しい場合に限ってご質問いただければ、より迅速かつ効率的なサポートを提供することができます。
ご理解とご協力をお願い申し上げます。
どうぞよろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
ダブル クォーテーションマークは\\Q\\Eにも対応しない別だったのですか。
ご質問の意味がよくわからないのですが、JavaScript の仕様として、ダブル クォーテーション マーク (“) は、バックスラッシュでエスケープする必要があります。
よろしくお願いいたします。
Yutaka Emura
Keymasterいつもお世話になっております。江村です。
JavaScript の仕様として、ダブル クォーテーション マーク (“) は、バックスラッシュでエスケープする必要があります。したがって、3行目は
batch_list.AddReplace("\\Q<span class=\"ruby\">\\E","",eeFindReplaceRegExp | eeFindReplaceCase,0);
と記述してください。
よろしくお願いいたします。
- 作成者投稿