フォーラムの返信を作成しました。
- 作成者投稿
- Delフサ参加者
お返事ありがとうございます。
ボタンプルダウンポップアップでのマイマクロ実行の検討、うれしいです。あと、プラグインもその手のプルダウンでの動作の機能が作れたらうれしいです。
私のプラグインでは、同種の機能をメニュー表示して選択実行するようなものばかりです。
多数の機能を同じ一つのプラグインでもてるところ、
処理の共通化の面でも開発は楽だし、設定不要で多数の機能を追加できるメリットがあって気に入っているのですが1つのプラグインの各機能ごとにショートカットキーを割り当てることができません。
その理由で、プラグインの実行含めたキーマクロの記録再生動作に対応できないのが以前からずっと難点に思っています。このあたりも
1つのプラグイン内に、OnCommandの呼出口が複数追加できるような、つまり OnCommand(Index) で指定できるような仕組みがあったらいいのになと、思っております。※プラグイン作る人は数名だと思いますのでユーザーニーズはないかもしれませんが、より高い拡張性があったらうれしいです。
また、
v11(32bit ポータブル版)に更新しましたが
ユーザーメニュー内に登録しているマイマクロがグレーアウトする症状は同じです。選択範囲の状態とは関係のないマクロなのでそこは影響ないと思います。
ユーザーメニュー内に、マイマクロ以外のコマンドを入れるとグレーではなく黒表示で実行できますが、マイマクロはだめですね。ユーザーメニュー1のデフォルトにある『コメントを挿入』も
選択範囲ありなしに関係なく、グレー文字表示されます。よろしくおねがいします。
Delフサ参加者了解しました。
Delフサ参加者自己レスです。
試行錯誤して次のように作りました。
これで結構うまくいきそうです。タイプ カスタム
カスタムバー最大レベル 2
一致した文字列置換 ON
1: #Region
正規表現OFF
2:
(^|.*s+)([Ff]unction|[Ss]ub|[Cc]lass|[Ee]num)s+((.*)(.*$|(.*$))
正規表現ON $4$5コメントを縮小可能にする ON
Delフサ参加者私も同じように思います。
リッチテキストはいらないのですが、画像はメモと一緒に取り込みたいところです。
今はBeckyのメールを自分あてにしてメモとして活用しています。
一太郎とかが、外部エディタ対応してくれたりしないかなと思いますが、難しいでしょうね。
Delフサ参加者次のプラグインを作っています。
目的にあったら使ってください。EmEditor Plugin WordWrap.dll Readme
http://delfusa.main.jp/delfusafloor/download/wordwrap/readme.htmlEmEditor Plugin QuoteControl.dll Readme
http://delfusa.main.jp/delfusafloor/download/quotecontrol/readme.htmlEmEditor Plugin InsertQuote.dll Readme
http://delfusa.main.jp/delfusafloor/download/insertquote/readme.htmlDelフサ参加者そうですか。
複数行コメントと行コメントとは仕組みが違う感じなのですね。
行コメントも「開始」と「終了」で成り立っていて
終了が改行コードになる、という扱いなら複数行も単一行も同じ処理でコメントフラグに対応できると思いますが、既存のデータ構造と違うということでしたら大変そうですね。
検討していただき、実装していただけたらうれしいです。
よろしくおねがいします。Delフサ参加者動いてよかったです。
諸事情で
DLLのサイズが800KBとプラグインにしては大きくなりすぎてしまったので、もう少しサイズ減らしてから自分のページで正式リリースしてみます。私はDelphiって言語を使っています。
EmEditor本体や他のプラグインはC++言語で作られることが多いですね。
C++だと、if(){} else {} こんな感じでしょうね。一度、プラグインの動作する開発環境を作ってしまえば
私にはマクロより作りやすいので機能拡張は全部プラグインでやっています。使っていただいて何よりです。
もう少ししたらDelphiXE2という64bit版がリリースされるらしいので、64bit対応のプラグインも用意していけそうですが、開発環境のバージョンアップ費用がちょっと気が重いところです。
誰かのウチでコンパイルだけさせてもらったりとか、そういうのじゃいけないもんなのですかね。
Delフサ参加者暫定的においてみました。
http://delfusa.main.jp/temp/ReplaceText.zipたぶん、これで大丈夫だと思うのですが、どうでしょうか。
試してみてください。行頭文字指定は動きました。
単語単位指定や、大文字小文字対応も動くと思うんですが…
以下、
開発者にしか分からないですが、ソースはこんな感じ。
コンパイラをD2007からDelphiXEに変更したのですが、ちゃんと動いているみたい。メイン抜粋
EmReplaceFlag :=
FLAG_FIND_REG_EXP orFLAG_REPLACE_SEL_ONLY or
FLAG_REPLACE_ALL or
FLAG_FIND_NO_PROMPT or
FLAG_FIND_CLOSE;if ReplaceFlagWord then {←単語単位指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_ONLY_WORD;
end;
if ReplaceFlagCaseCompare = ccCaseSensitive then {←大小文字区別指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_CASE;
end;for i := 0 to Length(OldPatterns)-1 do
begin
Editor_ReplaceW_Delphi(hwnd,
OldPatterns, NewPatterns, EmReplaceFlag);
end;
Editor_ExecCommand(hwnd, EEID_ERASE_FIND_HILITE);関数部分
procedure Editor_ReplaceW_Delphi(hwnd: HWND;
const OldPattern, NewPattern: WideString;
nFlags: Longword = FLAG_REPLACE_ALL+FLAG_REPLACE_SEL_ONLY);
var
WideStr: WideString;
begin
WideStr := OldPattern + #0 + NewPattern + #0;Editor_ReplaceW(hwnd, nFlags,
PWideChar(WideStr));
{↓検索強調文字の解除}
// Editor_ExecCommand(hwnd,EEID_ERASE_FIND_HILITE);
end;Delフサ参加者こんにちは。
私がプラグインの作者なので、よく使用しているのですが
正規表現オプションはあまり使ってないです。どういう用途で正規表現を使うのでしょうか…
使用例を教えて欲しいです。正規表現にはTRegExpというライブラリを使っていましたが、その部品の作者が行方不明になってしまっているようです。
調べたところ、日本語ヘルプによると次のように書かれていました。>デフォルトでは “^” は入力文字列 / テキスト中の先頭に、”$” は終端にマッチすることのみ保証されます。間にあるラインセパレータ (改行) は “^”, “$” にマッチしません。
>しかし入力した文字列を複数行のバッファとして扱いたい場合、つまり “^” をあらゆる改行の直後にマッチさせ、 “$” を改行の直前にマッチさせたいことがあります。モディファイヤ /m をオンにするとそのように動作します。ということのようで
プラグイン側でモディファイヤ/mというのをONにする必要があるようです
可能なら、近いうちにプラグインを改造してみます。改造前の対策として、
正規表現行頭置き換え[TAB]^⇒//[TAB]rn⇒rn//[TAB]/rこのように設定していただくのはいかがでしょうか?
動作としては、お望みのものになります。もしくは、行頭挿入でしたら
http://delfusa.main.jp/delfusafloor2/download/download_f.html
の、InsertQuoteプラグインを使っていただくほうが使い勝手がよいと思います。また、改造する場合
他の部品に乗せ変えたり
EmEditor標準の正規表現文字列置き換え機能を利用した機能になるかもしれません。よろしくです。
Delフサ参加者EmEditor Plugin ReplaceText.dll Readme
http://delfusa.main.jp/delfusafloor/download/replacetext/readme.html私自身は重宝しています。
正規表現も使えます。Delフサ参加者うちのプラグインを使っていただくのも
ひとつの解決策に思えます。
よろしくです。EmEditor Plugin OpenFavoriteFile.dll Readme
http://delfusa.main.jp/delfusafloor2/download/openfavoritefile/readme.htmlDelフサ参加者気が付きませんでした。
「タイトル」を選択するとすごく使いやすいです。
ありがとうございます。
Delフサ参加者私のところでもtokさんと同じ動きをします。
Win XP
EmEditor10.0.5ですDelフサ参加者HKEY_CLASSES_ROOTTypeLib の下で、EEMacro を含む値は
regeditで検索しましたがみつかりませんでした。Delフサ参加者あ。
バグの原因がわかりました。「新しいマクロを保存または選択時、マイマクロに追加する」
のチェックボックスをONにしていると
勝手に相対アドレス指定になり誤動作するようです。OFFにして使います。
Delフサ参加者やはり発生しています。
環境はWindows Vista Home Basic SP2 32bitです。Portable版でマクロが動かなかったので
他の場所にインストール版をインストールして
Portable版でマクロが動くことを確認していました。その後、インストール版をアンインストールすると
やはりPortable版でマクロが動きません。documentオブジェクトでもeditorオブジェクトでも発生します。
jseeでも次のエラーが発生します。
少しメッセージが違いますね。‘document’ は宣言されていません。
ファイル:・・・test.vbs
行:1
編集/キャンセルよろしくです。
Delフサ参加者お返事ありがとうございます。
なるほど、リソースを小さくですか。機能がほしい人には、インストーラひとつで、この3ボタンを追加できたりすると便利だと思いました。
#iconには、exeとdllとicoファイルも指定できるのですね。
HELPにはアイコンファイルとだけ記述されていました
拡張子、exe,dll,icoなども書いておくとよいのではないでしょうか。では、失礼します。
Delフサ参加者こんにちは。
間違っていたので訂正します。
上記設定も関連するようですがもう少しよい設定はWindowBlindsの
[基本設定][透明度&ぼかし]
[メニューを変更する][透明度0%]に設定するこうすると、問題が解決しました。
いろいろすいません。
Delフサ参加者今更なのですが、解決しました。
WindowBlindsの
[詳細設定][拡張ユーザ設定]
[メニューにスキンを適用する時、VistaUIガイドラインにWindowBlindsを使用する]のチェックボックスをOFFにすると改善されました。
チェック項目が多すぎて気がつけませんでした。
いま、やっと気がつきました。ご報告です。
Delフサ参加者http://www.geocities.co.jp/SiliconValley-PaloAlto/9141/soft/index.html
こちらの、
MnzkLineDrawを使用するとよいのではないでしょうか。Delフサ参加者激しく遅くなりましたが、実装しました。
http://delfusa.main.jp/delfusafloor/download/download_f.html
SortLineControlプラグインです。よろしくお願いします。
Delフサ参加者江村さん、geccaさん
こんばんは、
AAAとBBBの行を検索する場合に
^QAAAE$|^QBBBE$|
このような正規表現を指定することでうまくいっています。
ありがとうございました。OpenFavoriteFileは、自分でも特によく使い便利です。
複数ファイルの同時起動なんかにも対応していきたいですね。プラグインを作れるプラットホームが存在していて
とても助かっています。自分のプラグインへの要望が書かれているのに、気がつかず2年か3年後に気がつくという事になってしまいましたが、プラグイン開発、がんばってみます。
ではでは失礼します。
Delフサ参加者いや、質問は、geccaさんというより、私ですよ。
今回の件では
QAAAE|QBBBE
という文字列を正規表現として検索に与えると
複数文字の検索ができそうですね。行に正規表現が含まれていてもこれで大丈夫のようですね。
とても助かりました。
ヘルプの「リテラル」という単語の意味がいまいち自然な感じではなさそうなきがしましたが、動作は理解できました。
これでプラグインを作れます。
もうすぐここで公開しておきます。
http://delfusa.main.jp/delfusafloor/download/download_f.htmlありがとうございました。
Delフサ参加者江村さん、了解しました。
ありがとうございます。geccaさん、するどいご指摘ありがとうございます。
私もそう考えていたのですが
正規表現自体をほとんど使わないので、
やりかたがよくわかりません。正規表現フォーラムで聞くべきかもしれませんが話の続きと言うことで聞いてみます。
メタキャラクタをエスケープすればいいんですよね。
処理としては
文字A→エスケープ文字A
「エスケープ文字A|エスケープ文字B」を正規表現検索する
とすればよいと思っています。これは江村さんにお聞きしたいところなのですが
下記のページに紹介されている文字を、単純にエスケープするために置換してからパイプで連結すればいいのかな?正規表現のサンプル集を検索と置換に分けて説明つきで詳しく紹介します。~ お勉強編 ~
http://hodade.adam.ne.jp/seiki/page.php?study_escape
正規表現サンプル(エスケープが必要な文字)このページで紹介されている記号の中で
「-」ハイフン、だけは、エスケープする必要がなさそうです。正規表現のメタキャラクタはたくさんありすぎる気がしているので、どれをエスケープすればいいのか、いまいちよくわからないところです。
ご存じでしたら教えてください。
Rubyという言語でしたら、正規表現ライブラリにescapeという機能があるそうですが、仕様は調べ切れていません。
Delphiの正規表現ライブラリでescepe機能があるものなのどはわからないので、自作しようと思っています。
Delフサ参加者ありがとうございます。
お待ちしておきます。
- 作成者投稿