<div dir="ltr"><div dir="ltr">+1<br></div><div dir="ltr"><br></div><div>On Ubuntu 20.04 LTS, there is ClangFormat 12, I suppose there will be 13 in the upcoming 22.04 release.</div><div><br></div><div>Anna</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 21, 2022 at 10:01 AM Nicklas Larsson via grass-dev <<a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Formatting the C and C++ code, making a consistent coding style was proposed for G8 [1]. Unfortunately, it didn't make it. There were attempts to do this [2, 3], but numerous problem arose using `util/grass_indent.sh` and its batch script `util/grass_indent_ALL.sh`, which are based on GNU Indent [4]. These problem are probably originate in the comparatively limited functionality and lack of active development on GNU Indent.<br>
<br>
I just filed a PR [5] with the aim to replace GNU Indent with ClangFormat [6] and later (separately!) make a bulk formatting of all the code. Running clang-format on all *.h|*.c|*.cpp (some 3000+) files goes fine without any issues. I have created a `.clang-format` file with the settings as close as possible to the ones in `grass_indent.sh` (somewhat outdated described in [7]).<br>
<br>
ClangFormat is a working program in active development, therefore its performance is version dependent (similar to what we have had with Black for Python). On the other hand, its adaptation is increasing, now used in several big and small projects.<br>
<br>
<br>
Now the question is first of all: is using ClangFormat something the GRASS dev community (you) would want or could live with for this project?<br>
And if so, what version of ClangFormat should then be the starting point (what do you have reasonably easy available for your dev platform)? The present settings in the PR are derived from ClangFormat 13, but could possibly be back ported if really needed.<br>
<br>
Please check out the settings, as well as some code files formatted for illustrational purposes only, at the PR [5].<br>
<br>
<br>
Best,<br>
Nicklas<br>
<br>
<br>
<br>
[1] <a href="https://trac.osgeo.org/grass/wiki/Grass8Planning#Codeorganisationcodingstyles" rel="noreferrer" target="_blank">https://trac.osgeo.org/grass/wiki/Grass8Planning#Codeorganisationcodingstyles</a><br>
[2] <a href="https://github.com/OSGeo/grass/issues/1630" rel="noreferrer" target="_blank">https://github.com/OSGeo/grass/issues/1630</a><br>
[3] <a href="https://github.com/OSGeo/grass/pull/2270" rel="noreferrer" target="_blank">https://github.com/OSGeo/grass/pull/2270</a><br>
[4] <a href="https://www.gnu.org/software/indent/" rel="noreferrer" target="_blank">https://www.gnu.org/software/indent/</a><br>
[5] <a href="https://github.com/OSGeo/grass/pull/2272" rel="noreferrer" target="_blank">https://github.com/OSGeo/grass/pull/2272</a><br>
[6] <a href="https://clang.llvm.org/docs/ClangFormat.html" rel="noreferrer" target="_blank">https://clang.llvm.org/docs/ClangFormat.html</a><br>
[7] <a href="https://trac.osgeo.org/grass/wiki/Submitting/C#Indentation" rel="noreferrer" target="_blank">https://trac.osgeo.org/grass/wiki/Submitting/C#Indentation</a><br>
<br>
_______________________________________________<br>
grass-dev mailing list<br>
<a href="mailto:grass-dev@lists.osgeo.org" target="_blank">grass-dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-dev</a><br>
</blockquote></div></div>