我尝试使用ELisp语法表注解设置Haskell风格的注解,但我不能完全得到它。
在Haskell中,有两种基本类型的注解--
表示以\n
结尾的单行注解{-
表示以-}
结尾的多行注解。应注意,这些注解可以嵌套
多行注解可通过以下方式完成:
(defvar my-syntax-table
(let ((st (make-syntax-table)))
(modify-syntax-entry ?{ ". 1n" st)
(modify-syntax-entry ?- ". 23n" st)
(modify-syntax-entry ?} ". 4n" st)
st))
字符串
单行注解可通过以下方式完成:
(defvar my-syntax-table
(let ((st (make-syntax-table)))
(modify-syntax-entry ?- ". 12" st)
(modify-syntax-entry ?\n ">" st)
st))
型
基于documentation,我可以使用b
设置一个替代项。但是,b
适用于序列的第二个字符,在这两种情况下都是-
。因此,当我试图使用替代项组合这些字符时,无法进行多行和单行注解。
我看过这件事,所以我知道这是可能的。但是,我不知道该怎么做。任何帮助都是感谢。
2条答案
按热度按时间aij0ehis1#
Haskell模式使用
字符串
oaxa6hgo2#
我自己在实现一个带有Haskell风格注解的模式时遇到了这个问题,这似乎是解决方案:
字符串
haskell-mode
中的定义并不完全正确;它们使用标志1和4设置了“B”注解样式,但“B”仅适用于标志2和标志3。使用稍新的(但决不是新的)“c”样式,您可以创建一种由任何字符区分的注解类型,而不仅仅是内部字符。通过将
-
标记为标点符号而不是注解起始符,可以避免在注解开始时使用单个破折号。有关注解语法标志如何工作的更多详细信息,请参阅documentation(自最初提出该问题以来已进行了改进)。