Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 3243
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

VladSh wrote:
Fr0sT wrote:3) ReplaceSel после замены убирает выделение. Имхо, неудобно. Убрать выделение в скрипте намного легче, чем восстановить.
Тогда лучше дополнительным необязательным параметром, т.к. сохранить выделение - всё же очень редкая задача, которая в некоторых случаях достаточно легко решается.
Только что в нескольких скриптах столкнулся с этим... действительно, иногда неудобно восстанавливать, особенно когда размер вставляемого текста отличается от выделенного.
Я за дополнительный необязательный параметр! :D

Offline
Posts: 147
Joined: Fri Feb 08, 2008 6:41 pm
Location: British Columbia, Canada

WScript methods

Post by Surveyor »

Instructor,

Re: accessing Shell object in WScript:
Instructor wrote:var WshShell=new ActiveXObject("WScript.shell");
Thanks! (I should have thought of that...)

But, what about accessing methods of the WScript object?

Example: how do you access WScript.Quit or WScript.Sleep?

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Surveyor, WScript.Quit and WScript.Sleep are working as is.

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

Post by VladSh »

Как-то странно устанавливается фокус на кнопку у WScript.Echo, если вызывать из скрипта другой скрипт с помощью eval(AkelPad.ReadFile(...)), то при вызове из этого вызываемого скрипта фокус устанавливается, а в запускаемом скрипте - нет...
Сделайте пожалуйста чтобы фокус устанавливался всегда.


Иногда неправильно определяется ошибка.

Ситуация-1: я написал typeOf (надо typeof), а сообщение мне пишет что-то типа "Не найден объект"...

Ситуация-2: был скрипт:

Code: Select all

function test()
{
	//...
	
	{
		//...
		
		AkelPad.MessageBox(hWndEdit, "Текст", "Заголовок", /*MB_ICONEXCLAMATION*
		
		//...
	}
}
при выполнении писало "Незавершённая строковая константа" - это правильно (см. после MB_ICONEXCLAMATION).
Но курсор устанавливался очень далеко внизу, совсем в другой функции... После того, как я вынес вышеуказанный код в отдельный файл скрипта и попытался его выполнить, то курсор установился на последнюю строку скрипта, т.е. на последнюю закрывающую скобку.
Всё это очень неудобно - долго искать, в чём ошибка...
Можно ли поправить?

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

Post by Infocatcher »

VladSh wrote:Ситуация-1: я написал typeOf (надо typeof), а сообщение мне пишет что-то типа "Не найден объект"...
Ну, в принципе, он и не найден. Только нормальные интерпретаторы обычно выдают что-то вроде
Ошибка: typeOf is not defined

Тут, кстати, должно сообщать
'typeOf' - определение отсутствует

Или это от версии wscript.exe & Co зависит.

И, думается, плагин не занимается выдачей таких вот сообщений. И сделать тут ничего не удастся. Если только не написать свой «валидатор» или взять готовый. Но это очень большой велосипед выйдет.
В IE вон тоже неадекватные сообщения об ошибках случаются – движок-то тот же самый.

P.S. Кстати, да. Хорошо бы и правда какую-нибудь консоль и API для вывода туда сообщений.

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

Post by FeyFre »

Хотелка... Нет, даже не хотелка, а потребность.
Добавить в скрипты в функции MemCopy, MemRead тип DT_BYTE. Надо. Некоторое API работает с байтами до сих пор, да и буфера обратывать побайтно есть нужда.

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

Post by Instructor »

FeyFre
Хотелка...
Пример?

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

Post by FeyFre »

Instructor
  1. WinUser.h определяет достаточное количество функций и структур которые содержат байтовые буфера. Вот пример функции.

    Code: Select all

    WINUSERAPI
    BOOL
    WINAPI
    SetLayeredWindowAttributes(
        __in HWND hwnd,
        __in COLORREF crKey,
        __in BYTE bAlpha,
        __in DWORD dwFlags);
    Да и в других файлах есть (особенно связанных с коммуникациями структурах, например тот же DCB для работы с последовательным портом)
  2. А если мне просто нужно прочитать бинарный файл, и распарить его, или наоборот что-то записать в него? А делать это я буду через буффер AkelPad.MemAlloc() с которым буду работать побайтно, ведь может же быть размер файла нечётный.
  3. Делаю сейчас связку Zen-Coding <-> AkelPad, и там нужно реализовать чтение/запись бинарных файлов(для вставки inline данных в ссылку, например <img src="data:image/gif;base64, <кодированное-содержимое>" alt=""/>) и выдать содержимое нагора, а я не могу прочитать из буффера меньше чем 2 байта.

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

Post by Instructor »

FeyFre
Посмотрим.

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

Post by Instructor »

Добавлено: опциональный параметр для выделения вставленного текста в метод ReplaceSel().

Added: optional parameter for the pasted text selection in the ReplaceSel() method.


Scripts plugin v6.3

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

Post by FeyFre »

Instructor
Спасибо

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

Post by VladSh »

Instructor wrote:Добавлено: опциональный параметр для выделения вставленного текста в метод ReplaceSel().
Здорово! 8)

Только по умолчанию наверное не это
false не выделять вставленный текст (по умолчанию).
т.к. текст остаётся выделенным.


Ещё заметил трабл:
текущий скрипт не запускается по команде "Выполнить", т.е. по Ctrl+F5.. Очень было удобно производить отладку текущего скрипта.. теперь с каждым скриптом приходится назначать какую-нить комбинацию клавиш :cry:

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

Post by Instructor »

Исправлено: опциональный параметр для выделения вставленного текста в методе ReplaceSel() был всегда true.

Fixed: optional parameter for the pasted text selection in the ReplaceSel() method was always true.


Scripts plugin v6.4

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

Post by Instructor »

Ещё заметил трабл:

Code: Select all

/// Запуск открытого на редактирование скрипта.

var fso=new ActiveXObject("Scripting.FileSystemObject");
var pFileName=fso.GetFileName(AkelPad.GetEditFile(0));

AkelPad.Call("Scripts::Main", 1, pFileName);

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

Post by VladSh »

Instructor wrote:Исправлено: опциональный параметр для выделения вставленного текста в методе ReplaceSel() был всегда true.
Спасибо за оперативность! Работает! :)
Но только из Plugs-пака смог обновить, а отдельно скачивал, но версия старая..
Post Reply