【closeLastTag.js】 var QUIET_MODE = false; var REGX_ALL = "</?[\\w\\d]+\\b(.*/>)?|<!--|-->"; var NO_CLOSETAG = "|area|base|basefont|bgsound|br|col|embed|frame" + "|hr|img|input|isindex|keygen|link|meta|nextid" + "|param|spacer|wbr|!doctype|"; var stack_tags = new Array(); var sel_text = ""; var ins_text = ""; var tmp_str = ""; var b_comment = false;
function popup_error(err_string) { if (!QUIET_MODE) { Editor.SearchClearMark(0); var shell = new ActiveXObject("WScript.Shell"); shell.Popup(err_string, 0, "HTML 文法エラー", 0); } }
【0executeMacro.js】 // 必ず正しく指定 // ## 設定 ## // スクリプト自身のファイル名 var SCRIPT_NAME = "0executeMacro.js"; // マクロ群のあるフォルダのフルパス var MACRO_FOLDER = "C:\\...\\sakura\\macro"; // マクロファイルの拡張子(小文字,正規表現不可) var MACRO_EXT = ".mac|.ppa|.js|.vbs"; // Sendkeys用文字列 // shortcutキーも可 // %:alt ^:ctrl +:shift var KEYS_OPENMACRO = "%ta";//マクロ開く var KEYS_EXECMACRO = "%td";//マクロ実行 // ## 設定終了 ##
var DIALOG_TYPE=1; var DLGRET_AUTO=-1; var DLGRET_OK=1; var DLGRET_CANCEL=2; var RECKEY_NAME="RecKey.mac"; MACRO_EXT="|"+MACRO_EXT+"|";
var shell=new ActiveXObject("WScript.Shell"); var sel_text=get_left(); var astr_fileNames=get_macros(sel_text); var dlg_return=pop_dialog(astr_fileNames);
if (dlg_return!=DLGRET_CANCEL) { del_left(); var path=MACRO_FOLDER+"\\"+astr_fileNames[0]; shell.Sendkeys(KEYS_OPENMACRO); shell.Sendkeys(path); shell.Sendkeys("{ENTER}"); shell.Sendkeys(KEYS_EXECMACRO); }
function get_left() { var str=""; Editor.CancelMode(0); Editor.WordLeft_Sel(0); str=Editor.GetSelectedString(0); if (str.match(/\x0D\x0A|\x0D|\x0A/)) { str=""; } Editor.Right(0); return str; } function del_left() { Editor.CancelMode(0); Editor.WordLeft_Sel(0); Editor.Delete(0); } function get_macros(in_sel_text) { var fsys=new ActiveXObject("Scripting.FileSystemObject"); var fld=fsys.GetFolder(MACRO_FOLDER); var fset=new Enumerator(fld.Files); var NOEXT=-1; var str=""; var ext=""; var arr=new Array(); if (in_sel_text=="") return arr; for (;!fset.atEnd();fset.moveNext()) { str=fset.item().Name.toLowerCase(); i=str.lastIndexOf("."); if (i==NOEXT) continue; ext="|"+str.substring(i)+"|"; if (MACRO_EXT.indexOf(ext)==NOEXT) continue; if (str==SCRIPT_NAME.toLowerCase()) continue; if (str==RECKEY_NAME) continue; if (str.indexOf(in_sel_text)==0) arr.push(str); } return arr; } function pop_dialog(in_arr) { if (in_arr.length!=1) return DLGRET_CANCEL; var message=""; message+="マクロ「"+in_arr[0]+"」を実行します\n"; return shell.Popup(message,0,"マクロ実行の確認",DIALOG_TYPE); }
/*********************************************************** ** 変数定義 ** ***********************************************************/ // 正規表現オブジェクト var regExpObj_tags = new RegExp("<[/!]?[A-Za-z][\\w\\-:]*([^>]*/>)?|<!--|-->", "g"); var regExpObj_newLines = new RegExp("\x0d\x0a|\x0d|\x0a", "g"); // 終了タグスタック var stack_tags = new Array(); // 全タグ var TagsArray = new Array(); // タグ総数 var ntags = 0; // 全行 var LinesArray = new Array(); // 行総数 var nlines = 0; // カーソル位置 var cursorX, cursorY; // カーソル位置より前にある全テキスト var all_text = ""; // 現在判定中のテキスト var now_text = ""; // カーソル位置に挿入するテキスト var ins_text = ""; // テンポラリ文字列 var tmp_str = "";