• geza42@alien.topB
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          This has nothing to do with the diff program. Ediff is not able to highlight whitespace differences like it highlights non-whitespace differences. Maybe it is possible to do somehow, but by default, whitespace differences generate a diff region with no highlights (or as ediff calls it, refinements).

          It is because highlights are done on word level, and whitespaces are not words.

          • invsblduck@alien.topB
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            Oh, interesting.
            I see.

            Just popped open the Ediff code and there is a significant amount of effort put into ignoring whitespace. Like, it’s not a shortcoming per se that it can’t show this content but rather a deliberate onslaught to avoid it at all costs. The author must have been really annoyed by whitespace. 😂

            I mostly use (ediff-buffers) in my day-to-day work in Spacemacs to compare two regions that I’ve narrowed to indirect buffers, and, interestingly, it does show me diffs that contain whitespace-only changes and prints the following to the echo area:

            https://preview.redd.it/587vplu76e1c1.png?width=1896&format=png&auto=webp&s=e3d559ae695972f62865560b96f23953b4b26027

            I did a quick test with other ediff functions bound in Spacemacs, and ediff-windows-linewise has the same behavior, but ediff-windows-wordwise does not -- it completely ignored diffs that were whitespace only and there was not even ## binding available in that ediff session.

            When browsing the code, I found a local variable named ediff-whitespace (which u/doolio_ has already pointed out here in reply to you, actually), which is curious:

            (defvar-local ediff-whitespace " \n\t\f\r\240"
              "Characters constituting white space.
            These characters are ignored when differing regions are split into words.")
            

            (\240 is Unicode symbol for nonbreakable whitespace.)

            I wonder whether this variable can be set to nil.

            PS:

            It is because highlights are done on word level, and whitespaces are not words.

            Apparently word splitting is configurable with ediff-forward-word-function ?

  • 00-11@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Also very basic, IMO:

    • g X - go to buffer X’s point
    • j - jump to diff number (prefix arg)
    • ! - update (re-diff)
    • C-l - recenter
    • * - refine current region
    • ## - ignore whitespace diffs
    • 7890yuiop@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      And in case the video doesn’t say it:

      Ediff has its own user manual: C-h i g (ediff)

  • LionyxML@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    You sir are great. I can’t open the video on youtube to give a thumbs up, may you share the link?