用作构造名称的占位符会影响正确的缩进
Place-holders used as construct name compromise correct indentation
我从 vim-latex 插件中得到启发,为 Fortran 程序单元、类型定义等的自动完成编写了一个 Vim 脚本。
目前,如果我在光标位于单词 program
上时点击 <F5>
,我会得到以下内容
PROGRAM <+program_name+>
USE <+used_module_name+>
IMPLICIT NONE
<++>
END PROGRAM <+program_name+>
第一个 <+program_name+>
视觉 selected 和 Vim select 模式。这对我来说是完美的。
当我使用这样的占位符作为 IF
构造的标签时,问题就出现了。当我展开 if
我得到
<+name+>: IF (<+logical expression+>) THEN
<++> ! this line is not indented => in turn the following are negative indented
ELSE IF (<+logical expression+>) THEN
<++>
ELSE
<++>
END IF <+name+>
第二行没有缩进是因为(至少我认为!)字符串 <+name+>
不是有效名称。因此,以下行向后移动(显然,当 if 在第一列时,第二行是唯一错误的行)。
DO
结构也会发生这种情况,但奇怪的是,SELECT CASE
结构不会发生这种情况:
<+name+>: SELECT CASE (<+case expression+>)
CASE (<+case selector+>)
<++>
CASE DEFAULT
<++>
END SELECT <+name+>
这就是为什么我认为灵魂必须存在并且没有那么复杂的原因。
我决定以 "dirty" 方式解决问题,即在生成 IF...THEN...ELSE...END IF
和 DO...END DO
结构的命令序列中的适当位置插入空格。这不是一个优雅的解决方案,但我认为它没有那么多缺点。唯一要更改的是根据 shiftwidth
.
手动添加到命令序列的空格数
正如@SatoKatsura 在评论中建议的那样,最好放弃这条路并使用现有的代码段解决方案。
我从 vim-latex 插件中得到启发,为 Fortran 程序单元、类型定义等的自动完成编写了一个 Vim 脚本。
目前,如果我在光标位于单词 program
上时点击 <F5>
,我会得到以下内容
PROGRAM <+program_name+>
USE <+used_module_name+>
IMPLICIT NONE
<++>
END PROGRAM <+program_name+>
第一个 <+program_name+>
视觉 selected 和 Vim select 模式。这对我来说是完美的。
当我使用这样的占位符作为 IF
构造的标签时,问题就出现了。当我展开 if
我得到
<+name+>: IF (<+logical expression+>) THEN
<++> ! this line is not indented => in turn the following are negative indented
ELSE IF (<+logical expression+>) THEN
<++>
ELSE
<++>
END IF <+name+>
第二行没有缩进是因为(至少我认为!)字符串 <+name+>
不是有效名称。因此,以下行向后移动(显然,当 if 在第一列时,第二行是唯一错误的行)。
DO
结构也会发生这种情况,但奇怪的是,SELECT CASE
结构不会发生这种情况:
<+name+>: SELECT CASE (<+case expression+>)
CASE (<+case selector+>)
<++>
CASE DEFAULT
<++>
END SELECT <+name+>
这就是为什么我认为灵魂必须存在并且没有那么复杂的原因。
我决定以 "dirty" 方式解决问题,即在生成 IF...THEN...ELSE...END IF
和 DO...END DO
结构的命令序列中的适当位置插入空格。这不是一个优雅的解决方案,但我认为它没有那么多缺点。唯一要更改的是根据 shiftwidth
.
正如@SatoKatsura 在评论中建议的那样,最好放弃这条路并使用现有的代码段解决方案。