MyDeveloperDay added a comment.

In D93528#2462723 <https://reviews.llvm.org/D93528#2462723>, @curdeius wrote:

> Why not using clang-format's support for JavaScript? It seems more 
> complicated now, but it will probably allow to more easily change/add style 
> options. WDYT?
> And what happens when reformatting only a part of a JSON? Should there be 
> some tests for that?

I've attempted to do this via JavaScript before and failed ;-( and had to 
abandoned the attempt. This is partially because clang-format isn't very good 
at even handling any braced initialization (let alone nested initialization) 
and it made the code much more complex. (my guess is that is why it was never 
attempted before by others before)

So I decided to reset my expectations first, My intent here is to introduce the 
concept of JSON Language support (to gauge if adding JSON support is something 
the community might accept), but also to let me build the infrastructure that 
means we have some support which we know will work out of the box (at least to 
give us clean JSON full file formatting formatting)

Ultimately the JSON pretty printing in the Support library cannot really handle 
what realistically might be wanted i.e. ideally I'd like to support different 
positioning types for the `{`

  [
      "name": {
           "bar": 1 
      },
      "name": {
           "foo": 2
      }
  ]

This first revision handles some basic concepts, introduction of the JSON 
support and full file formatting (to a compatible LLVM Style as defined by its 
own JSON library) + allowing setting different IndentWidths

Ultimately once we have this support, which I think is a necessity, we can 
switch the underlying formatting to support, partial  formatting (as we would 
see via git clang-format) and the potential other options we'd like to support 
(which I consider we'd most likely handle inside reformat using tokens as you 
are suggesting).

So I guess my question is:

1. is this useful to pursue (either as is, or by switching to us the reformat 
method)
2. is this useful standalone as the first pass
3. is adding support for JSON something people would welcome (as we did with C#)

If the answer is no, then I don't want to waste the effort trying to fathom how 
we might do this inside reformat.

> And what happens when reformatting only a part of a JSON? Should there be 
> some tests for that?

Ultimately yes, but I don't think I can easily do that with the llvm/Support 
code, so that would need to be integrated into the `refomat()` (and this is why 
I didn't include a change into git-clang-format or clang-format-diff.py)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93528/new/

https://reviews.llvm.org/D93528

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to