Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#if defined(OS_WINDOWS)
std::string set_console_color(uint16_t color) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
return "";
#elif defined(OS_POSIX)
std::string set_console_color(std::string color) {
return "\033[" + color + "m";
#endif
}std::string set_console_color(
#if defined(OS_WINDOWS)
uint16_t color) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
return ""
#elif defined(OS_POSIX)
std::string color) {
return "\033[" + color + "m"
#endif
;
}Интересно, что в fish shell уже встроено подобное автодополнение, но оно работает только для файлов. Не смотрели, можно ли вместо Вашего подхода с заменой шелла допилить fish shell и встроить эту логику туда?
На Posix платформах все просто, достаточно вывести в консоль \033[2K, но естественно в Windows нет аналогов, конкретно я не смог найти, приходится писать свою реализацию.
SetConsoleMode() + ENABLE_VIRTUAL_TERMINAL_PROCESSING, но осторожно: есть несовместимости.
command
arg1
samename
child1
arg2
samename
child2
Пишем автодополнение для ваших CLI проектов