Often find myself getting frustrated editing yaml, and it seems to be used everywhere for some reason I cannot fathom

I have an idea to write an editor plugin that will, when opening a yaml file, convert it to json (or some other less painful configuration language), then convert back on save. I don’t know enough about yaml syntax to know if that’s possible or if there’s some quirk that makes them not completely cross compatible

Or alternatively if it exists a better CLI tool for editing yaml than just a normal text editor because I’m getting sick of pasting in a block of yaml and then having to fix the 8 indentation errors that somehow spawn from that

  • bionicjoey@lemmy.ca
    link
    fedilink
    English
    arrow-up
    12
    ·
    7 months ago

    What text editor are you using? In theory most should detect a yaml file and adjust their indentation behaviour appropriately. I edit yaml in VSCode and Kate and it’s never been a problem.

    • flashgnash@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      7 months ago

      I use nvim for it, it works but I’d rather not have to deal with indentation in the first place

      • bionicjoey@lemmy.ca
        link
        fedilink
        English
        arrow-up
        5
        ·
        7 months ago

        Well in that case, I have good news. All valid JSON is also valid yaml. It’s a superset by definition. So if you really hate yaml so much you can just write your yaml files as JSON and the parser should handle it fine. Just be aware that yaml does some more agressive typecasting when quotes are omitted, so you may need to figure out which value is actually being used when converting.

        • flashgnash@lemm.eeOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          7 months ago

          Seriously? Chatgpt told me that once and I thought it was just hallucinating

          Problem is it’s for configuration of other services I didn’t write, I would just use JSON in the first place if I were defining the schema

          • bionicjoey@lemmy.ca
            link
            fedilink
            English
            arrow-up
            7
            ·
            7 months ago

            You should try looking up the language spec rather than hoping a text generator will generate truthful results. What’s even the point of asking for answers if you don’t trust that the thing you’re asking won’t just bullshit you?

            • flashgnash@lemm.eeOP
              link
              fedilink
              English
              arrow-up
              3
              arrow-down
              1
              ·
              7 months ago

              Can usually tell when it’s obviously bullshitting me and verify it if it’s not. You can often get it to correct itself if you call it out

              (This was the first time I’ve seen it incorrectly “corrected” itsself)

              I think I did a quick search but it seemed so strange to me I just wrote it off straight away

    • flashgnash@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      7 months ago

      I’m using neovim. It doesn’t magically solve my problems with yaml though

      • eleitl@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        I’m not a power yaml user by any means, but syntax highlighting and linting pipelines do help.

  • bionicjoey@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    I have an idea to write an editor plugin that will, when opening a yaml file, convert it to json (or some other less painful configuration language), then convert back on save. I don’t know enough about yaml syntax to know if that’s possible or if there’s some quirk that makes them not completely cross compatible

    You could probably do this pretty easily with a simple python script. Use the yaml parser to convert into a dictionary, use the JSON renderer to save that dictionary into a pipe file. Launch the visual editor of your choice on that file. When the editor exits, read the file as JSON, parse it back into a dictionary, and use the yaml renderer to save that dictionary back into the original file.

    • flashgnash@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 months ago

      Yeah that was exactly what I was thinking, and/or doing a similar thing in lua as an nvim plugin

      That said I’m not sure if neovim would support something like that