Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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模式下的单行和多行注释_Emacs_Elisp_Syntax Highlighting - Fatal编程技术网

使用语法表的emacs模式下的单行和多行注释

使用语法表的emacs模式下的单行和多行注释,emacs,elisp,syntax-highlighting,Emacs,Elisp,Syntax Highlighting,我正在尝试为一种语言创建一个emacs语法突出显示,在这种语言中,注释被写成 ;单行注释 ;; This comment has multipline lines ;; 为此,我需要修改语法表中的条目。我发现以下内容非常适用于多行评论: (modify-syntax-entry ?\; ". 1234" sbgl-mode-syntax-table) 以下内容适用于单行注释: (modify-syntax-entry ?\; "< b" sbgl-mode-syntax-tabl

我正在尝试为一种语言创建一个emacs语法突出显示,在这种语言中,注释被写成

;单行注释

;; This comment has
   multipline lines ;;
为此,我需要修改语法表中的条目。我发现以下内容非常适用于多行评论:

(modify-syntax-entry ?\; ". 1234" sbgl-mode-syntax-table)
以下内容适用于单行注释:

(modify-syntax-entry ?\; "< b" sbgl-mode-syntax-table)
(modify-syntax-entry ?\n "> b" sbgl-mode-syntax-table)
(修改语法条目?\;“b”sbgl模式语法表)

有人知道如何组合这些功能吗?

您可以尝试以下方法:

(modify-syntax-entry ?\; "< 1234b" sbgl-mode-syntax-table)
(modify-syntax-entry ?\n ">" sbgl-mode-syntax-table)
(修改语法条目?\;“<1234b”sbgl模式语法表)
(修改语法条目?\n“>”sbgl模式语法表)

如果你能在每一个分号后面添加一个空格来开始一行注释,你可以将它作为注释开始序列中的第二个字符,下面是一个对我有用的代码片段:

(定义派生模式sbgl模式程序模式“sbgl”
(设置(使局部变量的字体锁定为默认值)
'(无;;关键字
无;仅限关键字
零;箱子折叠
(((?\;.“.1234b”)
(?\n“>”)
(?\  . "- 2")))))

如果没有,那么您总是可以选择通过
syntax propertize function
variable(或
font-lock syntactic keywords
variable for pre-Emacs24)在字体化之前进行语法分析。

这不是我想要的。这需要任何注释以
;;结尾
表示单行注释可以以
开头但必须在
上结束。实际上,任何以
开头的注释被认为是多行的。事实上,这是一个thinko,抱歉。恐怕您必须使用类似于
语法属性化函数的功能。您在这方面运气好吗?