Git clang-format json support issue
With a recent update of my Slackware distro llvm package was updated to version 13.0. I’ve noticed that when git clang-format
, which I use to keep the code formatting clean in my projects, suddenly started to complain when I have modified a json file:
Configuration file(s) do(es) not support Json: /home/user/workspace/myproject/.clang-format, /home/user/workspace/.clang-format
error: `clang-format -lines=2:3 -lines=52:52 path/to/file.json` failed
That made me unable to commit (git clang-format
is a required step in my pre-commit hook. I needed to get my work done so I’ve went for a quick fix (without disabling the pre-commit hook) which was to filter-out the files that are touched by git clang-format
. By default the tool parses all modified files (those tracked by git). The help section (git clang-format -h
) says it can be changed with clangFormat.extensions setting. Used that option to ignore the jsons (global ~/.gitconfig
or local .git/config
in the project repository):
[clangFormat]
extensions = "cpp,h,hpp,hxx"
Once I was done with my urgent task I’ve tried another way of fixing the issue. The clang-format 13.0 is able to format the json files but it has failed to do so because my .clang-format
specified the settings for C++ files only. Solution was to add a section for the json documents:
---
Language: Json
BasedOnStyle: llvm
That not only removes the error message but also lets clang-format to take care of my json files formatting. It’s not a perfect solution though as I would like to make it work for any supported file type, but couldn’t figure out how to achieve that.