Scripts plugin

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

Post by VladSh »

Instructor
Хочу поблагодарить за метод GetTextRange. С ним работа с текстом превратилась в почти чистую математику!
Почти потому, что ещё хотелось бы без проблем вставлять текст вне зависимости от того, включен SmartSel::NoSelEOL и т.п. или нет, т.е. без выделения текста методом SetSel. Для этого нужен BE-метод для записи текста в заданные границы, т.е. что-то типа

Code: Select all

AkelPad.ReplaceTextRange(pText, nRangeStart[, nRangeEnd][, bSelect]);

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

Post by FeyFre »

Прошу всё-таки реализовать какой-нибудь метод вывода сообщений в отладочную консоль! Дебаг цикла с Echo - форменное издевательство ((

Code: Select all

function TRACE(text)
{
	text = "AKELPAD: "+text+"\n";
	var buffer = AkelPad.MemAlloc(text.length*2+2);
	if(buffer)
	{
		AkelPad.MemCopy(buffer, text, 1);
		AkelPad.SystemFunction().Call("kernel32::OutputDebugStringW",buffer);
		AkelPad.MemFree(buffer);
	}
}

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

Post by Fr0sT »

FeyFre ну и что с этим чудом враждебной техники делать? Где посмотреть то, что она выводит?
Да, во избежание неверных предположений: погуглил, в мсдн прочитал. Способов применять без посторонних утилит не нашел.

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

Post by FeyFre »

Fr0sT
Спрашивали "отладочная консоль", вот я Вам и выдал как туда писать.
Смотреть можно так:
1. DBGVIEW - утилита от Sysinternals(Руссинович и Ко). Читает отладочную печать всей системы, в том числе и ядра. Финальные версии большинства приложений отладочной печати не делают, только в крайних случаях, так что не думаю что запутаетесь.
2. Любой отладчик пользовательского уровня. От NTSD до MSVS. Отображают отладочною печать тех процессов которые они отлаживают.

Без сторонней утилиты не получится ничего. Вы в отладке, а значит сухим из воды Вам не выйти. Если так нужно - организуйте логирование: в файл, в Eventlog, в Реестр. Но опять же, без сторонних утилит Вы не посмотрите ни в файл(да, файловый просмотрщик считается сторонней утилитой), ни EventLog, ни Реестр. Других способов отладки не существует(отладчики на современных процессорах сами себя отладить не могут, даже мертвый SOFTICE).

Моё дело предложить.

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

Post by Fr0sT »

Спрашивали "отладочная консоль", вот я Вам и выдал как туда писать.
Вообще подразумевалось что-то вроде консоли ошибок у Оперы. Отдельное окно, куда складируются сообщения.
Смотреть можно так
1) можно попробовать
2) а что мне этим дебаггером отлаживать? Акель, плагин? Их ещё скомпилить для этого надо.
Если так нужно - организуйте логирование: в файл, в Eventlog, в Реестр
Вот я и пытался в файл складывать. Однако почему-то вполне стандартные методы выдают ошибку. Вот и приходится велосипеды с квадратными колесами изщобретать...

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

Post by FeyFre »

Вообще подразумевалось что-то вроде консоли ошибок у Оперы. Отдельное окно, куда складируются сообщения.
Ну дык мы не на Опере что-бы сразу в то русло думать. Кроме того, то что Вы подразумевали может обеспечить только Инструктор, а раз обращения к Инструктору прямо не было, то логично было сделать вывод что Вы подразумевали что-то другое.
2) а что мне этим дебаггером отлаживать? Акель, плагин? Их ещё скомпилить для этого надо.
1. Отладчик может присосаться минимум к процессу Юзерспейс, либо к ядру. Так что имелось в виду "отладчик, присосись к процессу которые исполняет это скрип, т.е. к АкелПад".
2. Отладка не подразумевает собой автоматическое наличие:
1. Наличия исходников(можно обойтись картами, базами символов, прочим)
2. Специально скомпилированных файлов с отладочной информацией(можно отлаживать пошагово процессорный код)
3. Пошаговый проход и точки останова вообще(отладка не только для это существует, и наш случай тому подтверждение - только посмотреть отладочный вывод)

Я не знаю почему методы, которые Вы используете "сбоят", и почему во время отладки Вы боитесь запустить отладчик.
С той функцией, которую я написал, посмотреть отладочный вывод Вам особых хлопот не причинит.
Просто запустите Акел под отладчиком, например так(с командной строки):

Code: Select all

