I still think that the goal isn't to write the most concise code, but the most descriptive and least ambiguous code (to humans). That is why some people think I am silly for putting "if(somepointer != NULL) ..." rather than "if(!somepointer) ..." - those people aren't the people I am leaving the hints for.
I fully agree, and don't think it silly, even though I do use
if (!somepointer) { error_case(); } myself.
Thing is, I tell learners to read that pattern as
"if no somepointer, then error case".
Our objective is the same, just different approaches.
Whenever I write a spinning
while loop with an empty body, I have a comment block explaining its purpose preceding it.
What's the error?
Like I said, highlighting all tabs in Gedit/Pluma (by searching for
\t with backslash escapes enabled in the search dialog) makes the tabs visible.
Because of the sheer number of existing Makefiles, we cannot really change the syntax anymore; we're stuck with it. Much like the oddities in English itself, with lead, lead, and lead all pronounced differently.
However, what I do myself, and recommend others do as well, is make sure they only have one indentation level, with a single tab. Then, running
sed -e 's|^[\t ][\t ]*|\t|' -i Makefileis safe, and will fix any indentation issues.
(Before anyone points it out, I do know that GNU sed supports
\+ in the "one or more of" sense. However, that's not strictly BRE syntax. Only EREs support
+ in the "one or more of" sense. Trick for new players; one that I prefer to avoid.)