Thread (11 messages) 11 messages, 4 authors, 2025-02-17

Re: [PATCH v1] CONTRIBUTING.d/style/c: Add coding style for the example programs

From: onf <hidden>
Date: 2025-02-09 02:20:14

Hi Branden & Alex,

On Sun Feb 9, 2025 at 12:46 AM CET, G. Branden Robinson wrote:
[...]
At 2025-02-08T23:57:07+0100, Alejandro Colomar wrote:
quoted
On Sat, Feb 08, 2025 at 11:44:43PM +0100, Alejandro Colomar wrote:
quoted
Personally, I prefer tabs for actual programming.  But for manual
pages, we can live with 4 spaces for $reasons.
[...]
quoted
+Description
+    Indentation
+	Use 4 spaces.  Ideally, tabs would be preferred; however, they
+	cause 5 spaces in manual pages, which is weird, so we use 4
+	spaces.
On a side note, Branden, I've considered changing the manual pages'
EXAMPLES' source code to use tabs, and let the formatter do whatever
it wants.  Do you have any opinion on that?
The behavior of input tab characters is well-defined in *roff, but
defined _weirdly_ to most people's sensibilities when filling is
enabled.  I won't quote the documentation here, merely point to it.

https://www.gnu.org/software/groff/manual/groff.html.node/Tabs-and-Leaders.html
[...]
TL;DR:
With the default settings, a tab essentially translates into a
horizontal motion. What this means is that when filling is on
and you have text like this:
  int main(int argc, char **argv) {
  \tif (argc != 2 || strcmp(argv[1], "-h") == 0) {
  \t\tfprintf(stderr, usage, argv[0]);
  \t\treturn argc != 2;
  \t}
  \treturn 0;
  }

it ends up like this:
  int  main(int  argc, char **argv) {         if (argc != 2 || str‐
  cmp(argv[1], "‐h") == 0) {                 fprintf(stderr, usage,
  argv[0]);                 return argc != 2;         }         re‐
  turn 0; }

This is because tab stops are related to the beginning of a paragraph
rather than the beginning of an output line as one would expect.

The desired behavior can be enabled with the request .linetabs,
but this is groff-specific and not supported by other troffs.

~ onf
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help