Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor
Sorry, I was wrong again. Yes, all works fine!
I forgot to replace C:\Windows\system32\Scripts.dll with the new version.

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

Post by Instructor »

VladSh wrote:...без сообщения...
См. Scripts v17.6.

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

Post by Instructor »

Добавлено: необязательные параметры в метод AkelPad.Include - nFlags, nCodePage, bBOM.

Added: optional paremeters in AkelPad.Include method - nFlags, nCodePage, bBOM.


Scripts plugin v17.6

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

Post by VladSh »

Instructor wrote:Добавлено: необязательные параметры в метод AkelPad.Include - nFlags...
Работает, спасибо!

А могли бы Вы сделать этот флаг по умолчанию? Потому что множество скриптов (не только моих) имеют такую конструкцию и не ожидают сообщения:

Code: Select all

if (!AkelPad.Include("libfile.js")) WScript.Quit();
или

Code: Select all

if (!AkelPad.Include("libfile.js")) {
   ...
}
else {
   ...
}

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

VladSh wrote:А могли бы Вы сделать этот флаг по умолчанию?
А зачем? Из справки:
Метод Include аналогичен коду eval(AkelPad.ReadFile("...")), но позволяет выявлять место ошибки в добавляемом файле, если она присутствует.
т.е. фактически с самого начала по сути используется:

Code: Select all

AkelPad.Include("libfile.js", 0xD /*ADT_BINARYERROR|ADT_DETECTCODEPAGE|ADT_DETECTBOM*/);
Разве этого не хватает?

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

Post by VladSh »

Skif_off wrote:Разве этого не хватает?
Раньше сообщения об отсутствии подключаемого скрипта не было. Были написаны скрипты с учётом этого. Я прошу поставить флаг, подавляющий появление сообщения по умолчанию, чтобы все не переделывали скрипты. Случаи, где бы это сообщение было нужно, единичны, если вообще есть.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

VladSh
Прошу прощения, чего-то недопонимаю: взал скрипт с

Code: Select all

if (! AkelPad.Include("CreateDialog_functions.js")) WScript.Quit();
скопировал в Include первый попавшийся бинарник, переименовал его в CreateDialog_functions.js, запустил скрипт - молча срабатывает WScript.Quit().

Code: Select all

AkelPad.Include
...
  nFlags
    См. описание nFlags метода AkelPad.ReadFile.
и

Code: Select all

AkelPad.ReadFile
...
  nFlags
    0x001  //OD_ADT_BINARYERROR     Проверить является ли файл бинарным.
    0x002  //OD_ADT_REGCODEPAGE     Если кодировка файла была сохранена в реестре, то она будет использована
           //                        с флагом OD_ADT_DETECTBOM, если нет, то следующие флаги будут использованы
           //                        OD_ADT_DETECTCODEPAGE|OD_ADT_DETECTBOM.
    0x004  //OD_ADT_DETECTCODEPAGE  Определить кодировку.
    0x008  //OD_ADT_DETECTBOM       Определить наличие сигнатуры BOM.
    0x010  //OD_ADT_NOMESSAGES      Не выводить сообщения при ошибке автоопределения.
    0x020  //OD_ADT_ONLYBOM         Определить кодировку, только если присутствует сигнатура BOM, иначе будет использована кодировка по умолчанию.
    0x100  //OD_REOPEN              Не создавать новое окно, использовать имеющееся.
    0x200  //OD_NOSCROLL            Не восстанавливать прокрутку текста.
           //По умолчанию 0xD       (OD_ADT_BINARYERROR|OD_ADT_DETECTCODEPAGE|OD_ADT_DETECTBOM).
, при этом в любом случае AkelPad.Include() возвращает true или false.
Кажется, не понял ни зачем nFlags в AkelPad.Include, ни вашу просьбу :)

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

Post by VladSh »

Skif_off
Моя просьба не про бинарники (я ж не бинарники подключаю). А в случае, когда подключаемый файл отсутствует, не выдавать об этом сообщения.
Используя Ваш код, попробуйте удалить CreateDialog_functions.js и запустить скрипт, увидите о чём я говорю.
/Кстати, недавно был такой случай в "Дискуссии скриптов" - человек когда-то давно, когда не было этого сообщения, написал скрипт, в котором сделал подключение на какой-то свой файл; при определённых начальных параметрах у другого человека произошло попадание на эту строку и вылет этой ошибки. И никого не найдёшь и не узнаешь, что это за подключаемый файл, и что в нём должно быть. Хотя и без этого файла всё нормально работает, только ошибку кажет, которая ни к чему совершенно./

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

VladSh wrote:Моя просьба не про бинарники (я ж не бинарники подключаю).
Имел в виду пример ошибки, когда AkelPad.Include() не сможет прочитать файл и вернёт false, про отсутствие файла не подумал, ибо не сталкивался. Но как помогут nFlags метода AkelPad.ReadFile()?
/Припоминаю, кажется, SearchReplace_cml.js и SearchReplace_multi.js, у себя оставил Multi_SR.js./

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

Post by VladSh »

Skif_off wrote:Но как помогут nFlags метода AkelPad.ReadFile()?

Code: Select all

if (!AkelPad.Include("nonexist.js", 0x10)) {
	WScript.Echo("А сообщения об ошибке-то и нет :)");
}

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor
Странное поведение Системного меню или сочетания клавиш Alt + Space. Скрипты для примера: "SortLines.js", "LinesFilter.js".
Открыв меню (Alt + Space), выбрав стрелками вверх или вниз пункт, например: "Закрыть Alt+F4" жмем Enter - команда не проходит.
Опять появляется меню. Если в первый раз, сразу после открытия меню, нажать Alt, оно закроется, но Esc сработает только со второго раза.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

VladSh
Спасибо, кажется, я отупел :)) Всегда думал, что тут

Code: Select all

0x10  //ADT_NOMESSAGES      Не выводить сообщения при ошибке автоопределения.
речь об ошибке определения кодировки/BOM и только.

Тогда nFlags должно быть равно 0x1C (ADT_DETECTCODEPAGE|ADT_DETECTBOM|ADT_NOMESSAGES)?

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

Post by Instructor »

Kley
Надо на AkelPad.CreateDialog скрипты переделывать.

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor wrote:Надо на AkelPad.CreateDialog скрипты переделывать.
Ну, что же будем переделывать, со временем.:) А пока нашел для себя по-проще:

Code: Select all

AkelPad.WindowGetMessage(0x4 /*WGM_NOKEYSEND*/);
Instructor, как вы думаете - это костыль или нормальное решение?

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

Post by Instructor »

Kley
Это даже не костыль, а именно то, для чего этот флаг реализовывался. Реализовать реализовал, а в скрипты не добавил. Переделывание на AkelPad.CreateDialog даст немного другое - поддержку горячих клавиш вызова элемента управления (в том числе поддержку кнопки по умолчанию).

П.С. Флаг указан правильно, только расшифровка WGM_KEYDOWNUP.
Post Reply