Предложение добавить функционал подсветки частей строк в меню

Разработка Far.
Post Reply
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Предложение добавить функционал подсветки частей строк в меню

Post by JouriM »

Собственно сабж
Который позволит из текущих плагинов (любых), без каких-то побочных эффектов выводить

Для этого нужно в plugapi.cpp добавить .

Заменить ею использующуюся ниже по тексту NullToEmpty(Item[i].Text) на:

Code: Select all

if ( NullToEmptyHilight(CurItem,Item[i].Text) )
  MenuFlags |= VMENU_PARTIALHILIGHT;
Перенести установку флагов: FarMenu->SetMenuFlags(MenuFlags); ниже на десяток строк, за формирование списка итемов.

Добавить флажок VMENU_PARTIALHILIGHT vmenu.hpp и добавить его в фильтре vmenu2.cpp: .

Я не вижу никаких побочных проблем такого ново-введения, а удобство повышает значительно.
Собственно вот. Мож пригодится.
Last edited by JouriM on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Уточнён заголовок Темы; [spoiler]
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Не знаю куда сунуть: предложение добавить функционал

Post by JouriM »

ПС, Забыл совсем самое главное

Огромная благодарность за код и комплект, который мало того что собирается "из коробки", так еще и работает потом
По текущим временам - это почти на подвиг похоже
Обычно даже в "модных" проектах приходится сутками выпиливать из чугунного куба хрустальный шар...
А тут все собралось (ну кроме завязки на вижуал в syslog.hpp-е, но это мелочь), за час все добавил, отладил и оно работает
Спасибо!
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Не знаю куда сунуть: предложение добавить функционал

Post by zg »

зачем? за день на основе d_usercontrol пишется реализация с куда большим функционалом в плане раскраски.
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Не знаю куда сунуть: предложение добавить функционал

Post by JouriM »

Затем чтобы не терять день ВСЕМ
Тем более что большинству писать что-то сложнее 2х строк влом
Будет готовое - будут пользовать
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Не знаю куда сунуть: предложение добавить функционал

Post by Shmuel »

JouriM wrote: Не знаю куда сунуть: предложение добавить функционал
На багтрекере есть раздел Wishes. Там заводят новый тикет и прикладывают код (если есть) в виде патча.
Last edited by HaRT on Wed 09 Dec, 2015 13:03, edited 1 time in total.
Reason: [post]
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Не знаю куда сунуть: предложение добавить функционал

Post by zg »

JouriM wrote: Затем чтобы не терять день ВСЕМ
так у нас опенсорс, все дела.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Не знаю куда сунуть: предложение добавить функционал

Post by DrKnS »

Попридираюсь немного.
JouriM wrote:позволит из текущих плагинов (любых)
Текущим это не особо поможет, т. к. управляющие символы сами себя не добавят.
static bool NullToEmptyHilight( MenuItemEx& mi, const wchar_t *s )
NullToEmpty нужна для защиты от нулевого указателя (к сожалению, в некоторых местах API он трактуется как пустая строка). Давайте не смешивать мух с котлетами.
rc.reserve( wcslen(s)+5 );
Что такое 5 и зачем резервировать больше, чем в исходной строке, если больше там не будет?
if ( *s == L'\r' || *s == L'\n' )
Выбор переносов строк в качестве управляющих символов для подсветки выглядит, мягко говоря, неожиданно.
if ( rc.length() >= rc.max_size() ) rc.reserve( rc.length()+10 );
Такой reserve может превратить экспоненциальное количество реаллокаций в линейное. К счастью, он никогда не вызовется, т. к. условие невыполнимо.

Ну и как уже подмечено, лучше диффы на багтрекер.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Предложение добавить функционал подсветки частей строк в меню

Post by HaRT »

DrKnS wrote: превратить экспоненциальное количество реаллокаций в линейное
Может всё же логарифмическое в линейное?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Предложение добавить функционал подсветки частей строк в меню

Post by DrKnS »

HaRT wrote: Может всё же логарифмическое в линейное?
Конечно логарифмическое, это рост экспоненциальный.
Благодарю за бдительность.
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Предложение добавить функционал подсветки частей строк в меню

Post by JouriM »

zg wrote:
JouriM wrote: Затем чтобы не терять день ВСЕМ
так у нас опенсорс, все дела.
Ты серьезно считаешь что кому-то будет проще вынуть какой-то недокументированный класс на С, собрать его и воткнуть.... куда, в скрипт на луа из 10 строк?
Писание плагина на С это несравнимо более титаническая работа в сравнению с втыканием каких-то спецсимволов в строчку скрипта
Я думал что это самоочевидно
Ну и такая мелочь, например, как то что текущий plugin.hpp не соберется ничем кроме гнуси и силанговых наследников

ПС: Мне, в сущности, плевать
Препирания о видении мира художником мне надоели еще 10 лет назад (или когда там это было)
Сунул сюда а не молча исправил 10 строк в локальном ФАРе только потому, что не думал что вообще какие-то проблемы возникнут из-за 100 байт и 10 строк которые абсолютно ничему не мешают.
Воткнете в ФАР - хорошо, значит не зря потратит на писанину сюда больше чем на исправление кода
Не воткнете - не расстроюсь
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Предложение добавить функционал подсветки частей строк в меню

Post by JouriM »

DrKnS wrote:Такой reserve может превратить экспоненциальное количество реаллокаций в линейное
Я именно сюда и кинул т.к. vector<> я вчера написал впервые в жизни, а чтобы узнать методы string их пришлось гуглить...
Это функциональная болванка
Если она написана криво то исправить ее дело минуты
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Предложение добавить функционал подсветки частей строк в меню

Post by HaRT »

JouriM wrote: Если она написана криво то исправить ее дело минуты
Так за чем же дело стало?
Вам написали, что там не так, — казалось бы, берёте и за минуту исправляете. Или Вы ожидали, что это кто-то будет делать за Вас?
Фар есть инструмент, а не нянька. © 2009 DrKnS
JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 3 times

Предложение добавить функционал подсветки частей строк в меню

Post by JouriM »

HaRT wrote:
JouriM wrote: Если она написана криво то исправить ее дело минуты
Так за чем же дело стало?
Вам написали, что там не так, — казалось бы, берёте и за минуту исправляете. Или Вы ожидали, что это кто-то будет делать за Вас?
Ты чего-то с чем-то перепутал. МНЕ ничего за меня делать не нужно. Я за себя уже все сделал.

Я предложил вариант для всех. РАБОЧИЙ. Если он нарушает чьето чувство прекрасного - то я тут при чем?

ПС: на сим завязываю
Post Reply

Return to “Development”