现代 fortran 源代码的自动格式化程序
项目描述
美化
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 demo
integer :: endif,if,elseif
integer,DIMENSION(2) :: function
endif=3;if=2
if(endif==2)then
endif=5
elseif=if+4*(endif+&
2**10)
elseif(endif==3)then
function(if)=endif/elseif
print*,endif
endif
end program
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩ fprettify⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩
program demo
integer :: endif, if, elseif
integer, DIMENSION(2) :: function
endif = 3; if = 2
if (endif == 2) then
endif = 5
elseif = if + 4*(endif + &
2**10)
elseif (endif == 3) then
function(if) = endif/elseif
print *, endif
endif
end program
安装
可以使用 pip 安装最新版本:
pip install --upgrade fprettify
从源代码安装需要 Python Setuptools:
./setup.py install
对于本地安装,使用--user选项。
命令行工具
自动格式化 file1, file2, ... 就地
fprettify file1, file2, ...
默认缩进为 3。如果您更喜欢其他内容,请使用--indent n参数。
为了将 fprettify 递归应用到整个 Fortran 项目而不是单个文件,请使用该-r选项。
有关更多选项,请阅读
fprettify -h
编辑器集成
对于编辑器集成,使用
fprettify --silent
例如,对于 Vim,使用 fprettifygq将以下命令放入您的.vimrc:
autocmd Filetype fortran setlocal formatprg=fprettify\ --silent
停用和手动格式化(实验功能)
可以为选定的行停用 fprettify:单行后跟一个以 in 开头的内联注释!&不会自动格式化,而连续的行包含在两个注释行之间!&<并且!&>不会自动格式化。这对于手动对齐优于自动格式化的情况很有用。此外,当非标准 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 文件)。如果测试失败,请提交问题!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。