var oSet=AkelPad.ScriptSettings();
pString="default value";
bMultiline=0;
if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
pString=oSet.Read("String", 3 /*PO_STRING*/);
bMultiline=oSet.Read("Multiline", 1 /*PO_DWORD*/);
oSet.End();
}
У меня есть смутные подозрения, что нечто вроде уже обсуждалось, но...
Мне кажется, в модуль чтения/записи настроек надо бы встроить вывод сообщений об ошибках.
Потому как если нельзя прочитать или записать, то скрипт вряд ли будет работать правильно. Да и не нормально это, когда прав нету или еще какие ошибки идут.
Ну, и чтобы в каждом скрипте проверок кучу не вставлять.
Posted: Mon Jun 18, 2012 6:47 am
by Infocatcher
Делаем пустой read-only ini, а ошибки не происходит:
Проверял на чистой установке (причем даже обновился через апдейтер), только "SpecialChar" и "Scripts" плагины:
- Открываем AkelPad; вводим: "1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1"; выделяем, допустим, все, кроме двух первых и двух последних строк;
- Вызываем скрипт "SearchReplace.js"; вводим "Что:" - "1"; "Чем:" - "1"; ставим галочку "В выделении"; жмем "Заменить все";
- Делаем "Undo" "Redo";
- Переносы в выделении стали из "rn" в "r".
Posted: Wed Jul 04, 2012 7:29 pm
by KDJ
For me, "\r\n" sometimes converts to "\n".
After saving this, in one file there are two formats of new line: Windows ("\r\n") and Unix ("\n") or Windows and Mac ("\r").
And how to find a line ending with "\r" or "\n"?
Find with regular expressions:
\r[^\n]
or
[^\r]\n
does not work.
var AkelPad=new ActiveXObject("AkelPad.Document");
var oSys=AkelPad.SystemFunction();
var lpEnumWindowsCallback;
var nStopAfter=3;
if (lpEnumWindowsCallback=oSys.RegisterCallback("EnumWindowsProc"))
{
oSys.Call("user32::EnumWindows", lpEnumWindowsCallback, 0);
oSys.UnregisterCallback(lpEnumWindowsCallback);
}
function EnumWindowsProc(hWnd, lParam)
{
//Convert hWnd to hex
if (hWnd < 0) hWnd=(0xFFFFFFFF + 1) + hWnd;
hWnd="0x" + hWnd.toString(16).toUpperCase();
//Show parameters
WScript.Echo("hWnd=" + hWnd + "; lParam=" + lParam);
if (--nStopAfter <= 0)
return false;
else
return true;
}
Posted: Sat Jul 14, 2012 4:46 pm
by Instructor
KDJ wrote:And how to find a line ending with "\r" or "\n"?
Added: arguments in AkelPad.GetTextRange, AkelPad.GetSelText methods to retrieve text in new line format without changing.
Added: RegisterCallback now works in ActiveX, using two additional arguments.
Will be available after 4.7.7 release.
Posted: Sat Jul 14, 2012 8:18 pm
by KDJ
Instructor, thank you very much, waiting for the new version.
Posted: Tue Jul 24, 2012 3:15 pm
by Instructor
Добавлено: в методы AkelPad.GetTextRange, AkelPad.GetSelText аргумент для получения текста с форматом новой строки без изменения. Добавлено: RegisterCallback теперь работает в ActiveX, используя два дополнительных аргумента.
Added: arguments in AkelPad.GetTextRange, AkelPad.GetSelText methods to retrieve text in new line format without changing. Added: RegisterCallback now works in ActiveX, using two additional arguments.
Отлично, что при открытии Hotkey-плага видно красным дублирующиеся комбинации! Правда сыпет много сообщениями.
Но теперь повторное нажатие кнопки задания комбинации клавиш (комбинация длинная, всю не видно было, и я не помнил, нажимал или ешё нет) на той же строке в окне скриптов выводит предупреждающее сообщение, которое можно было бы не выводить, т.е. просто ничего не делать. Либо дизаблить кнопку задания, чтобы видно было, задал или нет.
Я так понимаю, AkelPad.SaveFile() не позволяет указать формат новой строки? Неплохо бы добавить.
И все-таки очень хотелось бы увидеть сохранение строки в файл. А то WSH только две кодировки умеет.
Posted: Wed Jul 25, 2012 1:12 am
by VladSh
Infocatcher wrote:А то WSH только две кодировки умеет.