• zagaberoo@beehaw.org
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Then you lose the benefit of tabs: you can’t adjust the tab width without destroying alignment. So you end up with a confusing mix of characters for no benefit.

    Mixing them is the worst option.

    • z3bra@lemmy.sdf.org
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      You might not understand how to do it properly so here’s the idea:

      Tabs will let you reach the indentation level of the current block, then from here, you’ll use spaces to align stuff property. Here’s an example, where >••• are tabs (I’m exaggerating alignment for the sake of the example) :

      >•••if (condition1 == true
      >••• || condition2 != false)
      >•••{
      >•••>•••struct ident people[] = [
      >•••>•••>•••{
      >•••>•••>•••>•••.name   = "bob",
      >•••>•••>•••>•••.pubkey = "value1",
      >•••>•••>•••},
      >•••>•••>•••{
      >•••>•••>•••>•••.name   = "alice",
      >•••>•••>•••>•••.pubkey = "value2",
      >•••>•••>•••}
      >•••>•••];
      >•••>•••secureConnection(people[0].name, people[0].pubkey,
      >•••>•••                 people[1].name, people[1].pubkey,
      >•••>•••                 CRYPTO_ALGO_DEFAULT);
      >•••}
      

      As you can see, everything will stay correctly aligned as long as it’s within the same block.

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      You’re confusing using tabs for indentation and spaces for alignment with using tabs and spaces for indentation. This means each line starts with tabs. Next you optionally have spaces for alignment with previous lines. Then you have content (like code or comments). Because you never have a tab following a space the alignment is never destroyed by adjusting how wide a tabstop is.

        • JackbyDev@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          That example is using tabs for both indentation and alignment. The article you linked even says not using tabs for alignment is a solution.

          • Do not use tabs for alignment. In such case given example should look like:
          fun foo x =
          --->let val abs = if x > 0
          --->              then x
          --->              else -x
          --->in
          --->--->(* ... *)
          --->end