フォーラムの返信を作成しました。
- 作成者投稿
snow
Participant少し間が空いてしまいましたが、時折感じていることをもう一つ思い出したので、ここに追記させていただきます。
「AIとチャット」は、他のAI連携機能と異なり、「ウィンドウ」という扱いのために、表示メニューから開きます。
ただ、しばらく開いていないとまず(他のAI連携機能のある)ツールメニューをクリックして、「あれ?ここじゃないんだっけ?」と思ってしまうのです。
「AI連携」という扱いで、再整理あるいはどちらからでも開けるようにできないでしょうか。snow
Participant更新し、その後何度か試してみていますが、遅延はまったく感じられません。
劇的に高速化されたと感じます。
ご対応ありがとうございました。snow
Participantお疲れ様です。
あまり変えていないと思うのですが、ちょっと既定の設定が不明なので、上からすべて書き出してみます。
スタイル:タブ
アイコン:なし
挿入位置:一番右
閉じた時:最近仕様したタブをアクティブにする
外部から開く時:最近使ったウィンドウの新しいタブ
幅:ファイル名に合わせる
入りきらない時:列を増やす
閉じるボタン:無し
書き換え禁止アイコンを表示:チェックあり
アクティブなタブを強調表示:チェックありsnow
Participant以下余談になります。
プログラマが短い記述を好むかどうかはそれぞれですが、短くするにしても、意味が読み取れる記述であることが前提です。
そのため、∈タロウ∮太郎∋
このように記述できる仕様を、プログラマは考えません。
「EmEditorのマクロファイルを生成するツール(マクロ)」を作るしかないでしょう。snow
Participant失礼しました。読み解けるものと思っていました。
エディタではなくJavaScriptの話になりますので、それはご自身で勉強されてはどうでしょうか。batch_list=editor.filters; function F(a,b){ batch_list.AddReplace(a,b,eeFindReplaceRegExp|eeFindReplaceCase,0); } F("タロウ","太郎"); F("ハナコ","花子"); document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);
あるいはこのような形も考えられるでしょうか。この形であればfunctionを別ファイルに追い出して#includeするという手もあるでしょうか(複数のマクロから呼ぶかどうか、ご質問からでは判りませんが)。
function F(){ batch_list=editor.filters; for(a=arguments,i=0;i<a.length;i+=2) batch_list.AddReplace(a[i],a[i+1],eeFindReplaceRegExp|eeFindReplaceCase,0); return batch_list; } batch_list=F( "タロウ","太郎", "ハナコ","花子" ); document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);
snow
Participantこんにちは。
以前も同様の回答をした記憶がありますが、JavaScriptの文法内で短縮するのではだめなんでしょうか?
例えばbatch_list=~ function F(a,b){ batch_list.AddReplace(a,b,eeFindReplaceRegExp | eeFindReplaceCase,0); } F(“タロウ”,”太郎”); F(“ハナコ”,”花子”); ~
snow
Participantご対応ありがとうございます。ペースト時に送信されないことを確認しました。
最初の、文字編集についても、可能でしたらよろしくお願いいたします。
現状カーソル位置と編集位置が合っていないため、やはり違和感を覚えます。snow
Participant開発お疲れ様です。
追加の要望になります。入力位置でペーストすると、その時点で送信されてしまうのが少し使いづらいです。
別のアプリにあるテキストを追加編集してから使いたい場合に、アクションが多くなります。
そこで、この操作がただのペーストになればと思っています。たとえば「ドラえもん」(改行なし)とコピーした状態でペーストすると、現状では単に「ドラえもん」が送信されます。
送信されないようになれば、「の身長を教えて」などと追記して送信することができる、ということです。
※ただ、コピーし損じて「ラえもん」になっていることもありますし、やはり最初の要望である「編集可能」も欲しいと思います。自動送信が良いユーザもいらっしゃるでしょうから、オプションで選べる方が良いかも知れません。
ご検討いただければ幸いです。snow
Participantあれば有効に使う人は結構いそうだとは思います…が、テキストエディタとしてどうか、必要なのかという観点ですと、何か「違う」と感じる、ということでした。
ただ、それはあくまで私の感覚です(江村様ほどではありませんが、技術者の端くれとしても)。
江村様が、コンセプトの範囲内だ、ウリにできそうな機能だ、技術的に面白い…等々思われる可能性がないとは、もちろん私には言えません。To 江村様。
トピックとの関係度は低いですが、この件でいくつか検証している間に感じたことです。
通常モード・非箱形選択で行選択して 挿入>番号 を実行すると連番が選択文字列を上書きしますが、選択行の先頭に連番を挿入する方が自然で便利なように思います。
(箱形選択→各行の行頭を選択→挿入>番号→箱形選択解除 が 行選択→挿入>番号 で実現できる)snow
Participantこんにちは。
単純な連番はともかく、後から変更された分もとなると、「テキストエディタ」に求めるには無理がある機能だと感じます。
通常はHTMLかマークダウンあたりがふさわしいような。最後の最後で良ければオートリピートで可能でしょうが、リアルタイムにこのようなことをしたい場合は、やはりご自分でマクロを書いてイベント呼び出しするしかないと思います。
snow
Participantご対応ありがとうございました。
はい、こちらで問題ありません。snow
Participant横から失礼します、それはマクロのツールバーとどう違うのでしょうか。
snow
Participantこんにちは。
私もちょっと気になりましたので。
「AIとチャット」というタイトル行も、内容の割に領域を使ってしまうので要らないかなあ…とか。
デザイン指針には反するのかも知れませんが、いっそ別ウィンドウというのも手かも知れませんね。snow
Participant行コメント(// ……)は先のマクロでもうまく動いているのですが、行の途中から選択している場合のブロックコメント(/* …… */ )の解除がうまく行かない、ということです。
と、先のマクロで一箇所誤りに気付きました。
× startsWith(t, h.CommentBegin) && endsWith(t, h.CommentEnd);
○ f = startsWith(t, h.CommentBegin) && endsWith(t, h.CommentEnd);
まあ、どのみち動いていないのですが。snow
Participantコメントはエディタの持つ「状態」ではなく、その場で調べて判断しているため、「今どっちか」が取れないということかも知れませんね。
ちょっと考えてみたのですが、行全体を選択しないパターンの「コメント解除」がうまく行っていません。
「コメント」後の選択範囲を見ると、コメント開始は含まれず、コメント終了は含まれているので、元々ちょっと特殊ですね。function startsWith(a, b) { return b && a.substring(0, b.length) == b; } function endsWith(a, b) { return a.substring(a.length - b.length) == b; } function trim(a) { return a.replace(/^[\s]+|[\s]$/g, ''); } var t = document.selection.Text; if (!t) { document.selection.SelectLine(); t = document.selection.Text; } trim(t); var h = document.Config.Highlight; var f = startsWith(t, h.LineComment1) || startsWith(t, h.LineComment2); if (!f) { startsWith(t, h.CommentBegin) && endsWith(t, h.CommentEnd); } editor.ExecuteCommandByID(f ? 4372 : 4371);
snow
Participant失礼しました。OpenFile(file, 0, eeOpenDetectUTF8 | eeOpenAllowNewWindow) ですね…。
snow
Participant大きなお世話かも知れませんが、それっぽいものをマクロで書いてみたので貼り付けておきます。
1:
!function() { var file = new ActiveXObject("WScript.Shell").SpecialFolders("Desktop") + "\\filelist.txt"; var name = document.FullName; editor.NewFile(); var p = !1; if (!shell.FileExists(file)) { editor.NewFile(); } else { editor.OpenFile(file, 0, eeOpenDetectUTF8 | eeOpenAllowNewWindow); p = document.selection.Find(name, eeFindAround); document.selection.EndOfDocument(); } if (!p) { document.writeln(name); document.Save(file); } document.close(); }();
2:
!function() { var file = new ActiveXObject("WScript.Shell").SpecialFolders("Desktop") + "\\filelist.txt"; if (!shell.FileExists(file)) return; editor.OpenFile(file, 0, eeOpenDetectUTF8 | eeOpenAllowNewWindow); document.selection.SelectAll(); var t = document.selection.Text; document.close(); var files = t.split('\n'); menu = CreatePopupMenu(); for (var i = 0, k; i < files.length; ++i) { if (!(k = files[i])) continue; menu.Add(k.substring(k.lastIndexOf('\\') + 1), i + 1); } r = menu.Track(0); if (!r) return; editor.OpenFile(files[--r], 0, eeOpenDetectUTF8); // document.selection.insertFromFile(files[--r], 0, eeOpenDetectUTF8); }();
・良く使うファイルを開き、1でデスクトップのファイルに書き出しておきます(手で入れても構いません)。
・2を使うと、ポップアップメニューでファイル名の一覧が出ます。
・削除と移動はありませんが、デスクトップのテキストファイルなので何とでもなるでしょう…。snow
ParticipantなぜかeeOpenAllowNewWindowを指定しても新しいウィンドウが開かれずにそのままロードしてしまうことがあるようで、現状は
editor.NewFile(); if (shell.FileExists(file)) { editor.OpenFile(file, eeOpenDetectUTF8); }
とすることにしました。
環境に起因する問題なのかは分かりません。snow
Participantありがとうございました。
まさに、shell.FileExists()が、求めていたものでした。snow
Participantご返信ありがとうございます。
すみません、前提条件が漏れていました。
新規作成するかどうかを確認せずにNewFile()へ流したいのです。
よろしくお願いいたします。snow
Participantご返信ありがとうございます。
すみません、ということは私が「今すぐインストール」というチップを見落として、終了させているようです。
次回注意して見てみます。snow
Participantエンジニアの端くれとして言わせていただくと、このような場合は関数を作って一連のコードをまとめることを提案します。
snow
Participant横から済みませんが…。
JavaScriptの言語仕様によるもののため、エディタに求めることではないと感じました。それから「編集」は私も良く使っていますが、反映されなかったことはないと思います。
(実際、たった今この投稿で試しました)snow
Participantご返信ありがとうございます。
お問い合わせ感謝いたします。待つことにします。「すべての現役ブラウザでvalid」は確かに正確ではありませんが、種類ではなく利用率で言えばかなり100%に近いのではないでしょうか。
IE11を考慮しつつ更新を続けているサイトも、もう少ないのでは…と。snow
Participant横から失礼します。
もしかしたら、マクロオプションの「既定でマクロを非同期に実行する」のチェックを外すと期待どおり動くのではないかと思いました。
このオプション自体、元々私が「なぜかうまく動かない」系の質問をさせていただいたのが大元で、生まれたものと記憶しています。- 作成者投稿