如何在 Emacs 的 F90 模式下获得正确的自动续行?

How to get correct automatic continuation lines in F90 mode in Emacs?

假设我正在 F90 模式下编写一些(自由格式)Fortran 代码,我如何在键入时获得正确的自动续行以及如何在使用 fill-paragraph 时获得正确的续行?

代码示例:

subroutine procedure_with_many_arguments(argument1, argument2, argument3, argument4, argument5, argument6, argument7)

real ::  argument1, argument2, argument3, argument4, argument5, argument6, argument7

end subroutine

1.当使用 auto-fill-mode 键入此代码时,我在 行上得到延续字符 & 以及一些奇怪的类似固定格式的缩进(在这里省略第二个和第三个语句):

subroutine procedure_with_many_arguments(argument1, argument2, argument3,&
     & argument4, argument5, argument6, argument7)

2。在现有的太宽代码 上使用 fill-paragraph 时,我得到 neither any continuation character &, nor 任意缩进:

subroutine procedure_with_many_arguments(argument1, argument2, argument3,
argument4, argument5, argument6, argument7)

real :: argument1, argument2, argument3, argument4, argument5, argument6,
argument7

end subroutine

预期结果:

subroutine procedure_with_many_arguments(argument1, argument2, &
  argument4, argument5, argument6, argument7)

real :: argument1, argument2, argument3, argument4, argument5, &
  argument6, argument7)

end subroutine

在这里回答我的问题:

1.要删除前导符号 ,请将以下行添加到您的 .emacs 文件中:

(setq f90-mode-hook
  '(lambda () (setq f90-beginning-ampersand nil)))

2。要打破现有代码的太宽行 ,请使用 f90-fill-region 而不是 fill-paragraph

请注意,f90-fill-region 命令在注释行上使用时会导致 Emacs 崩溃(已测试版本 24.5.1 和 25.3.1),而 fill-paragraph 命令对它们没有任何作用。似乎没有适合代码和注释行的填充命令。

更新: 自由格式 Fortran 主模式f90.el 的维护者刚刚将一个 update 推送到 GitHub,它添加了一个函数 f90-fill-paragraph。此命令适用于注释行和代码。