NTSD -g -G AkelPad.exe
, и работайте как работали. При каждом вызове функции в окне отладчика Вы увидите то что Вы ей скормили(+рамка которую Вы можете поменять самостоятельно). Так Вы можете натыкать вызова хоть каждую строчку.

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

Post by VladSh »

Instructor
После вызова справки с помощью LanguageHelp.js открывается процесс от AkelPad'а, который делает что-то нехорошее с прорисовкой окна редактирования... При выполнении скриптов не видно результата их выполнения, а затем, когда закрываешь справку, все изменения сразу же и отображаются.
Можно ли что-то с этим сделать? Т.к., получается, пока смотрю справку, то не могу работать в Акеле, а хотелось бы открыть справку и пусть она всё время висит, и продолжать работать с прогой.

С hh.exe происходит то же самое.

Такая строка из ContextMenu работает нормально:

Code: Select all

"Справочник JavaScript" Exec(`"hh.exe" "%a\AkelFiles\Docs\LangsHelp\JS.chm"`)
Может добавить в Scripts-плагин метод Exec по аналогии с Exec ContextMenu-плагина?

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

Post by Fr0sT »

раз обращения к Инструктору прямо не было, то логично было сделать вывод что Вы подразумевали что-то другое.
Ну вообще фраза "Прошу реализовать" в теме плагина вроде как подразумевает, что это обращение к Инструктору...
Отладка 1/2/...
Пушка и воробьи, имхо.
Просто запустите Акел под отладчиком, например так(с командной строки):
На самом деле, в этом нужды нет, с утилитой Руссиновича всё хорошо видно.
Да и в итоге она сама тоже не понадобилась - волшебным образом вывод в файл заработал! Спасибо за интересный вариант функции, но теперь в таких сложностях нет нужды :)

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

Post by KDJ »

Fr0sT wrote:KDJ
while current InputBox is a simple wrapper over WinAPI function, the thing what you want is a custom dialog window. You can create it in script, see Search script example.
Thank you very much for your advice. I use it in the script InsertText.js.

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

Post by VladSh »

Instructor
Сделайте пожалуйста окно скриптов немодальным, т.к. иногда очень неудобно работать...
Например, иногда надо открыть несколько скриптов сразу, но нажатии "Изменить" или "Выполнить", окно закрывается.
Также иногда было бы неплохо сделать изменения в скрипте без закрытия окна скриптов, а потом протестить вновь.
Или удобно было бы иметь возможность запускать последовательно несколько скриптов из окошка.

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

Post by se7h »

VladSh wrote:Instructor
Сделайте пожалуйста окно скриптов немодальным, т.к. иногда очень неудобно работать...
Например, иногда надо открыть несколько скриптов сразу, но нажатии "Изменить" или "Выполнить", окно закрывается.
Также иногда было бы неплохо сделать изменения в скрипте без закрытия окна скриптов, а потом протестить вновь.
Или удобно было бы иметь возможность запускать последовательно несколько скриптов из окошка.
поддерживаю, может вообще убрать модальные окна в плагинах? разве есть моменты, когда без них не обойтись?

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

Post by FeyFre »

Fr0sT wrote:Это-то понятно, коллбэк средствами JS никак не сэмулируешь.
Хоть и это утверждение с первого взгляда сомнений не вызывает, я даже с ним неявно согласился, но:

Хотелка: поддержка CALLBACK. Т.е. что-бы можно было со скрипта вызвать функции которые требуют указатели на CALLBACK функции(оконные/диалоговые процедуры, перечислители, фильтры, сравнения).
Я думал что это не возможно, пока не напоролся на готовую реализацию нативных вызовов в скриптовой функции(только это не на JS)

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

Post by Fr0sT »

FeyFre, ого! А кинь ссылку на эту реализацию, зело любопытно!

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

FeyFre wrote:Я думал что это не возможно, пока не напоролся на готовую реализацию нативных вызовов в скриптовой функции
Да, к примеру, это умеет Gentee (http://gentee.com/). Причем исходники Gentee открыты - на тот случай, если кто захочет в них покопаться. Но это, конечно, не JScript :)

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

Post by FeyFre »

Fr0sT
Как я уже говорил - это реализация не для JS.
C/Invoke. Есть биндинги для Lua, Java, Kite GTK-server.
Меня собственно интересовали биндинги на Lua, ну и оффсайт выдал мне сюда ссылку. Я вчера проанализировал код: час разбирался у чего и откуда растут тентакли, м чему и в какую дырку они входят, но потом стало всё очень даже ясно. Впечатлил список поддерживаемых ОСей, архитиктур и компиляторов(а также соглашений вызовов).
Post Reply