ConEmu: Console Emulator — эмулятор консоли

Здесь обсуждаются темы, косвенно связанные с Far.
User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by NightRoman » Thu 19 Jun, 2008 11:05

Latest post of the previous page:

Понятно, спасибо. Но зачем так запускать Фар? Фар (и другие проги, что подгоняют буфер под окно сами) надо запускать без установки высоты буфера:
conemu /cmd far.exe

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by hoopoe » Thu 19 Jun, 2008 11:16

да, правильно... но у меня еще и ConMan там проживает... а у него есть альтернативная консоль, которая обычно немалых размеров...

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Centaur » Thu 19 Jun, 2008 11:24

Вот было бы здорово, если бы FAR рисовал панели не во весь буфер, а в размер окна. «Как mc», да.

(И сам испугался сказанного. Кажется, меня сейчас будут обвинять в ереси…)

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by hoopoe » Thu 19 Jun, 2008 12:33

не, не будут... я к конману в свое время прикручивал такой хак: фар думал что он во всю панель рисует, а на самом деле он рисовал тока в видимую область (как юниховый mc)... ток там грабля сразу всплыла: при запуске апликации фар сам, своими хуками скроллировал то, что у него под панелями вместо стандартных вызовов виндярного апи... и верхние строчки вывода просто терялись...

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by NightRoman » Fri 20 Jun, 2008 14:27

= Experimental BufferHeight 2008.06.20 from NightRoman =

*) включено исправление от hoopoe

*) принципиально реализована работа с выделением в буфер-режиме:
-- при старте устанавливаем QuickEdit режим;
-- установку "контекстное меню по правому клику" игнорируем;
-- при отрисовке учитываем выделение (это не так просто оказалось, возможно,
сделал не все правильно и оптимально).

В итоге выделение \ копирование \ вставка В ПРИНЦИПЕ заработали. Но на деле есть
неприятные странности - выделение может вдруг резко скакнуть до упора вправо или
вниз или и то и другое (причем, какое-то фальшивое выделение, оно вроде не
скопируется, и потом оптимизированая отрисовка эту фальшивую зону не будет
перерисовывать, пока там что-то не будет нарисовано).

В чем дело - понятия не имею, хотя и пытался, не моя эта область-таки. Помогайте.

EDIT: это продолжение, начало эпопеи тут
http://forum.farmanager.com/viewtopic.p ... 410#p33410

EDIT: removed obsolete archive
Last edited by NightRoman on Sun 22 Jun, 2008 11:14, edited 1 time in total.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by NightRoman » Sun 22 Jun, 2008 10:52

= Experimental BufferHeight 2008.06.22 =
начало эпопеи тут: http://forum.farmanager.com/viewtopic.p ... 410#p33410

Исправление от hoopoe было с небольшим подвохом - заданная величина BufferHeight
никогда на деле не устанавливалась, а устанавливалась величина из дефолтных
настроек консоли - исправлено.

Исправлены банальные баги в отрисовке выделения. Загадочные скачки выделения
вправо\вниз пока еще остались, но само отображение выделения теперь правильное.

В ПРИНЦИПЕ выделение работает уже почти удовлетворительно (напоминаю на всякий
случай - вся работа с выделением - мышью, копирование и вставка правым кликом).

Но дефекты (скачки выделения) надо бы устранить, конечно. Думаю, устранил бы,
зная их причину, но не знаю. Есть идеи, почему так скачет выделение иногда?

EDIT: removed obsolete archive

