5

我正在用 Vim 编辑我的 Haskell 源文件,并设置了 'textwidth' 选项来自动换行超长行。所以我的 ~/.vimrc 看起来像:

set tw=78

现在,当我编写超过 78 个字符的行时,最后一个单词会自动转到下一行。这对于在源文件中编写注释非常有用。好消息是在注释中,当最后一行太长并被自动换行时,前导注释符号会自动插入每行的开头。但这仅适用于 C 风格的注释,但不幸的是不适用于 Haskell 前导破折号。

所以,例如在一个 JS 文件中

/**
 * This is a very long comment which is longer than 78 chars, yeah really 
 * longer than 78 chars...

包裹得很好

// This is a very long comment which is longer than 78 chars, yeah really 
// longer than 78 chars...

所以现在如果 Haskell 评论中发生同样的事情会很好,比如

------------------------------------------------------------------------------
-- | This is a very long module description which is longer than 78 chars,
--   yeah really longer than 78 chars...

有谁知道这是否以及如何可能?此行为在哪里指定?:set formatexpr 或 :set formatoptions 对我有帮助吗?

在此先感谢您的帮助!

=<<约翰内斯

/编辑:顺便说一句,我使用 vim 7.3.x

4

2 回答 2

3

您应该检查formatoptions设置;对我来说,它具有价值croqlc表示注释在下一行继续。看:help 'formatoptions'

:set formatoptions=croql
于 2012-05-23T12:34:20.723 回答
2

我不是vim用户(haskell-mode通常emacs只是“做正确的事”,优雅地适应某种缩进风格),但以下似乎适用于我的快速测试:

:set comments=:--\ ,sr:{-,m:\ ,ex:-}

这没有-- |具体处理,但我实际上从未在 Haskell 中看到过这样的缩进:

-- | Bla Bla
--   continues right under the Bla

缩进这样的评论更为常见:

-- | Usually a one-line short description.
--
-- Continued like this, with a longer description.

或者,这个变体:

-- | Bla bla slightly longer than one line description
-- bla bla.
--
-- Bla bla additional details.

如果您想要一段长时间运行的描述您的声明的正文,您可以将其作为多行注释开始:

{-|
The definition of 'myfunc', Act I, Chapter 1. Bla bla bla bla
bla bla...
-}
于 2012-05-23T18:47:26.770 回答