Log plugin

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

Post by Instructor »

Исправлено: дублирование сообщения об остановке плагина (Log::Watch).

Fixed: message duplication about plugin stopping (Log::Watch).


Log plugin v2.3

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

Post by Instructor »

Изменено: отсортированы флаги приемника для вывода (Log::Output).
Добавлено: флаг вывода в выделение, либо весь документ, если нет выделения (Log::Output).

Changed: sorted output target flags (Log::Output).
Added: flag to output in selection or all document if selection is empty (Log::Output).


Log plugin v2.4

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

Post by Instructor »

Добавлено: соответствие вхождений регулярного выражения "/FRAME", для перехода к вкладке по дескриптору данных (Log::Output).

Added: pattern matches map item "/FRAME" to jump to frame by data handle (Log::Output).


Log plugin v2.5

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

Post by Instructor »

Изменено: требуется AkelPad версии 4.7.6 или выше (Log::Output).
Изменено: шаблон регулярного выражения для Microsoft/GCC (Log::Output).

Changed: AkelPad 4.7.6 or higher required (Log::Output).
Changed: regular expressions pattern for Microsoft/GCC (Log::Output).


Log plugin v2.7

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

Post by VladSh »

Просьба сделать, чтобы в панели лога полосы прокруток автоматически скрывались, если текст нормально помещается (сейчас они просто дизаблятся). Когда работаешь на ноуте, то место по вертикали становится ещё более ценным))

Ещё было бы удобно при одинарном клике на заголовке панели лога сворачивать её. Чтобы было видно, что можно сворачивать, можно добавить стрелку-значок с направлением вниз.

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

Post by VladSh »

Пришлось плотно поработать с плагом из Scripts'а (пишу здесь, в одну тему, т.к. это всё взаимосвязано), есть несколько предложений по усовершенствованию.

1. Добавить в Scripts-плаг упрощённый метод вывода текста в панель Лога (например Log), по аналогии с Messagebox и Echo, т.к. хвост этих параметров напрягает:

Code: Select all

AkelPad.Call("Log::Output", 5, pText + "\r", -1, 1);
И сделать так, чтобы параметр "замена/добавление" был необязательным (в п.2 об этом подробнее).

2. В половине случаев удобно, чтобы текст заменял то, что уже выводилось в панель, а в другой - чтобы добавлялось. На ум приходит "быстрая" опция. Удобно было бы в интерфейсе панели плага, в контекстном меню, добавить пункт-галку "Очищать при каждой новой записи", т.о. можно было бы по желанию переключать режим.

По обоим пунктам (зачем необязательный параметр).
Предлагаю при вызове по том коду, который привёл выше, не учитывать галку в интерфейсе, а по упрощённому методу учитывать. Т.о. можно одновременно вести отладку (Log) и работать из обычных скриптов (они должны выполняться, как в них запрограммировано).

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

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

Post by Instructor »

Изменено: требуется AkelPad версии 4.7.8 или выше (Log::Output).

Changed: AkelPad 4.7.8 or higher required (Log::Output).


Log plugin v2.9

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Чет не пойму, как его заставить к нужной строке переходить.

Нашел вот такую фигнюшку: JavaScript Lint (уж не знаю, норм верифаер или фуфло - кто подскажет чет получше, скажу "спасибо").
В скрипте прописываю:

Code: Select all

var f = AkelPad.GetEditFile(0);
AkelPad.Call("Log::Output", 1, AkelPad.GetAkelDir(1) + "/Tools/jsl.exe -process \"" + GetFileName(f) +
    "\" -output-format \"__FILENAME__\t__LINE__\t__ERROR__\" -nologo -nofilelisting", GetParent(f),
    "^(.+)\t(\d+)", "/FILE=$1 /GOTOLINE=$2:1");
Ворнинги нормально форматируются, но плагином не распознаются. Пробовал и с другими разделителями.

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

Post by Instructor »

F. Phoenix
"^(.+)\t(\d+)"
А вообще тут можно и без скрипта:

Code: Select all

-"JavaScript Lint" Call("Log::Output", 1, `"%a\AkelFiles\Tools\jsl-0.3.0\jsl.exe" -process "%f" -output-format "__FILENAME__	__LINE__	__ERROR__" -nologo -nofilelisting`, "%d", "^(.+)\t(\d+)", "/FILE=$1 /GOTOLINE=$2:1") Icon("%a\AkelFiles\Plugs\Log.dll", 1)

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

А, да, забыл, что двойной бэкслеш нужен... В JS кстати никак нельзя экранирование отключать?

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

Post by Infocatcher »

