zsh-обработчики, такие как command_not_found_handler ()

578
romeovs

Я хотел бы отформатировать вывод Zsh.

например, для не найденных функций у меня теперь есть:

function command_not_found_handler() 

который возвращает красный текст и подчеркнут ???.

Я сделал это для command_not_found_handlerи хотел бы применить ту же логику к другим выводам ошибок, например:

zsh: bad pattern: echo[ 

а также

zsh: correct 'ehco' to 'echo' [nyae]? 

пока я не могу найти имена правильных обработчиков. Они вообще существуют как обработчики? Если нет, то есть ли более общий подход к изменению вывода предупреждения / ошибки / информации в zsh?

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

cd: no such file or directory: no/dir 

возможно изменить стандартный вывод ошибок (я не знаю, имеет ли это смысл, я очень устал ...)

1

1 ответ на вопрос

1
romeovs

Хорошо, я узнал сам.

Использование С сценария здесь, и изменяя его немного, я получил то, что мне было нужно.

Модификация, которая принимала участие, заключалась в следующем: так как я хотел подчеркнуть подчеркивание ???перед каждой ошибкой, я изменил цикл в строке 107 для печати ??? перед циклом остальной части ошибки. Это было так:

 if (buffer[0] == 27) dontcol = 1; if (buffer[0] == '\n') dontcol = 0; if (!dontcol) fputs(begstr, stdout); fputs("\0033[4m??? \033[0m", stdout);  putchar(buffer[0]); if (!dontcol) fputs(endstr, stdout); for (i = 1; i < n; i++) { if (buffer[i] == 27) dontcol = 1; if (buffer[i] == '\n') dontcol = 0; if (!dontcol) fputs(begstr, stdout); putchar(buffer[i]); if (!dontcol) fputs(endstr, stdout); }  

Похожие вопросы