我试图修改spss.el,为SPSS的评论提供准确的字体。以下是SPSS语法如何突出和处理评论的总结:
* =一个星号在行的开头开始注释
\n\n =两个新行结束注释
.\n =句点+换行符也以注释结尾
/* =斜杠和星号启动注释,并以一个新行结束,只有在与/*同一行的情况下,*/才结束注释
到目前为止,我的语法表如下:
(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)这在很大程度上是可行的,只是星号只有在行开头时才能充当注释分隔符。是否有方法表示星号仅在行开始处是注释分隔符?
感谢您的阅读!
发布于 2014-03-20 18:23:59
对于/* . */部分,您可以使用
(modify-syntax-entry ?/ ". 14" st)
(modify-syntax-entry ?* ". 23" st)
(modify-syntax-entry ?\n ">" st)但是对于*. \n \n,您需要一个不同的注释样式,并且由于它重用了与其他注释样式相同的字符*和\n,所以不能使用简单的语法表设置来向Emacs解释它。相反,您需要使用一个syntax-propertize-function,它将在行的开头在*上放置一个"< b"语法,在\n of \n\n上放置一个"> b"语法。例如。
(set (make-local-variable 'syntax-propertize-function)
(syntax-propertize-rules
("^\\(\\*\\)" (1 "< b"))
("\n\\(\n\\)" (1 "> b"))
("\\(\\.\\)\n" (1 "> b"))))https://stackoverflow.com/questions/22541327
复制相似问题