Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
oSet.Begin все делает правильно - выдает 0, если ini файла не существует.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Хы, как-то я не уловил этот момент из доки.
Неплохо бы что-нибудь соответствующее дописать.
Или пример дополнить, скажем, так:

Code: Select all

  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();
  }

У меня есть смутные подозрения, что нечто вроде уже обсуждалось, но...
Мне кажется, в модуль чтения/записи настроек надо бы встроить вывод сообщений об ошибках.
Потому как если нельзя прочитать или записать, то скрипт вряд ли будет работать правильно. Да и не нормально это, когда прав нету или еще какие ошибки идут.
Ну, и чтобы в каждом скрипте проверок кучу не вставлять.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Делаем пустой read-only ini, а ошибки не происходит:

Code: Select all

var oSet = AkelPad.ScriptSettings();
if(oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/)) {
	WScript.Echo("Writed: " + oSet.Write("test", 3 /*PO_STRING*/, "value"));
	oSet.End();
}
То есть мало того, что не ругается, так еще и API обманывает. :)

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
См. возвращаемое значение "oSet.End();". Этот метод сохраняет файл.

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

Опять стало повторяться "После последовательно Undo-Redo все символы переноса строки, попавшие в Undo, становятся из умолчательных r+n в r.", но теперь - при использовании скриптов. Поэтому пишу сюда...

Проверял на чистой установке (причем даже обновился через апдейтер), только "SpecialChar" и "Scripts" плагины:
- Открываем AkelPad; вводим: "1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1"; выделяем, допустим, все, кроме двух первых и двух последних строк;
- Вызываем скрипт "SearchReplace.js"; вводим "Что:" - "1"; "Чем:" - "1"; ставим галочку "В выделении"; жмем "Заменить все";
- Делаем "Undo" "Redo";
- Переносы в выделении стали из "rn" в "r".

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post 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.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

может можно добавить параметр, чтобы окно не вылетало
viewtopic.php?p=18657#p18657

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

RegisterCallback method from ActiveX does not work.
Wscript crashes when you run this script:
wscript.exe test.js

Code: Select all

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;
}

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post 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.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor, thank you very much, waiting for the new version.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post 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.


Scripts plugin v11.2

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Отлично, что при открытии Hotkey-плага видно красным дублирующиеся комбинации! Правда сыпет много сообщениями.
Но теперь повторное нажатие кнопки задания комбинации клавиш (комбинация длинная, всю не видно было, и я не помнил, нажимал или ешё нет) на той же строке в окне скриптов выводит предупреждающее сообщение, которое можно было бы не выводить, т.е. просто ничего не делать. Либо дизаблить кнопку задания, чтобы видно было, задал или нет.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Почему-то

Code: Select all

AkelPad.SaveFile(AkelPad.GetEditWnd(), WScript.ScriptFullName, 65001, true);
сохраняет без BOM.
Причем

Code: Select all

AkelPad.SaveFile(AkelPad.GetEditWnd(), WScript.ScriptFullName, 65001, 1);
работает.
С чтением, вроде бы, все нормально.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Я так понимаю, AkelPad.SaveFile() не позволяет указать формат новой строки? Неплохо бы добавить.
И все-таки очень хотелось бы увидеть сохранение строки в файл. А то WSH только две кодировки умеет.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher wrote:А то WSH только две кодировки умеет.
Да, это печаль ((
Post Reply