- 作成者投稿
- 2007年1月29日 7:46 am #4090
takuya
参加者マクロに対して使いまわせるところを使いまわしたいので、CでいうところのInclude(ですよね) Java/JScriptでいうところのImport PHPでいうところのrequire 関数を作成していただけるとうれしいです。
import で多重importの無駄がおきないように、一度Importしたファイルが別のImportで2重インポートが防げれるように実装していただけると、さらにうれしいです。
Importがあれば、ShuheiさんがおっしゃっているDOM関連の実装をEmeditorユーザーで作り上げることも可能かと存じます。
2007年1月29日 3:54 pm #4093ShuHei
メンバーtakuyaさんは書きました:
Importがあれば、ShuheiさんがおっしゃっているDOM関連の実装をEmeditorユーザーで作り上げることも可能かと存じます。因みに私のほうはマクロ側からより低レベルな
処理を実行したいので、DOMを拡張できたらなーと思っています。マクロ側でテキストの取得やキャレットの移動などをやろうとするとどうしても冗長になってしまったりするんですよね。
自分達でDOMを拡張できるのであれば、
そういったボトルネックも解消できるかと思いますし、後々にそういった自由性が新たなemeditorの強みになるかもしれません。
(素人考えですので変な所もあるかもしれませんが。)あと、個人的にJavascriptの言語構造でrequireなどの
機能がないのはemeditor側ではどうしようもないような気がします・・・2007年1月29日 6:58 pm #4094takuya
参加者>因みに私のほうはマクロ側からより低レベルな
処理を実行したいので、DOMを拡張できたらなーと思っています。DOM実装ってdocument.getElementsByTagNameNS();みたいなモノですよね。低レベルなDOMの拡張って?もうすこし詳しく知りたいです理解できて無くてすいません。
拡張ってEmEditor内蔵のDocumentオブジェクトをWRAPするdocumentオブジェクトをマクロ側で定義して、それを毎回Importすれば出来るんじゃないかなと。(重いけど・・・)
こういうのをWikiなりオープンな場で作って共有できれば良いのじゃないかなと思ったのですが。//基本的なオブジェクトを拡張する BASE.js
var _document = {
keyPress : function(key){
var shell = new ActiveXObject(“WScript.Shell”);
shell.SendKeys( key );//key={F5}, key={A}…
},
Caret : {
move : function(x){//負なら左へ、正なら右へ移動
if( x <0 )
this.selection.CharLeft(x);
else
this.selection.CharRight(x*-1);
}
}
onSave :function(x){}
}
Object.extend( window.document, _document );これを使って
Editor.ImportSrc( “BASE.js” )
//なんか処理こんな感じで出来ないかな。
>あと、個人的にJavascriptの言語構造でrequireなどの
機能がないのはemeditor側ではどうしようもないような気がします・・・JScript.netには.netFrameWorkをImportする機能があるんだけど。あれってマクロの再利用とは、また違うのかな。たしかに言語構造的には無理だよねぇ。でも組み込みObjectの関数で用意していただけると使える気がする。先の例でのEditor.ImportSrc()みたいな感じで。
個人的にはeval()するだけのrequire()でもいいからあると楽かなぁと思う。
2007年1月30日 1:13 am #4095snow
参加者Cのincludeのように、実行する前にプリプロセッサを動かせれば。
2007年1月30日 12:45 pm #4101ShuHei
メンバー拡張ってEmEditor内蔵のDocumentオブジェクトをWRAPするdocumentオブジェクトをマクロ側で定義して、それを毎回Importすれば出来るんじゃないかなと。(重いけど・・・)
こういうのをWikiなりオープンな場で作って共有できれば良いのじゃないかなと思ったのですが。恐らくマクロ部分を拡張するとなるとEmeditorの
DOMに属する形になると思うのでああいう表現にさせていただきました。文字列を走査するとかのコストがかかる処理なんかは
C側で実装できたら便利そうだし、マクロ側からもっと
簡単に色々なことが出来るんじゃないかなーっていう
位です。例えば指定URLの中身を拾ってくるWindow.Extension.get_url()という関数をCで定義できたらどのActiveScriptからでもWindow.Extension.get_url()をコールするだけで簡単に中身が拾える!とか、色々応用は出来そうですよね。
まぁ、プラグイン側でやりゃ解決する事なんですが。
プラグインを作れる人は限られてしまいますからねぇ・・・でも組み込みObjectの関数で用意していただけると使える気がする。先の例でのEditor.ImportSrc()みたいな感じで。
Editor.importSrc(“hoge.jsee”);
とか書いておくとマクロの実行前にhoge.jseeの中身を
読み込んでからActiveScriptに渡してくれるのであれば出来そうですよね
(恐らくもっと効率よい方法があるかと思いますが。)2007年1月31日 5:19 pm #4106Yutaka Emura
キーマスターC言語の #include のようなものを追加したいと思っていますが、いかがでしょうか?
2007年10月13日 5:22 pm #4920takuya
参加者β版でも新バージョンでも搭載予定無しでしょうか?
ScriptControl側にEvalを付加してくれるとソコソコ動作するのですが、EmEditorのマクロエンジン側に実装して貰えると嬉しい。var engine = new ActiveXObject(“ScriptControl”);
engine.Language = “JScript”;
js = engine.CodeObject;
WScript.Echo( js.eval(“aa=1”) );
WScript.Echo( js.aa );上記のEval部分を 外部ファイルのSRCコードにして欲しいのですが。。。
#include “sample.js”
alert(“test”);とEmEditorマクロを書けば、実行時にスクリプトエンジンに
追記されると嬉しいです。仰られるように、
#include
構文を実行前に固定コードへ展開しても良いと思います。2007年10月16日 3:00 pm #4957Aye Wong
メンバーマクロをいろいろ書いているとライブラリ機能は欲しくなってきますね。
いずれにせよ、マクロエンジンにファイル内容を渡す前に、エディタ側でテキストを読んでいる実装だと思いますので、私もシンプルにエディタ側が#includeや#importでテキスト内容を展開する実装がよいと思います。
賛同の上+一票2007年10月16日 3:35 pm #4959palazzo
メンバーVBSやJSのインクルードなら、ネットを検索していると、いくつかそれらしいものにヒットしますが、関数のみのVBSやJSをExecuteメソッドやevalメソッドで読み込むのはダメなのでしょうか?
inc.vbs
Sub Test
MsgBox “Hello”
End Submain.vbs
Execute CreateObject(“Scripting.FileSystemObject”).OpenTextFile(“inc.vbs”, 1).ReadAll()Call Test()
inc.js
function test(){
new ActiveXObject(“htmlfile”).Script.alert(“Hello”);
}main.js
eval( new ActiveXObject(“Scripting.FileSystemObject”).OpenTextFile(“inc.js”, 1).ReadAll() );test();
2007年10月18日 6:07 pm #4981takuya
参加者FSOでも良いのですが、EmEditor側にある方が、エディタのマクロとして自然かなと思ったりします。
#include “http://hoo.baz/foo.js”
//↓展開
var ld = WScript.CreateObject(“WSH.SubScriptLoader”);
ld.load(“http://hoo.baz/foo.js”, this);#includeをエディタがマクロ実行前に展開するだけだし。。。
あまり難しいことではないような気がする。作者さんのポリシー次第かなと思ってる。
2007年10月19日 3:21 pm #4991ShuHei
メンバー気分的な問題というのがひとつと、
デバッグする時追うのが面倒なのでevalは余り使いたくありません。最近は標準で使えるスクリプトエンジンを採用するメリットの方が大きいと思うようになったので、言語的な制約は諦めるようになりました。
使い勝手が悪ければ他のでやれば済みますから、ね。
- 作成者投稿
- このトピックに返信するにはログインしてください。