P.S. "Russian revolution continues!" (from today's BBC sport news)
Last edited by NightRoman on Wed 25 Jun, 2008 09:13, edited 1 time in total.

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by hoopoe » Mon 23 Jun, 2008 04:42

ну ты скоростной :D

вроде работает... а с кривой прорисовкой выделения замечена такая особенность: направление неправильного расширения выделенного прямоугольника всегда от текущей позиции мыша и в сторону от реальной консоли... т.е. поставь консоль в левый нижний угол, окно ConEmu в правый верхний и во время выделения кривой прямойгольник появится от мыша в сторону правого верхнего угла... похоже это сам диспетчер консольного окна пытается с координатами мыша поиграть...

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by NightRoman » Mon 23 Jun, 2008 10:30

hoopoe
Да, эффект "скачек выделения в сторону от окна консоли" подмечен верно и стабильно проявляется. Что ж, это уже какая-то наводка, хорошо.

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Kildor » Tue 24 Jun, 2008 14:21

Поставил утилиту, порадовала отсутствием значимых глюков и надоедавших ранее багов.

Однако после небольшой работы в редакторе вскрылись две проблемы:
1. странные глюки с пунто свитчером.
(набираю текст «qwerty», нажимаю хоткей для переконвертации, текст переконвертируется в «qцукен», при втором нажатии — в «йwerty».
Конечно можно пользоваться исключительно CtrlAltX, но это надо переучиваться, а главное — автоконвертация от этого никуда не исчезает.
При более внимательном рассмотрении получилось следующее:
Нахожусь в панелях, соответственно всё в командной строке.
раскладка En, строка qw
нажимаю Pause (для конвертации), получаю:
Ru - qц, ещё раз Pause:
En - йw, ещё раз Pause — либо предыдущий шаг, либо
En - й (либо Ru - q), Pause:
yдаляется последний символ, и BS идёт в фар.

Ещё, Qw при конвертации превращается в йц, то есть теряется информация о регистре символов.


2. Нерабочесть EditCompletion (version 3.01)
Есть файл, со строкой «test», дополнение настроено показывать завершение слова, по Tab — слово завершать. В квадратных скобках — то что фар показывает, \t — таб, | — курсор.

Ввожу te|[st], Tab, после чего получаю te\t |[st], Tab » te\t st|

Если запустить фар только с этим плагином, вдобавок ко всему начинаются глюки с раскраской и сохранением этой раскраски.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Kildor » Tue 24 Jun, 2008 14:32

Ещё, использую фар как редактор в некоторых программах (например BBLean), вызываю фар батником вида
@"%ProgramFiles%\Far\conemu.exe" /cmd=far.exe /e%2 %1

При этом получившийся редактор не реагирует на мышь, до тех пор пока не уберёшь и не восстановишь фокус на окне.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

al666
Posts: 237
Joined: Mon 04 Jul, 2005 08:55

Re: ConEmu: Console Emulator — эмулятор консоли

Post by al666 » Tue 24 Jun, 2008 14:55

Kildor wrote:набираю текст «qwerty», нажимаю хоткей для переконвертации, текст переконвертируется в «qцукен», при втором нажатии — в «йwerty»
Тот же самый глюк. PuntoSwitcher 2.96.

Если запускать консоль без ConEmu - глюк исчезает, т.е. слова транслитерируются нормально.

User avatar
Zoin
Posts: 101
Joined: Sun 11 Feb, 2007 19:28

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Zoin » Tue 24 Jun, 2008 15:01

NightRoman
Про работу с реестром соглашусь - надо всё-таки привести это дело к общепринятому виду (там дворды вроде были)

Kildor
1. Скорее всего проблемы PS а не ConEmu ибо в последнем в месте передачи ввода в фар всё слишком просто чтобы такие странные баги появлялись (и на сколько я помню в ветке уже обсуждалось что-то про PS)
2. У меня EditCompletion 3.9 beta - только что попробовал повесить завершение дополнения слова на Tab - проблема не проявляется
3. Плагин Drag&Drop случаем не установлен? А то у меня такие глюки появлялись именно из-за него

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Kildor » Tue 24 Jun, 2008 15:58

2. Ой, а где можно взять эту версию?

3. Да, видимо какой-то из плагинов свинячил.

1. Может быть, хотя и странно что на 2.8 (моя обычная версия) и на 2.96.3 ситуация идентична.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Kildor » Wed 25 Jun, 2008 05:24

2. Похоже действительно, косяки с дндропом.. :-(
Так есть ли шанс получить рабочий драгундроп в связке фар+конему?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by NightRoman » Wed 25 Jun, 2008 09:12

= Experimental BufferHeight 2008.06.25 =

Продолжение эпопеи c BufferHeight режимом: http://forum.farmanager.com/viewtopic.p ... 410#p33410
Не поленюсь описать.

ГЛАВНОЕ: ПРАВДАМИ И НЕПРАВДАМИ НОРМАЛЬНОЕ ВЫДЕЛЕНИЕ МЫШЬЮ

hoopoe зорким оком усмотрел поведение скачков выделения и, вероятно, правильно
предположил, что окно консоли само запрашивает координаты мыши. Способа с этим
бороться я не нашел, и никто ничего пока не предложил, поэтому я выбрал путь
"если мышь не идет к окну, то окно идет к мыши", а именно, перед посылкой
мышиных событий в консольное окно я двигаю его "под мышь", так что оно,
запрашивая координаты мыши, вообще-то и получает их правильными. LOL,
работает!

Но была еще одна проблема уже после этого - редкие, но все же ненужные скачки
выделения в левый верхний угол. Опять не знаю, почему они, но если я убираю из
кода строку SetParent(hConWnd, hWnd), то эти скачки исчезают. Поскольку я не
знаю, зачем именно эта строка, и не вижу, что без нее не будет работать, я ее
пока убираю, тестируем, сообщаем, что именно отвалилось, буду ремонтировать уже
для нового подхода.

НЕ ГЛАВНОЕ, НО ВАЖНОЕ: КОЕ-КАКАЯ КОСМЕТИКА, НАДО ПОТЕСТИРОВАТЬ

1) Почему-то в консоль не посылалось событие WM_MOUSEWHEEL (как мышиное) -
теперь посылаем, как мышиное (это однозначно нужно для нового кода).
2) Почему-то в консоль не посылалось событие WM_RBUTTONUP (вообще) - теперь
посылаем вместе с остальными мышиными событиями.
3) Почему-то событие WM_RBUTTONDBLCLK перед посылкой заменялось на
WM_RBUTTONDOWN - теперь этого не делаем, посылаем, как есть.

