Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 尝试在语法表中为SPS定义注释_Emacs_Spss - Fatal编程技术网

Emacs 尝试在语法表中为SPS定义注释

Emacs 尝试在语法表中为SPS定义注释,emacs,spss,Emacs,Spss,我正试图修改spss.el,以便为spss评论提供准确的字体。以下是SPSS语法如何突出显示和处理注释的摘要: *=星号在行首开始逗号 \n\n=两行新的结束注释 \n=句点+换行符也结束注释 /*=斜杠和星形开始注释,并以一行新行结束 */仅当与注释在同一行时结束注释/* 到目前为止,我的语法表如下所示: (let ((spss-mode-syntax-table (make-syntax-table))) (modify-syntax-entry ?* "<" spss-mode-

我正试图修改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)
(let((spss模式语法表(生成语法表)))

(修改语法条目?*”对于/*…*/部件,您可以使用

(modify-syntax-entry ?/ ". 14" st)
(modify-syntax-entry ?* ". 23" st)
(modify-syntax-entry ?\n ">" st)
但是对于*..\n\n,您需要一个不同的注释样式,因为它与其他注释样式重复使用相同的字符*和\n,您不能使用简单的语法表设置向Emacs解释它。相反,您需要使用一个
语法属性化函数
,它将放置一个
行首a
*
上的语法和
>b的
\n
上的
\n
语法。例如

(set (make-local-variable 'syntax-propertize-function)
     (syntax-propertize-rules
       ("^\\(\\*\\)" (1 "< b"))
       ("\n\\(\n\\)" (1 "> b"))
       ("\\(\\.\\)\n" (1 "> b"))))
(设置(使局部变量的语法属性化函数)
(语法属性化规则)
(“^\\(\\*\\)”(1“b”))
(“\\(\\.\\)\n”(1“>b”))

您好,我正在阅读和回复(另一个Stefan?)提到如果使用字体锁定可能不起作用。我尝试复制粘贴您的代码段,但没有效果,然后发现该模式使用字体锁定。感谢您的帮助!不,字体锁定与语法属性配合使用效果很好。但可能您的Emacs太老了,没有语法属性。另外,复制粘贴还不够,因为您使用的是different var名称和
set
操作需要在正确的上下文中应用。