3

我正在尝试为注释编写为的语言创建 emacs 语法突出显示

; A single line comment

;; 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)

有人知道将这些结合起来的方法吗?

4

2 回答 2

2

如果您可以在每个分号开始单行注释后添加一个空格,则可以将其视为其中一个注释开始序列的第二个字符,然后这是一个适合我的片段:

(define-derived-mode sbgl-mode prog-mode "sbgl"
  (set (make-local-variable 'font-lock-defaults)
       '(nil ;; keywords
         nil ;; keywords-only
         nil ;; case-fold
         ((?\; . ". 1234b")
          (?\n . ">")
          (?\  . "- 2")))))

如果没有,那么您始终可以选择在字体化之前通过syntax-propertize-function变量(或Emacs24 之前的变量font-lock-syntactic-keywords)进行句法分析。

于 2013-04-01T16:44:41.307 回答
0

您可以尝试以下方法:

(modify-syntax-entry ?\; "< 1234b" sbgl-mode-syntax-table)
(modify-syntax-entry ?\n ">" sbgl-mode-syntax-table)
于 2013-03-30T15:56:51.247 回答