gpt4 book ai didi

emacs - 尝试在语法表中为 SPSS 定义注释

转载 作者:行者123 更新时间:2023-12-02 01:51:18 24 4
gpt4 key购买 nike

我正在尝试修改 spss.el 以便为 SPSS 评论提供准确的字体。以下是 SPSS 的语法高亮和处理注释的总结:

* = 星号在行首开始注释

\n\n = 两行换行结束注释

.\n = period + newline 也结束注释

/* = 斜杠和星号开始评论,并以一个新行结束*/ 仅当与/* 位于同一行时才结束注释

到目前为止,我的语法表是这样的:

(let ((spss-mode-syntax-table (make-syntax-table)))
(modify-syntax-entry ?* "<" spss-mode-syntax-table)
(modify-syntax-entry ?. ". 3" spss-mode-syntax-table)
(modify-syntax-entry ?\n "- 34" spss-mode-syntax-table)
(modify-syntax-entry ?' "\"" spss-mode-syntax-table)
(modify-syntax-entry ?\\ "@ " spss-mode-syntax-table)
spss-mode-syntax-table)

这在大多数情况下是有效的,除了星号仅在行首时用作注释定界符。有没有办法表示星号是行首的注释分隔符

感谢阅读!

最佳答案

对于/* ... */部分,您可以使用

(modify-syntax-entry ?/ ". 14" st)
(modify-syntax-entry ?* ". 23" st)
(modify-syntax-entry ?\n ">" st)

但对于 * ...\n\n,您需要不同的注释样式,并且由于它重用了与其他注释样式相同的字符 * 和\n,您不能使用简单的语法表设置来解释它到 Emacs。相反,您需要使用 syntax-propertize-function这将放置一个 "< b" * 上的语法在行首和 "> b" \n 上的语法的 \n\n .例如

(set (make-local-variable 'syntax-propertize-function)
(syntax-propertize-rules
("^\\(\\*\\)" (1 "< b"))
("\n\\(\n\\)" (1 "> b"))
("\\(\\.\\)\n" (1 "> b"))))

关于emacs - 尝试在语法表中为 SPSS 定义注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com