(http://forum.ru-board.com/topic.cgi?for ... rt=2200#17)
VSHY wrote:Запустить скрипт SearchReplace.js, убрать галку "Регулярные выражения", в поле "Что:" ввести искомый текст, нажать кнопку "Найти все" - автоматически откроется окно вывода Log-плагина (естественно, он д.б. установлен) с полученным результатом.
Автоматического перехода на соотв. строки Log-плагин пока (я надеюсь, что пока) не поддерживает
Поддерживает: двойным кликом по строке очень даже переходит.

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

Post by VladSh »

Instructor
Конечно может это слишком.. но хотелось бы возможность настраивать контекстное меню окна консоли, чтобы впендюривать туда свои скрипты :)
Чтобы плаг не разрастался, то можно, например, жёстко в нём вбить использование какого-нибудь подменю из ContextMenu::Show, например зарезервировать наименование LOGEXT, а мы уже это подменю будем сами набирать, как захотим. Т.е. саму менюху Log-плагина нам вообще не надо будет трогать, и доступ к ней не будет нужен:
Копировать
Выделить всё
Очистить
---
;А тут как простыня вкладывается наше меню; если нет плага ContextMenu или нет в нём этого меню или оно пустое, то не отображать эту строку в меню и всё
Include("LOGEXT")
---
Настройки...
Предполагаю, что это будет хорошо, чем нет :)

Infocatcher
Не знал, спасибо! :shock: :D
Instructor, это мега-круто! 8)
Last edited by VladSh on Thu Sep 13, 2012 10:50 am, edited 1 time in total.

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

Post by Infocatcher »

О, а ведь еще есть сочетания клавиш «Следующее вхождение» и «Предыдущее вхождение». :)

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

Post by VladSh »

Infocatcher
Где Вы всё это находите? :)

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

Post by FeyFre »

Есть такой вот вызов(из тулбара)

Code: Select all

-"Build" Call("Log::Output",1, '"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE" e:\DISTRICT\VS\BlankList\BlankList.dsw /MAKE "BlankList - Win32 Debug"',"e:\DISTRICT\VS\BlankList","(.*)\((\d+)\) : error|warning","/FILE=$1 /GOTOLINE=$2:1",-1,-1,2)
Суть - откомпилировать указанный проект, вывести в лог-окно приветы компилятора и двойным щелчком по строке с ошибкой/предупреждением перейти к месту. Запускаю - работает. ОК. Выдает приблизительно такое
--------------------Configuration: BlankList - Win32 Debug--------------------
Compiling...
BlankList.cpp
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786: 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(306) : see reference to class template instantiation 'std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786: 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::const_iterator' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(306) : see reference to class template instantiation 'std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786: 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::iterator' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(306) : see reference to class template instantiation 'std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786: 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Node' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(306) : see reference to class template instantiation 'std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786: 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::const_iterator' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<int,std::pair<int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(306) : see reference to class template instantiation 'std::map<int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<int>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' being compiled
e:\DISTRICT\VS\BlankList\BlankList.cpp(338) : error C2065: 'COperatorDialog' : undeclared identifier
e:\DISTRICT\VS\BlankList\BlankList.cpp(338) : error C2146: syntax error : missing ';' before identifier 'dlg'
и ещё приблизительно сотня ошибок

Двойной щелчек по строке ошибкой error - открыло, перешло, всё ок. Двойной щелчек по строке с warning - AkelPad молча уходит на перекур. Без "отчета разработчику".
Поймал момент отладчиком.

Code: Select all

>	ntdll.dll!wcstol()  + 0x248	
 	ntdll.dll!wcstol()  + 0x1a6	
 	ntdll.dll!wcstol()  + 0x116	
 	ntdll.dll!KiUserExceptionDispatcher()  + 0xe	
 	ntdll.dll!RtlConvertUlongToLargeInteger()  + 0x3c	
(последние две строчки повторяются чуть более чем дофига раз)

Ошибка исключения показанная отладчиком

Code: Select all

Unhandled exception at 0x7c92a9cf (ntdll.dll) in akelpad.exe: 0xC0000005: Access violation writing location 0x00030ffc.
Зона памяти 0x00030000-0x00130000 - стек(1МБ)

Code: Select all

EAX = 00031024 
EBX = 00031400 
ECX = 7C9B3000 
EDX = 00251E9C 
ESI = 7C900000 
EDI = 7C9032BC 
EIP = 7C92A9CF 
ESP = 00031000 
EBP = 00031028 
EFL = 00000283 

Возможно проблема с пробелами в именах, а может быть и нет. Попробовать пока негде.
Post Reply