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 »

VladSh
Эта штука только для папки Plugins работает или можно передавать внешний (не AkelPad\...) путь?
Как видите работает только относительный путь и, забыл написать, данный метод ("..\\Sessions") будет работать, только, если программа настроена на сохранение в ini.

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

Post by VladSh »

Не увидел, потому и спрашиваю :) Если 2 точки стоят, то это не факт, что там нет какой-нибудь хитрой обработки для такого формата записи; вполне возможно, что там ещё какие-то обработчики есть, нам же, обычным пользователям, это неизвестно ))

Если используются относительные пути, то чтобы прочитать значение из AkelPad.ini надо передавать что-то типа этого: "..\AkelFiles\\AkelPad"?

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

Post by Instructor »

Добавлено: метод AkelPad.CallEx() - вызвать плагин AkelPad'а с флагами.
Добавлено: параметр "nWait" в методе AkelPad.Exec() теперь может равняться "2" - ожидать до тех пор, пока процесс не начнет ожидать ввода от пользователя, и автоматически присвоить возвращаемое значение нулю.

Added: method AkelPad.CallEx() - Call AkelPad plugin with flags.
Added: parameter "nWait" in method AkelPad.Exec() now can be "2" - waits until the specified process is waiting for user input, automatically returning 0.


Scripts plugin v9.3

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

Post by VladSh »

Предлагаю в метод Include добавить опциональный параметр: сообщать об ошибке отсутствия подключаемого скрипта или нет. И если передано True, то выводить обычное сообщение, без генерации ошибки.

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

Post by Instructor »

Добавлено: метод AkelPad.Debug() - отладить использование памяти.

Added: method AkelPad.Debug() - debug memory usage.


Scripts plugin v9.5

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

Post by Instructor »

Добавлено: метод AkelPad.GetArgValue() - получить значение аргумента по имени.

Added: method AkelPad.GetArgValue() - retrieve argument value by name.


Scripts plugin v9.6

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

Post by Infocatcher »

Instructor
А зачем было менять обработку аргументов?
Call("Scripts::Main", 1, "InsertDate.js", "`yyyy-MM-dd`")
Стало вставлять с внутренними кавычками.

А с
Call("Scripts::Main", 1, "copyPath.js", `"%f" "<file>.<ext>"`)
вообще проблемы – или кавычку передает, или пути с пробелами не понимает.

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

Post by Instructor »

Исправлено: обработка аргументов в кавычках.

Fixed: arguments parsing in quotes.


Scripts plugin v9.7

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

Post by VladSh »

Предлагаю унифицировать параметр, имеющий отрицательное значение, в SetSel, GetTextRange и т.п. с EM_EXLINEFROMCHAR.
В первых -1 и все последующие отрицательные - это последняя строка файла,
а в EM_EXLINEFROMCHAR:
-1 - текущая строка;
-2 - последняя строка файла.
Лучше сделать везде как в EM_EXLINEFROMCHAR, проще было бы ориентироваться (однообразие) и писать скрипты (не нужна дополнительная обработка логики - что-то исключать и т.п. - передал число и забыл, т.к. знаешь, что всё отработает одинаково).

Ещё (вернусь чуть назад) удобно для отладки было бы:
- в SetSel 2-й параметр необязательный;
- в при вызове Echo и закрытии путём нажатия на крестик полностью останавливать работу скрипта (я сегодня при отладке в цикле чуть опять с ума не сошёл клацать - пришлось снимать задачу).

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

Post by Instructor »

Добавлено: метод AkelPad.GetArgLine() - получить строку аргументов.
Исправлено: вызов AkelPad.GetArgValue("", "") приводил к ошибке в программе.

Added: method AkelPad.GetArgLine() - retrieve argument line.
Fixed: AkelPad.GetArgValue("", "") call cause program error.


Scripts plugin v9.8

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

Post by VladSh »

Скрипт проверки орфографии на строке

Code: Select all

var Word = new ActiveXObject("Word.application");
стал выдавать
---------------------------
Scripts плагин
---------------------------
Скрипт: C:\Program Files (x86)\AkelPad\AkelFiles\Plugs\Scripts\SpellCheckMSWord.js
Строка: 23
Символ: 7
Ошибка: Невозможно создание объекта сервером программирования объектов
Код: 800A01AD
Источник: Ошибка выполнения Microsoft JScript
---------------------------
Да Нет
---------------------------
.
Раньше такого не было, я точно помню, т.к. там ещё дальше идёт проверка if (Word) {...} и на Else выдавалось сообщение, что Word не установлен.

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
Ох мне кажется что нужно гуглить где-то в другом месте. 64-битный COM-сервер против 32-битного клиента у меня вызывают рвотные рефлексы. То ли политики какие-то запрещающие стоят, то ли суррогаты глюкавые, то ли ещё что. Не исключено что COM просто так левое приложение(АР) не пустит к себе(нужно что-бы AP приставился COM-у: AppId свой указал, за которым записаны права).

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

идея: сделать возможным выделение (удерживая shift или ctrl) сразу нескольких скриптов для дальнейшего их изменения, в случае мультивыделения кнопки "Запустить" и "Назначить" становились бы неактивными


ещё хотел задать вопрос:
AkelPad.Include всегда ругается, если подключаемый файл не найден или это можно как-то отключить (тихий режим)?

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

Post by VladSh »

Плагин вроде как-то обрабатывает js.. Можно ли к стандартному Array добавить метод indexOf, а то как-то неудобно без него?

Автор: Barmaley.e, дата: 28 января, 2010 - 21:58
В новых браузерах есть метод indexOf (как у строки).
Для остальных нужно что-то вроде:

Code: Select all

if(!Array.prototype.indexOf)
     Array.prototype.indexOf = function(searchElement, fromIndex) {
         for(var i = fromIndex||0, length = this.length; i<length; i++)
             if(this[i] == searchElement) return i;
         return -1
     };

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh, плагин как-бы в сам скрипт не лезет - без единого изменения кормит WSH.
Взято отсюда

Code: Select all

if(!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
 }
, но я не уверен в реализации(кстати Ваша тоже не совсем соотв.
ECMA262 5-th edition 15.4.4.14

Code: Select all

When the indexOf method is called with one or two arguments, the following steps are taken:
1. Let O be the result of calling ToObject passing the this value as the argument.
2. Let lenValue be the result of calling the [[Get]] internal method of O with the argument "length".
3. Let len be ToUint32(lenValue).
4. If len is 0, return -1.
5. If argument fromIndex was passed let n be ToInteger(fromIndex); else let n be 0.
6. If n ≥ len, return -1.
7. If n ≥ 0, then
	a. Let k be n.
8. Else, n<0
	a. Let k be len - abs(n).
	b. If k is less than 0, then let k be 0.
9. Repeat, while k<len
	a. Let kPresent be the result of calling the [[HasProperty]] internal method of O with argument ToString(k).
	b. If kPresent is true, then
		I. Let elementK be the result of calling the [[Get]] internal method of O with the argument ToString(k).
		II. Let same be the result of applying the Strict Equality Comparison Algorithm to searchElement and elementK.
		III. If same is true, return k.
	c. Increase k by 1.
10. Return -1.
).
Post Reply