为pFUnit测试框架扩展vim Fortran语法文件



我想使用pFUnit Fortran单元测试框架与vim。测试通常写在一个以.pf结尾的文件中,它们主要使用Fortran 95语法,除了它们有单元测试特定的关键字(如@test@assertEqual)

扩展vim中的fortran语法高亮显示以仅在具有.pf扩展名的文件中标记这些特殊单词的最简单方法是什么?

感谢

单元测试示例:

@test
subroutine test_to_lower_all_A()
    use pfunit_mod
    use mod_str_tools, only: to_lower
    @assertEqual("aaa", to_lower("AAA"))
end subroutine

好了,我所做的似乎解决了这个问题:

1)在~/.vim/ftdetect/pFUnit.vim

创建一个文件
" ftdetect/pFUnit.vim
au BufRead,BufNewFile *.pf setfiletype pFUnit

根据文件扩展名

自动设置文件类型

2)在~/.vim/ftplugin/pFUnit.vim

创建文件
" ftplugin/pFUnit.vim
setlocal iskeyword+=@-@
let fortran_free_form=1
so $VIMRUNTIME/ftplugin/fortran.vim

表示@字符是关键字的一部分,而不是分隔符。它还设置fortran_free_form标记并加载fortran插件。

3)在~/.vim/syntax/pFUnit.vim 中创建一个文件
" Vim syntax file
" Language: pFUnit
if exists("b:current_syntax")
    finish
endif
syn keyword pFUnitTag @test @before @after @suite
syn keyword pFUnitAssert @assertTrue @assertFalse @assertAny @assertAll @assertNone @assertNotAll
syn keyword pFUnitAssert @assertEqual @assertLessThan @assertLessThanOrEqual @assertGreaterThan @assertGreaterThanOrEqual
syn keyword pFUnitAssert @assertRelativelyEqual
syn keyword pFUnitAssert @assertIsNaN @assertIsFinite @assertExceptionRaised @assertSameShape
hi def link pFUnitTag PreProc
hi def link pFUnitAssert Keyword
so $VIMRUNTIME/syntax/fortran.vim
let b:current_syntax = "pFUnit"

现在既定义了新的关键字,又提供了原始的fortran.vim。在设置b:current_syntax之前获取该文件的源代码是很重要的,否则fortran.vim脚本将立即退出。

如果有人有更好的解决方案,请在这里分享。由于

最新更新