User Tools

Site Tools


dev:formattingconventions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
dev:formattingconventions [2020/08/21 10:15] – external edit 127.0.0.1dev:formattingconventions [2026/10/14 08:43] (current) – fstein
Line 1: Line 1:
 ====== Code Formatting Conventions and Prettify Tool ====== ====== Code Formatting Conventions and Prettify Tool ======
-Uniform formatting of CP2K source code is enabled by a prettify script that is an almost complete auto-formatter for Fortran 90 source code. As a rule of thumb, developers should not worry about the format of their code and just let prettify do its magic by running ''make -j pretty''. 
-===== Formatting conventions ===== 
-The following formatting conventions are automatically enforced by the ''make -j pretty'' command: 
-  * Sorting and alignment of variable declarations and ''USE'' statements, removal of unused list entries. 
-  * Indentation with a relative width of 3 characters. 
-  * Line continuations are aligned with the previous opening delimiter ''('', ''['' or ''(/'' or with an assignment operator ''='' or ''%%=>%%''. If none of the above is present, a default hanging indent of 3 characters is applied. 
-  * All operators are surrounded by exactly one whitespace character, except for arithmetic operators. 
-  * Removal of extraneous whitespace and consecutive blank lines. 
-  * Uppercase notation for all Fortran and OpenMP keywords. 
  
-===== Manual formatting ===== +This page has been moved to [[https://manual.cp2k.org/trunk/development/code-formatting.html]]
-The following formatting decisions are still manual and are never changed by prettify: +
-  * Positions of line breaks (except for variable declarations and ''USE'' statements). +
-  * No indentation of subsequent ''DO'' / ''IF'' statements that are aligned with each other. +
-There may be cases where manual alignment is preferred over the automatic formatting conventions. The following options for manual formatting are provided: +
-  * No automatic realignment of line continuations that are prefixed with an ''&''. +
-  * No auto-formatting of lines to which a comment starting with ''!&'' is attached. +
-  * No auto-formatting of code blocks enclosed between two comment lines starting with ''!&<'' and ''!&>''. +
-===== Examples ===== +
-A few examples to illustrate how to deal with cases where auto-formatting produces unsatisfying results: +
- +
-  * Reduce hanging indent by inserting linebreaks directly after assignment operator and opening delimiter: +
-<code fortran> +
-! No: +
-long_result_var_name = long_function_name(arg_1, arg_2, & +
-                                          arg_3, arg_4, arg_5)+ & +
-                       foo +
-! Yes: +
-long_result_var_name = & +
-   long_function_name( & +
-      arg_1, arg_2, & +
-      arg_3, arg_4, arg_5)+ & +
-   foo +
-</code> +
-  * Avoid linebreaks in deeply nested expressions: +
-<code fortran> +
-! No: +
-bessj0 = (r1+y*(r2+y*(r3+y*(r4+y* & +
-                            (r5+y*r6)))))/(s1+y*(s2+y*(s3+y* & +
-                                                       (s4+y*(s5+y*s6))))) +
-! Yes: +
-bessj0 = (r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))))/ & +
-         (s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))) +
-</code> +
-  * Alignment by explicit bracketing: +
-<code fortran> +
-! No: +
-foo = bar+foobar(x1, y1, z1)* & +
-      foobar(x2, y2, z2)* & +
-      foobar(x3, y3, z3) +
-! Yes: +
-foo = bar+(foobar(x1, y1, z1)* & +
-           foobar(x2, y2, z2)* & +
-           foobar(x3, y3, z3)) +
-</code> +
-  * Special vertical alignment may require manual formatting: +
-<code fortran> +
-! Auto-formatting: +
-align_me = [-1, 10, 0, & +
-            0, 1000, 0, & +
-            0, -1, 1] +
-! Manual alignment (!& disables whitespace formatting): +
-align_me = [-1,   10, 0, & !& +
-             0, 1000, 0, & !& +
-             0,   -1, 1] !& +
-! Alternatively: +
-!&< +
-align_me = [-1,   10, 0, & +
-             0, 1000, 0, & +
-             0,   -1, 1] +
-!&> +
-</code>+
dev/formattingconventions.txt · Last modified: by fstein