PanelTabs — Панели с закладками

Здесь можно обсудить ваш любимый плагин.
User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Sun 28 Jul, 2019 15:02

Latest post of the previous page:

Честно говоря, не очень понял почему данный глюк был перенесен в топик плагина. Как я понимаю задача плагина после получения новой позиции и размера панели перерисовать шорткаты. А задача самого FAR очистить фон перед перерисовкой. (Что с моей точки зрения реализуется проще и универсальнее.)
Или я ошибаюсь, и плагин перед изменением размера окна получает событие об изменении и должен за собой убраться, пережде чем перерисует шорткаты по новому событию - новый размер окна?
Last edited by a'Lexus on Sun 28 Jul, 2019 15:10, edited 2 times in total.
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Sun 28 Jul, 2019 15:49

a'Lexus wrote:
Sun 28 Jul, 2019 15:02
А задача сомго FAR очистить фон перед перерисовкой
Far:
- Не предоставляет интерфейсов для фоновой записи в произвольные места экрана.
- Не предполагает, что кто-то ещё может писать в консоль.
- При перерисовке обновляет только те участки, которые изменились с его точки зрения.
- Иногда делает снимки экрана (например, когда вы что-то запускаете) чтобы было что показать под панелями.

Если плагину захотелось втихаря что-то нарисовать поверх того, что рисует Far, то это что-то может быть:
- Затёрто сразу же.
- Просуществовать примерно столько, сколько плагин ожидает, если звёзды сложились удачно.
- Висеть на экране ещё очень долго, если попало в снимок.
почему данный глюк был перенесен в топик плагина
Потому что в Far чинить в этом случае нечего (возможно, в плагине тоже и остаётся только смириться).

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Sun 28 Jul, 2019 19:32

DrKnS wrote:
Sun 28 Jul, 2019 15:49
Потому что в Far чинить в этом случае нечего
Странный, с моей точки зрения, ответ. И я понимаю еще, если бы при изменении размеров окна API позволяло плагину узнать о предстоящей перерисовке и подготовится к этому. Именно поэтому данная задача становится задачей FAR.
DrKnS wrote:
Sun 28 Jul, 2019 15:49
Не предполагает, что кто-то ещё может писать в консоль.
Вот конкретный случай, когда можно уже предположить и избежать в дальнейшем, предоставляя таким образом расширенный функционал.
Очистка "задника" открытого окна целиком перед перерисовкой панелей не является задачей которая сильно снизила бы производительность. Зато устранила, как глюк текущего плагина, так и и возможные другие артефакты в будущем.

Не собираюсь никого учить, как писать программы. Просто излагаю свой подход к программированию.
И тем более, что FAR для меня остается основной консолью больше 20 лет!
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Sun 28 Jul, 2019 20:15

a'Lexus wrote:
Sun 28 Jul, 2019 19:32
Странный, с моей точки зрения, ответ
Некто забирается ночью в трамвайное депо и рисует картину на корпусе трамвая.
Утром выясняется, что трамвай уехал и вообще его помыли.
Некто считает это странным, ведь обеспечение сохранности его работы теперь становится задачей депо.


Плагин делает то, что делать не предусмотрено, т.е. является большим хаком.
То, что он не всегда работает адекватно - неизбежно.

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Sun 28 Jul, 2019 20:33

DrKnS wrote:
Sun 28 Jul, 2019 20:15
Плагин делает то, что делать не предусмотрено, т.е. является большим хаком.
Ну хорошо. Докустим, что так.
Но с ArcLite дела обстоят ни сколько не лучше!
Capture.JPG
Capture.JPG
Это значит, с моей точки зрения,что с этим надо что-то делать.
Last edited by a'Lexus on Sun 28 Jul, 2019 20:39, edited 1 time in total.
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Sun 28 Jul, 2019 20:43

Windows 10, да?
Console properties, Layout, снимите Wrap text output on resize.

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Mon 29 Jul, 2019 09:04

DrKnS wrote:
Sun 28 Jul, 2019 20:43
Windows 10, да?
Тем более, что известно существование проблемы. И такое решения я бы рассматривал, как временное. Т.к. оно влияет не исключительно работу FAR, а на работу консоли как таковой.
Я понимаю,что проект не коммерческий, да еще и FAR инструмент для людей квалифицированных. Но в этом случае раздел "known issues" будет иметь достаточно много пунктов.
Last edited by a'Lexus on Mon 29 Jul, 2019 09:05, edited 1 time in total.
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Mon 29 Jul, 2019 10:13

a'Lexus wrote:
Mon 29 Jul, 2019 09:04
И такое решения я бы рассматривал, как временное
Когда вы, например, в cmd вводите что-то типа echo 11111111...еще пара сотен символов...111111111 то вывод ожидаемо разобъётся на несколько строк, чтобы влезло в ширину консоли.
Когда в Windows 10 добавили ресайз окна (и буфера) мышью, какой-то альтернативно одарённый сотрудник Microsoft придумал при ресайзе склеивать эти строки обратно в одну большую строку и разбивать её заново по новой ширине.
Я не знаю, зачем. Наверное, в линуксовых терминалах есть такая фича.
Проблема только в том, что разбиение это необратимо, т.е. ОС не знает, что именно когда-то было одной строкой и что нет, а поэтому включает AI и пытается угадывать в стиле "если строка N закончилась вплотную к правому краю без пробелов и если строка N + 1 началась вплотную к левому краю без пробелов то, наверное, это одна строка".
Такой дебильный алгоритм более-менее работает только с голым текстом в примитивном шелле типа cmd или bash.
В случае фара угадывать получается очень паршиво, т.к. вплотную к краям экрана находятся символы рамок панели.
У нас нет возможности узнать, что хосту захотелось перетасовать всё выведенное ранее.
И нет, "стереть всё" - это не выход.

