[GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting

Nicklas Larsson n_larsson at yahoo.com
Mon Jan 2 10:20:05 PST 2023


Markus,


> On 2 Jan 2023, at 13:48, Markus Neteler <neteler at osgeo.org> wrote:
> 
> Hi Nicklas,
> 
> On Wed, Dec 21, 2022 at 9:25 PM Nicklas Larsson via grass-dev
> <grass-dev at lists.osgeo.org> wrote:
>> 
>> I understand there is agreement on using the .clang-format formatting rules suggested with [1], which I just merged.
>> 
>> I have formatted the whole source base with clang-format v.15.0.6, in 7 different PRs [2-8]. I will start merging them tomorrow if there are no objections.
>> 
>> I have also filed a PR [9] which adds a CI check for clang-format errors.
> 
> Thanks for your efforts on the code reformatting!

:-)

> 
>> Installing clang-format is perhaps most easily done with:
>> python -m pip install 'clang-format==15.0.6'
>> 
>> Formatting may be done with something like (following works on Mac):
>> find -E . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \+
> 
> ... it fails on Linux, though
> 
> find: unknown predicate `-E')


I was pretty sure this would deviate from Mac/BSD on Linux systems:


Try something like (untested):

find . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \;

or manually with:
clang-format -I <file>


> 
>> Contribution rules must be updated, I will start putting up a draft ASAP.
> 
> I am trying to fix the conflicts in
> https://github.com/OSGeo/grass/pull/2684
> 
> Conflicting files:
> 
> include/grass/iostream/mm.h
> lib/db/dbmi_base/dbmscap.c
> lib/external/ccmath/ccmath.h
> lib/gis/spawn.c
> lib/gis/user_config.c
> lib/iostream/rtimer.cpp
> lib/pngdriver/graph_set.c
> lib/rst/interp_float/point2d.c
> raster/r.terraflow/filldepr.cpp
> raster/r.terraflow/flow.cpp
> raster/r.terraflow/main.cpp
> raster/r.viewshed/statusstructure.cpp
> 
> The reason will be the missing clang-format update which I don't know
> how to apply on Linux.

Not quite sure what you mean. Did you try:

python -m pip install 'clang-format==15.0.6’

But I suspect any version 15 will do, perhaps even v. 14.


A tip to use the .clang-format file from main for branches without it:

1. git checkout main
2. cp .clang-forrmat ../.clang-format
3. check out branch
4. clang-format searches upwards in dir hierarchy  for next ‘.clang-format’ file
5. run clang-format from grass source dir


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20230102/6502a548/attachment.htm>


More information about the grass-dev mailing list