В течение многих лет я жил с этим раздражающим Emacs
поведением:
Как описано в этом вопросе
Сегодня я понял, что Emacs
на самом деле прав: make
не интерпретирует эти строки как комментарии. Он просто передает их оболочке, и оболочка интерпретирует их как комментарии. Которое значит что:
Как правильно комментировать (с настоящим комментарием makefile
) внутри рецепта/цели, не нарушая визуально отступы?
Вы можете использовать правильные make
комментарии в рецепте. Просто не делайте отступов, как вы уже сделали в одном из ваших примеров.
target-annoying-face:
# a comment
echo "Hi"
# another comment
echo "Bye"
Абсолютно верно, но, похоже, это не соответствует цели ФП — избежать визуального разрыва отступов.
Спасибо, но еще хуже, чем снижение производительности, это раздражающий глаз удар. Проблема в том, что от emacs у меня глаза кровоточат из-за лица, которое он использует для выделения этих «ошибок make-файла». К счастью, это легко исправить: измените лицо, которое для этого используется.
Как правильно комментировать (с настоящим комментарием
makefile
) внутри рецепта/цели, не нарушая визуально отступы?
Не совсем.
Все, что вы откладываете с помощью табуляции, является частью рецепта и будет отправлено в оболочку. Это не может быть «настоящим комментарием к make-файлу», как вы, кажется, имеете в виду.
Если вы делаете отступ с нулевым или более пробелами вместо табуляции, у вас может быть настоящий комментарий к make-файлу, но тогда, по крайней мере, при некоторых обстоятельствах у вас будет визуальный разрыв отступа. Это будет зависеть от того, сколько пробелов (если таковые имеются) вы используете для отступа и насколько широко останавливается табуляция в вашем конкретном редакторе. В этом отношении вы не можете одновременно удовлетворить все возможные конфигурации всех редакторов.
Кроме того, если вы сделаете отступ с достаточным количеством пробелов, чтобы соответствовать интервалу табуляции вашего конкретного редактора, ваш редактор может представить визуальную индикацию, потому что это обычно ошибка в Makefile. Не знаю насчет emacs
, но vim
точно так делает.
Спасибо. Кажется, тогда ответ таков: «Тогда make поддерживает только комментарии с (необязательными) начальными пробелами. Для меня это хороший компромисс: я всегда использую вкладку с 8 пробелами в emacs для make-файлов, так что именно ее я и начну использовать тогда.
Жаль, что make
не поддерживает «настоящие целевые комментарии» (из-за отсутствия лучшего названия), то есть комментарии в рецепте с отступом до уровня рецепта (именно это в моей книге означают целевые комментарии)
И emacs не помечает отступ пробелами и комментарием как ошибку. Вы уверены, что это ошибка? Мой make
рад им...
@blueFast, отступы с пробелами обычно являются семантической ошибкой, но не обязательно синтаксической ошибкой. Если это комментарий с таким отступом, то make
следует принять его как таковой. Если редакторы отмечают это, как это делает vim
, то это потому, что они предполагают, что вы, скорее всего, хотели вместо этого поставить отступ с помощью табуляции.
А как насчет настройки Emacs на автоматическое выравнивание комментариев в рецептах с остальными, используя пробелы вместо табуляции, и не выделять их?