Hacker News new | ask | show | jobs
by slooonz 532 days ago
You want diff to know the syntax and semantics of every programming language out there ?
2 comments

This is possible already with tools like difftastic.

https://github.com/Wilfred/difftastic

Difftastic would not solve the issue described by madeofpalk because it still highlights the added comma. You need a diff tool that can distinguish between optional and required syntax. So far I am not aware of any tool that supports this, except the one I am working on (SemanticDiff).
I'm pretty sure this counts. https://github.com/afnanenayet/diffsitter

Certainly the idea has been suggested many times. I think people end up formatting both before/after and doing a diff on formatted before against formatted after. I've done that.

It would be like a syntax highlighter. It’s doable.
But diff does not exists in a vacuum. It would need to be integrated to IDEs, editor, merge tools, PR tools. You now have to have `patch` understand and depend on the details of the syntax of your language. In a way that may break between different versions of diff and patch. Not even starting with variants of a language, different interpretations of how to handle the preprocessor/macros system, different editions of the same language.

All that, just to not have to add a trailing comma ?

Most things like patch would still use line diff. I think I would want this semantic diff in the merge request review and the logs. It could have definitions distributed with the syntax highlighters in language plugins in an editor/IDE, git CLI, and git forge.
So GitHub, git lab, gutbucket, gittea (and its 50 forks), fossil, and all the other tools should change, not the formatting of the code?
No, having a concise separator is still preferable to saving a line in a diff.