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

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

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

Post by JouriM » Wed 09 Dec, 2015 01:13

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

Для этого нужно в 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: 1 time

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

Post by JouriM » Wed 09 Dec, 2015 01:16

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

Огромная благодарность за код и комплект, который мало того что собирается "из коробки", так еще и работает потом
По текущим временам - это почти на подвиг похоже
Обычно даже в "модных" проектах приходится сутками выпиливать из чугунного куба хрустальный шар...
А тут все собралось (ну кроме завязки на вижуал в syslog.hpp-е, но это мелочь), за час все добавил, отладил и оно работает
Спасибо!

User avatar
zg
zero-gravity
Posts: 5263
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

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

Post by zg » Wed 09 Dec, 2015 01:54

зачем? за день на основе d_usercontrol пишется реализация с куда большим функционалом в плане раскраски.

JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 1 time

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

Post by JouriM » Wed 09 Dec, 2015 02:59

Затем чтобы не терять день ВСЕМ
Тем более что большинству писать что-то сложнее 2х строк влом
Будет готовое - будут пользовать

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

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

Post by Shmuel » Wed 09 Dec, 2015 11:07

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: 5263
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

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

Post by zg » Wed 09 Dec, 2015 12:27

JouriM wrote: Затем чтобы не терять день ВСЕМ
так у нас опенсорс, все дела.

User avatar
DrKnS
Posts: 4617
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

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

Post by DrKnS » Wed 09 Dec, 2015 16:16

Попридираюсь немного.
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: 8075
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 09 Dec, 2015 16:21

DrKnS wrote: превратить экспоненциальное количество реаллокаций в линейное
Может всё же логарифмическое в линейное?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 4617
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

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

Post by DrKnS » Wed 09 Dec, 2015 16:48

HaRT wrote: Может всё же логарифмическое в линейное?
Конечно логарифмическое, это рост экспоненциальный.
Благодарю за бдительность.

JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 1 time

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

Post by JouriM » Wed 09 Dec, 2015 17:30

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

ПС: Мне, в сущности, плевать
Препирания о видении мира художником мне надоели еще 10 лет назад (или когда там это было)
Сунул сюда а не молча исправил 10 строк в локальном ФАРе только потому, что не думал что вообще какие-то проблемы возникнут из-за 100 байт и 10 строк которые абсолютно ничему не мешают.
Воткнете в ФАР - хорошо, значит не зря потратит на писанину сюда больше чем на исправление кода
Не воткнете - не расстроюсь

JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 1 time

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

Post by JouriM » Wed 09 Dec, 2015 17:34

DrKnS wrote:Такой reserve может превратить экспоненциальное количество реаллокаций в линейное
Я именно сюда и кинул т.к. vector<> я вчера написал впервые в жизни, а чтобы узнать методы string их пришлось гуглить...
Это функциональная болванка
Если она написана криво то исправить ее дело минуты

User avatar
HaRT
Moderator
Posts: 8075
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 09 Dec, 2015 17:42

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

JouriM
Posts: 48
Joined: Fri 04 Dec, 2015 21:16
Been thanked: 1 time

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

Post by JouriM » Wed 09 Dec, 2015 23:16

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

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

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

Post Reply

Return to “Development”