- 作成者投稿
- 2006年9月28日 8:52 pm #3647takuya参加者
Emeditorのマクロなどで、document.onSave や document.onLoad などのイベントを取得することは出来ないのでしょうか?
onSaveがあれば、ドキュメントが保存されたらWebPreviewが更新されるとか。保存と同時に、外部ツールに登録したコンパイルコマンドを実行できるとか、HTML編集ならブラウザをリロードするとか。に応用できそうなんですが。
onLoadがあれば、拡張子毎にマクロ一覧を切り替えるとか、外部ツールのコンパイル&実行設定を拡張子に合わせて表示非表示を切り替えるレジストリ操作ができると思うのですが。。。
2006年9月29日 5:10 am #3648Yutaka Emuraキーマスター将来的には、そのようなイベントも検討したいですね。
ただ、動作保証しませんが、nao4u さんの naoExecMacroOnEvent プラグインを使えば、そのようなこともできるようです。
2006年9月29日 10:02 am #3651ShuHeiメンバーとりあえず現状はCtrl+Sとかに自作のマクロを割り当てて
document.Savedとかて判断するのはどうでしょうか?2006年9月30日 8:49 am #3660takuya参加者そうなんです。Ctrl+Sでできるんですよね。
ただ、キー割り当てを編集してしまうと、マクロファイルが読み込めないときにエラーがキャッチできない・・・キー割り当てを各設定に何度も書くのは不便じゃないかな。
もしイベントが取得できるとスマートな記述ができるじゃないかと。
Event.js
document.onLoad = function(){
loadBookmark( document.ConfigName );
document.onSave = function (){
Subversion.update( document.Name );
WebPreview.reload();
}
}
ducument.onKeyPress = function (){
if( autoComplete.Enabled ){
autoComplete.show();
}
}
}のようにまとめて、一箇所に記述可能になって便利。
イベントが取れたら他にもいろいろ応用で
FxのJavaScript実装や,IEのJScript実装のように、onKyePressなどもあればもっと柔軟に対応できるんですよね。
たとえば、マクロを明示的に実行しなくても、キーボードイベントでオートコンプリートができるとか。JS/CSS/HTMLでSnipptsを切り替えるとか。キーボード処理をsleep()で遅延させて、2ストロークキーを実現するとか。。。
2007年9月27日 3:09 pm #4783Aye Wongメンバー過去の議論を読み直していたらこのスレッドを見つけました。私もEmEdtiorがイベント対応するようなことがあったら、細切れにマクロを呼び出すのではなくて、ブラウザのuser.jsのようにマクロのエンジンが常駐してイベントのコールバックが呼ばれるのを待っているような設計が良いです。
参考までに萌ディタがそのような設計になっていて、技術志向の強いユーザーへの人気が高いようです。
http://www.geocities.co.jp/SiliconValley-Oakland/3617/events.html常駐マクロによるイベント対応が実装された場合、例えば、あとはリストボックスの表示機能がサポートされたらWordComplete相当のものはマクロで実装できますね。
私が公開しているSettingWithoutExtensionプラグイン(#!/usr/bin/perlが先頭にある拡張子なしファイルをPerl設定で開くなど)もマクロで実装できそうです。
他にもまだまだ可能性は広がりそうです。
2007年10月13日 5:50 pm #4921takuya参加者IE/FireFoxやOperaもuser.jsで拡張できますよね。表示設定とか。
イベント実装は多少パフォーマンスが落ちても便利なので欲しいなと思う。
2007年10月14日 1:46 pm #4933Aye Wongメンバーtakuyaさんは書きました:
IE/FireFoxやOperaもuser.jsで拡張できますよね。表示設定とか。イベント実装は多少パフォーマンスが落ちても便利なので欲しいなと思う。
イベント実装は、使いこなせる人とそうでない人に分かれそうなので、必ずしもすべての人に利益の無いもののために、全体のパフォーマンスが低下するのは理不尽なので、もしパフォーマンス低下があるなら、オンオフできる選択肢が必要でしょうね。
個人的には、パフォーマンスよりもメモリーリークが気になります。
http://p2b.jp/index.php?UID=1131336575そして、複数のuser.jsが互いに干渉することの無いようにイベントリスナーを追加できるようなAPIにする必要がありそうです。
http://www.s-memo.net/blog/2007/03/yahoo_uiaddlistener.php
あと、実装が適切なものになるように、イベント機能があればどういうことができるのか、実装前にアイデア出しをある程度しておいたほうがよいでしょうね。
2007年10月16日 1:30 pm #4954takuya参加者秀丸でもOnloadみたいな起動時スクリプトが実装されてるようで、うらやましいなぁと思います。
>実装前にアイデア出しをある程度しておいたほうがよいでしょうね。
そうですね。アイディアが無いとどうしようもない。
http://www37.atwiki.jp/emeditor/pages/37.html
について、イベントやキーイベントが取得できたら実現可能なものがありそうです。CTRL+ホイールでフォントを大小 #キー&マウスイベント
ファイルから検索でファイルを直接開きたい #検索終了イベント
4回クリックで全選択 #マウスイベント
マクロでキー入力を取得 #キーイベント
ワークスペースの自動保存 #OnSave個人的には、
保存時にEmFTPでサーバーへファイル転送。
保存時にWebPreviewを更新
保存時にコンパイル
保存時にシンタックスチェックなどが可能になると思います。
現状Ctrl+Sにマクロを割り当てないと出来ないし。
EmFTPもCOMとして自在に使えないので実現できない。JScriptやVBはユーザーが多いのでより多くの開発者を呼び込む呼び水になればと思うのです。
EmEditorにあって秀丸にない箇所がさらに魅力になって欲しい。
2007年10月16日 2:48 pm #4956Aye Wongメンバーtakuyaさんは書きました:
CTRL+ホイールでフォントを大小 #キー&マウスイベント
ファイルから検索でファイルを直接開きたい #検索終了イベント
4回クリックで全選択 #マウスイベント
マクロでキー入力を取得 #キーイベント
ワークスペースの自動保存 #OnSave個人的には、
保存時にEmFTPでサーバーへファイル転送。
保存時にWebPreviewを更新
保存時にコンパイル
保存時にシンタックスチェックなるほど、いろいろと夢は膨らみますね。
私は、<a href="http://emeditor.web.fc2.com/AwEmSoftware.html#SettingWithoutExtension%5DSettingWithoutExtensionという拡張子のないテキストファイルに対する関連付けを行うプラグインを公開しているのですが、これもマクロで簡単に書けて保守性が高まりそうです。しかし、あらゆる文脈でエディタとマクロが堅牢に動くまでにはじっくりデバッグが必要かもしれませんね。
takuyaさんは書きました:
EmFTPもCOMとして自在に使えないので実現できない。もし、江村さんのほうで、EmEditorも含めてオブジェクトをCOMとしてマシーン内グローバルには公開しないという方針を立てられているのだとしたら、最低限、EmFTPのオブジェクトはEmEditorから利用できるようになっていて欲しいですね。
たとえば、EmFTPバーというプラグインがあって、それは<a href="http://jp.emeditor.com/modules/newbb/viewtopic.php?topic_id=316&forum=4%5Dマクロにもインターフェースを公開しているなど。
2007年10月20日 6:02 am #4997Yutaka EmuraキーマスターAye Wongさんは書きました:
過去の議論を読み直していたらこのスレッドを見つけました。私もEmEdtiorがイベント対応するようなことがあったら、細切れにマクロを呼び出すのではなくて、ブラウザのuser.jsのようにマクロのエンジンが常駐してイベントのコールバックが呼ばれるのを待っているような設計が良いです。私もできれば、document.onSave() のように常駐するマクロからイベントを送ることができればいいなと思っていました。でも、EmEditor のマクロは、ユーザー スレッドと同じスレッドで動作しているため、常駐するマクロからのイベントを実装しようとすると、まずマルチスレッドにする必要があり、これを行うには、かなり時間がかかり、Version 7 で行うのは難しいと思います。
EmEditor から細切れにマクロを呼び出す秀丸方式だったら、1 日でできると思います。とりあえず、細切れに呼ぶ方法で実装してから、将来的に document.onSave() のような方式を検討してみましょうか?
2007年10月20日 11:35 am #4998Aye WongメンバーYutakaさんは書きました:
私もできれば、document.onSave() のように常駐するマクロからイベントを送ることができればいいなと思っていました。でも、EmEditor のマクロは、ユーザー スレッドと同じスレッドで動作しているため、常駐するマクロからのイベントを実装しようとすると、まずマルチスレッドにする必要があり、これを行うには、かなり時間がかかり、Version 7 で行うのは難しいと思います。
EmEditor から細切れにマクロを呼び出す秀丸方式だったら、1 日でできると思います。とりあえず、細切れに呼ぶ方法で実装してから、将来的に document.onSave() のような方式を検討してみましょうか?
なるほど、常駐マクロの実装は将来のメジャーバージョンアップ以降になりそうですね。他の方々はまた違った意見をお持ちかもしれませんが、私が心配するのは、秀丸方式を一度実装するとそれを利用したマクロが公開されて、廃止できなくなるのではないかということです。
私としましては秀丸方式の実装を見送られて、将来常駐方式を実装していただくことを希望いたします。もちろん他の方々のご意見も参考にしていただければと思います。
2007年10月21日 6:31 am #5010Yutaka Emuraキーマスター秀丸方式を実装した後、将来、常駐方式を実装しても、両方とも併用することは可能ですので、とりあえず秀丸方式を実装することにしました。(beta 21)
2007年10月29日 4:53 pm #5055takuya参加者ありがとうございます。
- 作成者投稿
- このトピックに返信するにはログインしてください。