Latest post of the previous page:
голый фар, оставлены только multiarc + конэму + плагин. вылетает в архивах стабильно.Panel Colorer — экспериментальный плагин для FAR+ConEmu
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Это не так.afan wrote:Panel Colorer дергает API FAR из отдельного потока (к сожалению, ProcessSynchroEventW работает не совсем так, как хотелось бы). Сам FAR 2 1661+ и его стандартные плагины вполне себе thread-safe, т.е. при стандартном наборе плагинов вылетать ничего не должно.
Far API — НЕ thread safe.
Дёргать из отдельных потоков нельзя. Совсем нельзя. Кроме случаев, когда в документации явно указано обратное.
Ситуация «а я вот дёрнул и пронесло» — не более, чем удачное стечение обстоятельств.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Спасибо, поправил. Исправление будет в следующей сборке.refaim wrote:Ещё один артефакт
Появляется при выключенных панелях в полноэкранном (Alt+Enter/Alt+F9) режиме.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Понял. Буду выкручиваться. Я вот по этому треду решил, что API уже thread-safe. Изначально делал по уму, через ProcessSynchroEventW, дергая его из отдельного треда, но обнаружил, что он не вызывается, когда в FAR запущена внешняя консольная программа (например, если сделать "dir|more" в каталоге с большим количеством файлов). Такое поведение -- это принципиальное ограничение консольного приложения или просто решили, что когда в FAR выполняется внешнее приложение, то плагинам ProcessSynchroEventW не нужен? Задача у меня проста -- определить момент, когда FAR отображает буфер консоли вместо своего интерфейса (и когда интерфейс обратно возвращается на экран). Понятно, что в рамках существовавших раньше плагинов это никому не надо было, а тут вот понадобилось.DrKnS wrote: Far API — НЕ thread safe.
Дёргать из отдельных потоков нельзя. Совсем нельзя. Кроме случаев, когда в документации явно указано обратное.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
В том треде - концепт, реализущий "как бы прозрачный ProcessSynchroEventW" для вызовов api из неосновных потоков. Возникли проблемы с плагинами, синхроизирующими всё самостоятельно, поэтому в основной код пока не пошло.afan wrote:Я вот по этому треду решил, что API уже thread-safe.
Фар во время работы внешнего консольного приложения "спит" и ждёт его завершения по WaitForSingleObject, вызывать ProcessSynchroEventW некому.он не вызывается, когда в FAR запущена внешняя консольная программа (например, если сделать "dir|more" в каталоге с большим количеством файлов). Такое поведение -- это принципиальное ограничение консольного приложения или просто решили, что когда в FAR выполняется внешнее приложение, то плагинам ProcessSynchroEventW не нужен?
Возможно вашу задачу можно решить через EVENT_CONSOLE_START_APPLICATION/EVENT_CONSOLE_END_APPLICATION.Задача у меня проста -- определить момент, когда FAR отображает буфер консоли вместо своего интерфейса (и когда интерфейс обратно возвращается на экран).
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Спасибо за подсказку! Попробую.DrKnS wrote:Возможно вашу задачу можно решить через EVENT_CONSOLE_START_APPLICATION/EVENT_CONSOLE_END_APPLICATION.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
В принципе, конечно, эти события работают. Но определенный процент сбоев имел место быть.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
после обновления conemu все заработало, спасибо
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
быыыылин... thread-safe, да thread-safe.
уже давно заказали бы через мантис нужное АПИ для "цветовой дифференциации штанов" - аля... "для типа диска/пути/плагиновой панели блаблабла делаем цвет такой то..".
идея то классная, но, IMHO, без поддержки ФАРа решается через одно место...
уже давно заказали бы через мантис нужное АПИ для "цветовой дифференциации штанов" - аля... "для типа диска/пути/плагиновой панели блаблабла делаем цвет такой то..".
идея то классная, но, IMHO, без поддержки ФАРа решается через одно место...
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Так опять упремся в 16 цветов консоли? Была как-то тема про Far Truemod, но затихла.Skirda wrote:аля... "для типа диска/пути/плагиновой панели блаблабла делаем цвет такой то..".
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
сегодня попробовал, фар truemod, прикольная вещь, не ожидал, что из консольного режима можно такое выжать, одна проблема падуч еще, за день теста упал около 7 раз. Поймал баги, писать на гуглокод ?
P.S. фар+колорер труемод - красота неописуемая
P.S. фар+колорер труемод - красота неописуемая
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Плагин стабильно убивает фар на (скорее всего) любых плагиновых панелях. Достаточно погонять курсор по панели немного, чтобы фар помер. У меня "успешно" прошли испытание multiarc, 7zipalt, observer, network, TrueBranch, tmppanel. Дальше эксперименты бросил.
Прилагаю посмертные логи.
Far x86 2.1668, Panel Colorer 0.92, Conemu 100906, WinXP SP3
Прилагаю посмертные логи.
Far x86 2.1668, Panel Colorer 0.92, Conemu 100906, WinXP SP3
- Attachments
-
- traps.rar
- (19.14 KiB) Downloaded 145 times
"Far... Far never changes..."
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Выпустил версию 0.93, где падений больше быть не должно. Минимально требуемая версия ConEmu теперь 100906 -- не забудьте обновиться.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Обнаружены следующие багофичи:
1. usageMeterVisible с любым аргументом делает фон панелей черным.
2. русские буквы в конфиге не поддерживаются (по крайней мере, в регэкспах).
3. как user.js и config.js взаимодействуют - непонятно. пока полностью не очистил main в config.js - расцветка из user.js не применялась. да и всякие переменные и функции из config.js в user.js не видны.
1. usageMeterVisible с любым аргументом делает фон панелей черным.
2. русские буквы в конфиге не поддерживаются (по крайней мере, в регэкспах).
3. как user.js и config.js взаимодействуют - непонятно. пока полностью не очистил main в config.js - расцветка из user.js не применялась. да и всякие переменные и функции из config.js в user.js не видны.
"Far... Far never changes..."
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
1. Выложил сборку 0.94, в которой поправлена установка usageMeterVisible в false (и приводится пример минимального файла user.js, отключающего эту полоску-индикатор).
2. Насчет русских букв посмотрю. Файл скрипта, надеюсь, сохранен как UTF-8?
3. Взаимодействуют так: сначала выполняется config.js, в нем устанавливаются переменные text, backgroundColor, image и usageMeterVisible. Затем выполняется по тому же принципу user.js, если он существует, и в этот скрипт передаются все те же параметры, что и в config.js + уже инициализированные переменные text, backgroundColor, image и usageMeterVisible. Т.е. в user.js достаточно иметь логику, которая лишь переопределяет поведение config.js.
2. Насчет русских букв посмотрю. Файл скрипта, надеюсь, сохранен как UTF-8?
3. Взаимодействуют так: сначала выполняется config.js, в нем устанавливаются переменные text, backgroundColor, image и usageMeterVisible. Затем выполняется по тому же принципу user.js, если он существует, и в этот скрипт передаются все те же параметры, что и в config.js + уже инициализированные переменные text, backgroundColor, image и usageMeterVisible. Т.е. в user.js достаточно иметь логику, которая лишь переопределяет поведение config.js.
Re: Panel Colorer — экспериментальный плагин для FAR+ConEmu
Конечно... нет. ) Нигде про это не было указано.afan wrote: 2. Насчет русских букв посмотрю. Файл скрипта, надеюсь, сохранен как UTF-8?
У меня это почему-то не работает. Посмотрим, как будет в новой версии.afan wrote:3. Взаимодействуют так:
Можно сделать, чтобы переменные-функции, которые в config.js определяются, были в user.js видимы?
"Far... Far never changes..."