Иными словами, вы можете рассматривать предложенное решение как хотите, но бананов у нас, увы, нет.

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Tue 30 Jul, 2019 11:17

DrKnS wrote:
Mon 29 Jul, 2019 10:13
И нет, "стереть всё" - это не выход.
Позволю себе не согласиться. Как раз очистить окно консоли, изменить размер и перерисовать было бы самым простым и эффективным решением.
Тем более, что FAR, насколько я вижу, хранит содержимое консоли в буфере.
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Tue 30 Jul, 2019 12:13

a'Lexus wrote:
Tue 30 Jul, 2019 11:17
хранит содержимое консоли в буфере
Только то, которое в пределах окна.
Всё, что выше и правее хранит ОС.
Когда вы увеличиваете размер с включенной опцией - ОС сначала туда молча гадит, потом фар видит, что размер изменился и копирует уже испорченные блоки сверху и справа себе.
Стереть там всё, естественно, можно, но это будет варварством и вряд ли порадует аудиторию.

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Wed 31 Jul, 2019 08:13

DrKnS wrote:
Tue 30 Jul, 2019 12:13
Стереть там всё, естественно, можно, но это будет варварством и вряд ли порадует аудиторию.
Мне по прежнему кажется, что решение возможно. Да подход должен изменяться. Да это потребует написание нового кода.
При выводе в консоль панели скрыты и можно перед выводом панелей сохранить содержимое в буфер. Это не сильно увеличит потребляемую память и не потребует много времени. Этот буфер понадобится только при изменении размера окна. Это можно сделать опцией или использовать только в консолях Windows 10.
In love with FAR since 1997

2useven10
Posts: 3982
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 172 times

PanelTabs — Панели с закладками

Post by 2useven10 » Wed 31 Jul, 2019 08:44

a'Lexus wrote:
Wed 31 Jul, 2019 08:13
Мне по прежнему кажется, что решение возможно. Да подход должен изменяться. Да это потребует написание нового кода.
Обратите внимание на пункты правил 2.2.*
a'Lexus wrote:
Wed 31 Jul, 2019 08:13
При выводе в консоль панели скрыты и можно перед выводом панелей сохранить содержимое в буфер. Это не сильно увеличит ...
Напишите патч, проведите тесты подтверждающие ваши заявления (буфер 9999x200), или см. выше.
Вы хотите слишком много приседаний от других вместо отключения проблемной фичи консоли у себя.

User avatar
a'Lexus
Posts: 45
Joined: Mon 17 Oct, 2016 22:30

PanelTabs — Панели с закладками

Post by a'Lexus » Wed 31 Jul, 2019 09:03

2useven10 wrote:
Wed 31 Jul, 2019 08:44
Обратите внимание на пункты правил 2.2.*
Обратил. Ничего относящегося к теме нашего обсуждения с уважаемым DrKnS не увидел.
2useven10 wrote:
Wed 31 Jul, 2019 08:44
Вы хотите слишком много приседаний от других вместо отключения проблемной фичи консоли у себя.
Я ничего не хочу, я предлагаю. Обсуждаю возможные варианты обхода проблемы, если хотите.
Last edited by a'Lexus on Wed 31 Jul, 2019 09:14, edited 2 times in total.
In love with FAR since 1997

User avatar
DrKnS
Posts: 5426
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

PanelTabs — Панели с закладками

Post by DrKnS » Wed 31 Jul, 2019 10:30

a'Lexus wrote:
Wed 31 Jul, 2019 08:13
Мне по прежнему кажется, что решение возможно.
Сомневаться - это ваше право.
Как уже справедливо отмечено выше, код доступен, вы можете попробовать найти решение самостоятельно. Если получится (адекватно) - мы с радостью примем ваши изменения.

Мне же не кажется, потому что я уже пробовал.
С моей точки зрения, тактическое решение - отключить опцию и забыть о ней (т.к. вреда больше, чем пользы), а стратегическое - ходить по ссылке выше и голосовать за баг, привлекая внимание Microsoft к проблеме.

User avatar
John Doe
Бюрократ
Posts: 12527
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 233 times

PanelTabs — Панели с закладками

Post by John Doe » Wed 31 Jul, 2019 12:07

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

buniak_a_h
Posts: 1232
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 88 times
Been thanked: 71 times
Contact:

PanelTabs — Панели с закладками

Post by buniak_a_h » Thu 03 Oct, 2019 15:33

Игорь Юдинцев wrote:
Tue 07 Jul, 2009 11:52
Max Rusov wrote:Мне не нравится, что при этом мелькает окно.
При установленной галке «Запретить вывод на экран» окно мигать не будет.
Не нашёл я такой галки. Пришлось снести плагин - мелькание, возникающее в непредсказуемый момент, стало сильно раздражать.
Версия плагина 1.15 (с плагринга)
FAR 3/0/5478 x64
Windows 10 Pro
Last edited by buniak_a_h on Thu 03 Oct, 2019 15:34, edited 1 time in total.

Post Reply

Return to “Обсуждение плагинов”