Emacs d-mode无法处理反引号反斜杠

Nor*_*löw 7 emacs elisp d syntax-highlighting string-literals

目前Emacs https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode无法正确突出显示

`\`
Run Code Online (Sandbox Code Playgroud)

因为它不理解单个反斜杠在这样的原始字符串文字中是自包含的.

我相信这个来自d-mode.el的摘录

(defvar d-mode-syntax-table nil
  "Syntax table used in d-mode buffers.")
(or d-mode-syntax-table
    (setq d-mode-syntax-table
     (let ((table (funcall (c-lang-const c-make-mode-syntax-table d))))
       ;; Make it recognize D `backquote strings`
       (modify-syntax-entry ?` "\"" table)

       ;; Make it recognize D's nested /+ +/ comments
       (modify-syntax-entry ?+  ". 23n"   table)
       table)))
Run Code Online (Sandbox Code Playgroud)

与这个问题高度相关.如何解决这个问题的想法?

另见:http://forum.dlang.org/post/kqzbgawuzyemcyjnsuin@forum.dlang.org

Ste*_*fan 3

Jon O. 所说:使用syntax-propertize-function. 例如

(setq-local syntax-propertize-function
            (syntax-propertize-rules ("`\\(\\\\\\)`" (1 "."))))
Run Code Online (Sandbox Code Playgroud)

  • 是的,在“d-mode”函数内部(可能用“define-driven-mode”定义)。 (2认同)