Log plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Не расскажите как это сделать?
В смысле автозапуск фунцкии которая этого не поддерживает? Это делается параметрами запуска программы. Установите параметра редактора CmdLineBegin или CmdLineEnd в следующее: /Call("Log::Output") и будет Вам счастье.(Что это за параметры можно почитать в документации. )
А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается, да и не нужно это Вам сейчас.

Offline
Posts: 14
Joined: Tue Feb 21, 2012 9:55 am
Location: Voronezh

Post by Sergeyka »

Работает, спасибо!

Code: Select all

А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается
Ок. Будут вопросы, буду задавать вопросы в соответствующую ветку.

Offline
Posts: 14
Joined: Tue Feb 21, 2012 9:55 am
Location: Voronezh

Post by Sergeyka »

Почему-то в LogView не в реальном времени обновляется информация...
Вот запустил я эмулятор. В коммандной строке бегут цифры - это функция Print работает.

А когда запустил через LogView - то появляется первоначальное сообщение. А цифры появятся только после того, как закрою эмулятор.

Для ясности, записал видео - http://dump.ru/file/5619554


з.ы. В настройках Watch выставлял как 1, 100 и сейчас стоит тысяча мс - ничего не меняется..

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

Post by FeyFre »

Sergeyka
Попробовал у себя - текст подтягивается по мере поступления, а не потом. Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести). В любом случае, у нас есть два неизвестных: страдает ли чемто специфическим Ваш эмулятор(на сколько он отличается в работе от COMSPEC), и Ваша система(Не свихнули Вы ей случайно мозги? Бывает.).

Offline
Posts: 14
Joined: Tue Feb 21, 2012 9:55 am
Location: Voronezh

Post by Sergeyka »

FeyFre wrote:Sergeyka
Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести).
Хм..Вполне. С недавних пор автор заявил о поддержке Decoda(lua debugger), т.ч. вполне может быть.
Та-же команда ping -t100 ya.ru - нормально отрабатывает. Кстати, официальный эмулятор(или симулятор) вообще не запускается. Вернее запускается, но все идет в консоль, а окна самой игры нет=)
FeyFre wrote: Ваша система(Не свихнули Вы ей случайно мозги? Бывает.).
Это тоже может быть, т.к. системе уже где-то 5 лет, а экспериментов проводилось на ней множество =) Лениво переставлять проги. Проще (вернее интереснее) найти решение проблемы и обезвредить.

Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль.

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

Post by DV »

Sergeyka wrote:Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль.
Тоже вариант. А идея перехвата в LogView по большей части в том, чтобы всё было как бы частью интерфейса одной программы (AkelPad), без дополнительных консольных окон (которые приходится каждый раз закрывать вручную).
Что касается задержки в появлении сообщений, то это вина самой запускаемой программы + механизма перенаправления Windows. Если консольная программа явно вызывает fflush() при каждом выводе текста, то этот текст появится тут же, без задержек. (Команда fflush заставляет обработать буфер вывода немедленно.) Иначе (без fflush) механизм перенаправления консольного вывода может просто накапливать текст в своём внутреннем буфере и показать его только по заполнению этого буфера или уже по завершению работы консольной программы.

Offline
Posts: 14
Joined: Tue Feb 21, 2012 9:55 am
Location: Voronezh

Post by Sergeyka »

DV wrote: и показать его только по заполнению этого буфера или уже по завершению работы консольной программы.
А в саму консоль отправляется-то в реальном времени. Но это наверное заморочки симулятора.

Мне бы теперь разобраться с запуском через Ctrl+F5. Эту проблему я описал в треде "Найденные баги"..
update:
Моя ошибка была. Все отписал там-же, в "багах".

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

Post by Fr0sT »

Сам писал эмулятор консольных прог с перехватом вывода, и так и не одолел проблему буферизации. Практически все сишные проги страдают от этого недостатка. Решить можно разве что сканированием окна консоли, но это изврат. Так что юзаем что дают.

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

Post by Instructor »

Добавлено: поддержка автозагрузки для Log::Output.

Added: autoload support for Log::Output .


Log plugin v1.5

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

Post by FeyFre »

Всё-таки настаиваю на фичреквесте, а то немного начинает надоедать.

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

Post by Instructor »

FeyFre
Log и Sessions теперь передают TRUE в lParam.

Code: Select all

SendMessage(hMainWnd, WM_COMMAND, IDM_FILE_NEW, TRUE)
Также из Sessions убран внешний вызов с кодом 11.

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

Post by DV »

Научился ронять плагин Log...
Воспроизведение сводится вот к чему:
Из скрипта запускаем

Code: Select all

AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", "");
Плагин Log показывает "Press any key to continue . . . " и, очевидно, ждёт ввода.
Но мы вместо этого опять запускаем

Code: Select all

AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", "");
Судя по всему, плагин не блокирует отработку этого действия.
Теперь нажимаем на крестик плагина Log, и весь AkelPad падает.

(Понимаю, что в данном случае с обёрткой "cmd /c ... || pause" я не очень прав, но плагин-то всё равно падать не должен.)

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

Post by Instructor »

Исправлено: запуск новой команды, когда предыдущая еще выполняется (Log::Output).

Fixed: new command launch when the previous one is still running (Log::Output).


Log plugin v1.7

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

Post by DV »

А как обстоят дела у плагина Log с переменнными окружения?
Вопрос не праздный, потому что скрипт RunMe.js для сборки файлов .cpp устанавливает переменные PATH, INCLUDE и LIB - и при запуске с помощью WshShell.Run или AkelPad.Exec всё работает. А при запуске с помощью AkelPad.Call("Log::Output", 1, cmd, dir) получаем "'cl' is not recognized as an internal or external command, operable program or batch file."

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

Post by FeyFre »

DV, на сколько я понимаю окружение наследуется от процесса. По крайней мере Call("Log::Output",1,"%comspec% /c blah",...) работает(пару версий назад аналогичный вызов через ГУЙ переменные не подставлял). Если нужно особые установить, то придется скорее всего писать батничек. Хотя действительно чего-то типа /usr/bin/env для винды не помешает.
Post Reply