现代fortran源代码的自动格式化程序
fprettif的Python项目详细描述
fprettify
fprettify是现代fortran代码的自动格式化程序,它采用python编写的严格的空白格式。
功能
- 自动缩进。
- 行连续体与前面的开头分隔符
(
、[
或(/
对齐,或者与赋值运算符=
或=>
对齐。如果以上都不存在,则应用默认的挂起缩进。 - 运算符和分隔符周围的空白量一致。
- 删除无关空白和连续空白行。
- 测试编辑器集成。
- 默认情况下,fprettify只会导致空白更改,从而保留修订历史记录。
- fprettify可以处理cpp和fypp预处理器指令。
限制
- 仅适用于现代Fortran(Fortran 90以上)。
- 功能丢失?请创建问题。
要求
- python 2.7或python 3.x
- ConfigArgParse:可选,启用配置文件的使用
示例
比较examples/*before.f90
(原始Fortran文件)和examples/*after.f90
(重新格式化的Fortran文件)以了解fprettify的作用。快速演示:
program demointeger::endif,if,elseifinteger,DIMENSION(2)::functionendif=3;if=2if(endif==2)thenendif=5elseif=if+4*(endif+&2**10)elseif(endif==3)thenfunction(if)=endif/elseifprint*,endifendifend program
____ fprettify
program demointeger::endif,if,elseifinteger,DIMENSION(2)::functionendif=3;if=2if(endif==2)thenendif=5elseif=if+4*(endif+&2**10)elseif(endif==3)then function(if)=endif/elseifprint*,endifendifend program
安装
最新版本可以使用pip安装:
pip install --upgrade fprettify
从源代码安装需要python setuptools:
./setup.py install
对于本地安装,请使用--user
选项。
命令行工具
自动格式化文件1、文件2…按
fprettify file1, file2, ...
默认缩进为3。如果您喜欢其他东西,请使用--indent n
参数。
为了递归地将fprettify应用于整个fortran项目而不是单个文件,请使用-r
选项。
有关更多选项,请阅读
fprettify -h
编辑器集成
对于编辑器集成,请使用
fprettify --silent
例如,对于vim,使用fprettify和gq
,方法是在.vimrc
中输入以下命令:
autocmd Filetype fortran setlocalformatprg=fprettify\ --silent
停用和手动格式化(实验功能)
对于所选行,可以停用fprettify:以!&
开头的内联注释后面的一行不是自动格式化的,在两个注释行!&<
和!&>
之间括起的连续行也不是自动格式化的。这对于首选手动对齐而不是自动格式化的情况非常有用。此外,当非标准Fortran语法(例如预处理器指令的高级用法)阻止正确的格式设置时,必须停用。例如,请考虑以下fprettify格式的代码片段:
A=[-1,10,0,&0,1000,0,&0,-1,1]
要手动对齐列,需要通过以下方式停用fprettify
A=[-1,10,0,&!&0,1000,0,&!&0,-1,1]!&
或者,等效于
!&<A=[-1,10,0,&0,1000,0,&0,-1,1]!&>
贡献/测试
测试机制允许您使用您选择的任何Fortran项目轻松测试fprettify。只需将整个项目克隆或复制到fortran_tests/before
并运行python setup.py test
。目录fortran_tests/after
包含测试输出(重新格式化的fortran文件)。如果测试失败,请提交问题!