Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // http://doesnotexist.net
- // Version: 1.3.0
- // Author: thx@ Instructor, KDJ, Skif_off
- // Date: 10.07.2015 / 22.04.2019
- //
- //
- // Description(1033): Execute document depends on extension.
- // Description(1049): Запуск редактируемого документа в зависимости от его расширения.
- // Можно также передавать параметры для запуска из меню.
- //
- // Arguments: AutoItSyntaxCheck - запуск соответствующей функции
- // AutoItStdOut2Console - запуск соответствующей функции
- //
- // Usage:
- // Call("Scripts::Main", 1, "ExecuteDocument.js")
- // Call("Scripts::Main", 1, "ExecuteDocument.js", "AutoItSyntaxCheck")
- //Include
- if (!AkelPad.Include("ShowMenu.js")) WScript.Quit();
- var hMainWnd=AkelPad.GetMainWnd();
- if (! AkelPad.Include("AkelDSLConstants.js")) WScript.Quit();
- var hEditWnd = AkelPad.GetEditWnd();
- var pEditFile = AkelPad.GetEditFile(0);
- var pFileExt = AkelPad.GetFilePath(pEditFile, 4 /*CPF_FILEEXT*/);
- var pSelText = AkelPad.GetSelText();
- var sArg = AkelPad.GetArgLine();
- var lpItems;
- var nItem;
- switch (sArg)
- {
- case "AutoItSyntaxCheck":
- AutoItSyntaxCheck();
- WScript.Quit();
- case "AutoItStdOut2Console":
- AutoItStdOut2Console();
- WScript.Quit();
- default:
- break;
- }
- // written by KDJ
- var nX, nY;
- var lpRECT = AkelPad.MemAlloc(16 /*sizeof(RECT)*/);
- AkelPad.SystemFunction().Call("User32::GetWindowRect", AkelPad.GetEditWnd(), lpRECT);
- nX = AkelPad.MemRead(_PtrAdd(lpRECT, 0), 3 /*DT_DWORD*/);
- nY = AkelPad.MemRead(_PtrAdd(lpRECT, 4), 3 /*DT_DWORD*/);
- nX += (AkelPad.MemRead(_PtrAdd(lpRECT, 8), 3 /*DT_DWORD*/) - nX) / 2;
- nY += (AkelPad.MemRead(_PtrAdd(lpRECT, 12), 3 /*DT_DWORD*/) - nY) / 2;
- AkelPad.MemFree(lpRECT);
- switch (pFileExt.toLowerCase())
- {
- case "htm":
- case "html":
- case "xhtm":
- case "xhtml":
- case "asp":
- AkelPad.Call("Scripts::Main", 1, "HTMLView.js");
- break;
- /*
- AkelPad.Exec('%ProgramFiles%\\Internet Explorer\\iexplore.exe "' + pEditFile + '"');
- break;
- */
- case "bat":
- case "cmd":
- AkelPad.Exec('%comspec% /c "' + pEditFile + '"');
- break;
- case "dsl":
- AkelPad.Exec(AUTOIT + ' "' + AKELDSL_PATH + '\\CompileDSL.au3" "' + pEditFile + '"');
- break;
- case "au3":
- lpItems=[["AutoIt Run", MF_NORMAL, 101],
- ["AutoIt Compile from GUI", MF_NORMAL, 102],
- ["AutoIt Build", MF_NORMAL, 103],
- ["", MF_SEPARATOR],
- ["AutoIt Syntax Check", MF_NORMAL, 104],
- ["AutoIt Run :: StdOut2Console", MF_NORMAL, 105],
- ["", MF_SEPARATOR],
- ["AutoIt Jump to function", MF_NORMAL, 106],
- ["AutoIt Remove debug lines", MF_NORMAL|MF_LAST, 107]];
- nItem=ShowMenu(lpItems, nX-250, nY-100);
- if (nItem == -1)
- break;
- else
- switch (lpItems[nItem][2])
- {
- case 101:
- AkelPad.Exec('"' + AUTOIT + '" "' + pEditFile + '"');
- break;
- case 102:
- AkelPad.Exec('"' + AUTOIT + '" "' + AUTOIT_PATH + '\\AutoIt3Wrapper\\AutoIt3Wrapper.au3" /ShowGui /in "' + pEditFile + '"');
- break;
- case 103:
- AkelPad.Exec('"' + AUTOIT + '" "' + AUTOIT_PATH + '\\AutoIt3Wrapper\\AutoIt3Wrapper.au3" /prod /notmp /in "' + pEditFile + '"');
- break;
- case 104:
- AutoItSyntaxCheck();
- break;
- case 105:
- AutoItStdOut2Console();
- break;
- case 106:
- AkelPad.TextFind(hEditWnd, 'Func ' + pSelText, 0x00000001|0x00200000 /*FRF_DOWN|FRF_BEGINNING*/);
- break;
- case 107:
- AutoItRemoveDebugLines();
- break;
- default:
- break;
- };
- break;
- case "md":
- MarkdownPreview();
- break;
- default:
- AkelPad.MessageBox(hMainWnd, "This file type is not currently supported.", "Execute Document", 64 /*MB_ICONINFORMATION*/);
- break;
- }
- WScript.Quit();
- function AutoItRemoveDebugLines()
- {
- AkelPad.TextReplace(hEditWnd, "^(?m-s).+?;### DEBUG (MSGBOX|CONSOLE|ARRAY|LINE)\\n", "", 0x00280005 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP|FRF_MATCHCASE*/, true);
- }
- function AutoItSyntaxCheck()
- {
- AkelPad.Call("Log::Output", 1, '"' + AUTOIT + '" "' + AUTOIT_PATH + '\\AutoIt3Wrapper\\AutoIt3Wrapper.au3" /notmp /prod /AU3Check /in "' + pEditFile + '"', "", "^(.+?\\.au3)\\((\\d+),(\\d+)\\)", "/FILE=\\1 /GOTOLINE=\\2:\\3", -1, -1);
- }
- function AutoItStdOut2Console()
- {
- AkelPad.Call("Log::Output", 1, '"' + AUTOIT + '" "' + AUTOIT_PATH + '\\AutoIt3Wrapper\\AutoIt3Wrapper.au3" /notmp /run /prod /ErrorStdOut /in "' + pEditFile + '"', "", "^(.+?\\.au3) ?\\((\\d+)(\\)|,(\\d+)\\))", "/FILE=\\1 /GOTOLINE=\\2:\\4");
- }
- function MarkdownPreview()
- {
- // http://akelpad.sourceforge.net/forum/viewtopic.php?p=28787#28787
- //
- // Version: 2016-03-28 [mod: 22.04.2019]
- //
- // -"" Call("Scripts::Main", 1, "MarkdownPreview.js", `-browser=path`)
- // параметры (не обязательны):
- // -browser=path - путь к браузеру, если нет - используется MarkdownPreview.exe;
- //
- // [yozhic::mod]
- // - аргумент -file убрал, т.к. теперь мы создаём temp-файл всегда рядом с оригинальным, а в Temp только если не создался рядом
- // - аргумент -del убрал, добавил эту опцию в диалог
- //
- // Сохранить в UTF-16LE
- // Пути к утилитам
- if (_X64) {
- var pMultiMarkdown = "%a\\AkelFiles\\Plugs\\Scripts\\MarkdownPreview\\multimarkdown64.exe"
- } else {
- var pMultiMarkdown = "%a\\AkelFiles\\Plugs\\Scripts\\MarkdownPreview\\multimarkdown32.exe"
- }
- var pMarkdownPreview = "%a\\AkelFiles\\Plugs\\Scripts\\MarkdownPreview\\MarkdownPreview.au3"
- var hMainWnd = AkelPad.GetMainWnd();
- var pAkelFilesDir = AkelPad.GetAkelDir();
- var nArg1 = AkelPad.GetEditFile(0);
- var nArg2 = AkelPad.GetArgValue("browser", "");
- var WshShell = new ActiveXObject("WScript.Shell");
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var pTextRange;
- var sTxtTextError;
- var pTempMDFile;
- var pTempHTMLFile;
- var bError;
- pTextRange = AkelPad.GetSelText(2);
- if (! pTextRange.length > 0)
- pTextRange = AkelPad.GetTextRange(0, -1, 2);
- if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 1049 /*Russian*/)
- sTxtTextError = "Не найдена утилита MultiMarkdown! Проверьте путь в pMultiMarkdown.";
- else
- sTxtTextError = "MultiMarkdown not found! Check path into pMultiMarkdown.";
- pMultiMarkdown = pMultiMarkdown.replace(/^%a(?=\\)/, pAkelFilesDir);
- pMarkdownPreview = pMarkdownPreview.replace(/^%a(?=\\)/, pAkelFilesDir);
- if (! fso.FileExists(pMultiMarkdown))
- {
- AkelPad.MessageBox(hMainWnd, sTxtTextError, WScript.ScriptName, 48 /*MB_ICONWARNING*/);
- WScript.Quit();
- }
- // Strikethrough text: "~~text~~" => ""<strike>text</strike>"
- //pTextRange = pTextRange.replace(/(~~)([^~]+)(~~)/g, '<strike>$2</strike>')
- pTempMDFile = nArg1 + "-temp.md";
- pTempHTMLFile = nArg1 + "-temp.html";
- bError = AkelPad.WriteFile(pTempMDFile, pTextRange, -1, 65001, false);
- if (bError != 0) {
- pTempMDFile = WshShell.ExpandEnvironmentStrings("%Temp%") + "\\temp.md";
- pTempHTMLFile = WshShell.ExpandEnvironmentStrings("%Temp%") + "\\temp.html";
- AkelPad.WriteFile(pTempMDFile, pTextRange, -1, 65001, false);
- }
- AkelPad.Exec("\"" + pMultiMarkdown + "\" --batch --full \"" + pTempMDFile + "\" --output=\"" + pTempHTMLFile + "\"", "", 1, 0);
- if (nArg2 && fso.FileExists(nArg2))
- AkelPad.Exec(nArg2 + " " + pTempHTMLFile, "", 1);
- else if (fso.FileExists(pMarkdownPreview))
- AkelPad.Exec("%AUTOIT%" + " \"" + pMarkdownPreview + "\" \"" + pTempHTMLFile + "\" \"" + pAkelFilesDir + "\\AkelPad.exe\" " + hMainWnd);
- else
- AkelPad.Exec(WshShell.ExpandEnvironmentStrings("%ProgramFiles%") + "\\Internet Explorer\\iexplore.exe " + pTempHTMLFile, "", 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement