このマクロは、選択状態にある相対パスを EmEditor で開くマクロです。実行する際に、それが相対パスかどうかを判断しません。まあ実際にそのファイルが無くても、 EmEditer がその名前のファイルを作り出し、そのファイルを開いてしまうだけです。
一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。
このマクロは、選択状態にある相対パスを EmEditor で開くマクロです。実行する際に、それが相対パスかどうかを判断しません。まあ実際にそのファイルが無くても、 EmEditer がその名前のファイルを作り出し、そのファイルを開いてしまうだけです。
一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。
//openfile.jsee //相対パスを選択しこのマクロを実行すると、そのファイルを EmEditor で開きます。 var base = document.FullName; var pathn = document.selection.text; var r = new RegExp("/","g"); pathn = pathn.replace(r, "\\");//"/"を"\"に変換 var re = /#(.*)/g; var idfind = pathn.match(re);//IDがあるか検索 if (idfind != null){ pathn = pathn.replace(re, "");//#以降を消す } var rep = /^\.\\/g; var headslash = pathn.match(rep);//行頭の"./"を探す if (headslash != null){ pathn = pathn.replace(rep, "");//あったら消す } function joinPath(base,pathn){//相対パスを絶対パスに変換 if(base.substr(base.length-1) != '\\'){ base = base.split('\\'); base.length--; base = base.join('\\'); }else{ base = base.substr(0,base.length-1); } base = base.split('\\'); while(0 == pathn.indexOf('..\\')){ base.length--; pathn = pathn.substr(3); } base = base.join('\\'); base = base + '\\' + pathn; return base; } var AbsolutePath = joinPath(base,pathn); var baselength = AbsolutePath.length;//選択したパスの長さを計測 var slashpos = AbsolutePath.lastIndexOf("\\");//\を後ろから検索 if (slashpos + 1 == baselength){//パスが\で終わっていたら AbsolutePath = AbsolutePath + "index.html";//ケツに\index.htmlを足す } editor.OpenFile( AbsolutePath, eeEncodingSystemDefault, eeOpenAllowNewWindow );