Emacs下Coq / Proof General中关键字和运算符的Unicode字形

时间:2012-04-20 18:14:02

标签: emacs unicode elisp coq proof-general

此问题与在Emacs中的Proof General中配置Coq模式有关。

我正在尝试让Emacs使用相应的Unicode字形自动替换Coq中的关键字和符号。我设法将fun定义为希腊小写lambdaλ,forall作为通用量词符号∀等。我没有定义单词符号的问题。

问题在于,当我尝试将运算符=>-><->等定义为其Unicode符号⇒→↔时,它们不会被相应的Unicode字形替换在Coq。但是,当我测试它们时,它们会在*scratch*缓冲区中被替换。我使用相同的机制将Unicode glyps与Coq表示法匹配:

(defun define-glyph (string char-info)
  (font-lock-add-keywords
   nil
   `((,(format "\\<%s\\>" string)
      (0 (progn
       (compose-region
        (match-beginning 0) (match-end 0)
        ,(apply #'make-char char-info))
       nil))))
   ))

我怀疑问题是Coq模式将某些标点符号标记为特殊标记,因此Emacs忽略了我的代码以用Unicode字形替换它们,但我不确定。有人可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:5)

根据模式特定语法表,这些运算符可能是符号,而不是单词。尝试

(defun define-glyph (string char-info)
  (font-lock-add-keywords
   nil
   `((,(format "\\_<%s\\_>" string)
      (0 (progn
           (compose-region
            (match-beginning 0) (match-end 0)
            ,(apply #'make-char char-info))
           nil))))))