ПРИМЕЧАНИЕ: 2) и 3) по нормальному мне не стоило менять без выяснения причин
(комментариев в коде для этих неочевидных шагов нет), но выяснять долго и нудно,
да и причины могли быть раньше, а теперь уже могли устареть. Поэтому проводим
разведку боем - если что отвалится, то сразу станет ясно, зачем оно было нужно,
я это быстро отремонтирую и задокументирую. Извините за возможные неудобства
(кратковременные!), если они и будут, то пойдут на пользу ConEmu в итоге.

EDIT: corrected version is here:
http://forum.farmanager.com/viewtopic.p ... 668#p33668
Last edited by NightRoman on Wed 25 Jun, 2008 10:39, edited 1 time in total.

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: ConEmu: Console Emulator — эмулятор консоли

Post by hoopoe » Wed 25 Jun, 2008 09:34

NightRoman wrote:Но была еще одна проблема уже после этого - редкие, но все же ненужные скачки
выделения в левый верхний угол. Опять не знаю, почему они, но если я убираю из
кода строку SetParent(hConWnd, hWnd), то эти скачки исчезают. Поскольку я не
знаю, зачем именно эта строка, и не вижу, что без нее не будет работать, я ее
пока убираю, тестируем, сообщаем, что именно отвалилось, буду ремонтировать уже
для нового подхода.
конман отваливается... да и все плуги, которые определяют наличие ConEmu над консолью... потому что едиственным способом узнать что консоль контролируется ConEmu было дернуть GetAncestor для консольного окна... и если там есть прародитель с определенным классом - то становится понятно что мы под ConEmu...

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: ConEmu: Console Emulator — эмулятор консоли

Post by Centaur » Wed 25 Jun, 2008 09:35

Есть такая мысль, что проще реализовать выделение собственными силами, чем добиться корректной работы штатного механизма нижележащей консоли. Вроде бы всё необходимое у ConEmu есть — окно с циклом обработки сообщений, коэффициенты пересчёта из пикселей в знакоместа и содержимое всего буфера.

Post Reply

Return to “Операционные системы, командные оболочки и прочее”