• toastal@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      3 months ago

      OCaml’s old m17n compiler plugin solved this by requiring you pick one block per ‘word’ & you can only switch to another block if separated by an underscore. As such you can do print_แมว but you couldn’t do pℝint_c∀t. This is a totally reasonable solution.

    • lunarul@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      3 months ago

      I can’t imagine how something like homograph attacks can happen accidentally. If someone does this in code, they probably intended to troll other contributors.

      • NeatNit@discuss.tchncs.de
        link
        fedilink
        arrow-up
        0
        ·
        3 months ago

        Multilingual users have multiple keyboard layouts, usually switching with Alt+Shift or similar key combo. If you’re multitasking you might not realize you’re on the wrong keyboard layout. So say you’re chatting with someone in Russian, then you alt+tab to your source code and you spot a typo - you wrote my_var_xopy instead of my_var_copy. You delete the x and type in c. You forget this happened and you never realized the keyboard layout was wrong.

        That c that you typed is now actually с, Cyrillic Es.

        What do you say, is that realistic enough?

        • lunarul@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          3 months ago

          I use multilingual keyboard layouts, so I know that at least on Windows the selected layout is specific to each window. If I chat with someone in one language, then switch to my IDE, it will not keep the layout I used in the chat window.

          But I also have accidently hit the combination to change layouts while doing something, so it can happen. I’m just surprised that Cyrillic с is on the same key as C, instead of S.

          • NeatNit@discuss.tchncs.de
            link
            fedilink
            arrow-up
            0
            ·
            3 months ago

            I believe there’s a setting for whether it’s global or per-window. Personally I prefer global, because I can’t keep track of more than one state and I absolutely hate the experience of typing something and getting a different language than you expect.