如何获取major-mode
中给定语法字符对应的字符(或其集合(?
例如,我希望能够在像elisp或C这样的大多数模式中获得转义字符,例如"\"。我找不到一个函数可以返回与语法类对应的字符——在这种情况下是转义语法类,即Lisp/C模式中的(string-to-syntax "\") ;; => (9)
。
那么,我怎么能走另一条路呢,例如(some-function '(9) major-mode) ;; => "\"
语法表是字符表,可以使用map-char-table
检查语法表中的每个规则,例如
(defun foo (syntax-code syntax-table)
"Return chars (or char range) with SYNTAX-CODE in SYNTAX-TABLE."
(let (result)
(map-char-table
(lambda (k v)
;; k is either a char or (FROM . TO)
;; v is (SYNTAX-CODE . MATCHING-CHAR)
(when (= (car v) syntax-code)
(push (pcase k
(`(,from . ,to) (list (string from) (string to)))
(_ (string k)))
result)))
syntax-table)
(nreverse result)))
(foo 9 emacs-lisp-mode-syntax-table)
;; => ("\")