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

时间:2013-03-30 12:38:30

标签: emacs elisp syntax-highlighting

我正在尝试为注释写为

的语言创建一个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)

有人知道如何将这些结合起来吗?

2 个答案:

答案 0 :(得分: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变量(或font-lock-syntactic-keywords变量用于预Emacs24)之前进行语法分析。

答案 1 :(得分:0)

您可以尝试以下内容:

(modify-syntax-entry ?\; "< 1234b" sbgl-mode-syntax-table)
(modify-syntax-entry ?\n ">" sbgl-mode-syntax-table)