dev:formattingconventions
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| dev:formattingconventions [2016/08/28 13:23] – instructions on editor integration 89.206.117.172 | dev: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 '' | ||
| - | ===== Formatting conventions ===== | ||
| - | The following formatting conventions are automatically enforced by the '' | ||
| - | * Sorting and alignment of variable declarations and '' | ||
| - | * Indentation with a relative width of 3 characters. | ||
| - | * Line continuations are aligned with the previous opening delimiter '' | ||
| - | * 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. | ||
| - | ===== Editor integration ===== | ||
| - | You can optionally integrate prettify into your editor. First install prettify with the '' | ||
| - | < | ||
| - | ./setup.py install | ||
| - | </ | ||
| - | or | ||
| - | < | ||
| - | ./setup.py install --user | ||
| - | </ | ||
| - | Then configure your editor such that it calls | ||
| - | < | ||
| - | </ | ||
| - | for reformatting. For Vim, this is done by adding the following line to your vimrc: | ||
| - | <code vim> | ||
| - | autocmd Filetype fortran setlocal formatprg=fprettify\ --no-normalize-use\ --no-report-errors | ||
| - | </ | ||
| - | Reformat selected lines with '' | ||
| - | ===== Manual formatting ===== | ||
| - | The following formatting decisions are still manual and are never changed by prettify: | ||
| - | * Positions of line breaks (except for variable declarations and '' | ||
| - | * No indentation of subsequent '' | ||
| - | 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 '' | ||
| - | * No auto-formatting of code blocks enclosed between two comment lines starting with '' | ||
| - | ===== 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: | + | This page has been moved to [[https://manual.cp2k.org/trunk/development/ |
| - | <code fortran> | + | |
| - | ! No: | + | |
| - | long_result_var_name = long_function_name(arg_1, | + | |
| - | arg_3, arg_4, arg_5)+ & | + | |
| - | foo | + | |
| - | ! Yes: | + | |
| - | long_result_var_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* & | + | |
| - | | + | |
| - | ! Yes: | + | |
| - | bessj0 = (r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))))/ & | + | |
| - | | + | |
| - | </code> | + | |
| - | * Alignment by explicit bracketing: | + | |
| - | <code fortran> | + | |
| - | ! No: | + | |
| - | foo = bar+foobar(x1, | + | |
| - | foobar(x2, y2, z2)* & | + | |
| - | foobar(x3, y3, z3) | + | |
| - | ! Yes: | + | |
| - | foo = bar+(foobar(x1, | + | |
| - | | + | |
| - | | + | |
| - | </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, & !& | + | |
| - | | + | |
| - | ! Alternatively: | + | |
| - | !&< | + | |
| - | align_me = [-1, 10, 0, & | + | |
| - | 0, 1000, 0, & | + | |
| - | | + | |
| - | !&> | + | |
| - | </ | + | |
dev/formattingconventions.1472390584.txt.gz · Last modified: (external edit)
