Emacs 如何以字符字符串的形式查询语法类成分?

Emacs 如何以字符字符串的形式查询语法类成分?,emacs,elisp,Emacs,Elisp,使用elisp,我试图将emacs语法类转换为使用语法表构成该类的字符串。我无法找到一些参考代码或我可以识别的示例 有人有参考资料或代码片段要共享吗 谢谢,马特 更新1:进一步阅读后,我发现可以使用遍历表,从而累积所需的字符 这里使用的一些实用程序来自 (定义语法类atpt(&可选位置) “返回点处语法的语法类部分。” (互动) (让*((位置(或位置(点))) (erg(logand(car(pos后的语法))65535))) (当(交互-p)(消息“%s”erg))erg时) (定义语法类

使用elisp,我试图将emacs语法类转换为使用语法表构成该类的字符串。我无法找到一些参考代码或我可以识别的示例

有人有参考资料或代码片段要共享吗

谢谢,马特


更新1:进一步阅读后,我发现可以使用遍历表,从而累积所需的字符

这里使用的一些实用程序来自

(定义语法类atpt(&可选位置)
“返回点处语法的语法类部分。”
(互动)
(让*((位置(或位置(点)))
(erg(logand(car(pos后的语法))65535)))
(当(交互-p)(消息“%s”erg))erg时)
(定义语法类bfpt()
“返回点处语法的语法类部分。”
(互动)
(let((erg(logand)(car(语法在(1-(点))之后))65535)))
(当(交互-p)(消息“%s”erg))erg时)
(定义ar语法atpt(&可选文档位置)
(互动)
(当pos
(转到字符位置)
let*((elt)汽车(if)功能
(字符语法(字符后面的字符))
(第((()()))点之后的语法)
(stax(cond((eq elt 0)“0空格”)
((等式5)“5闭括号”)
((等式10)“10个字符的引号”)
((等式1)“1标点符号”)
((等式6)“6表达式前缀”)
((等式11)“11注释开始”)
((等式2)“2字”)
((等式7)“7字符串引号”)
((等式12)“12注释结束”)
((等式3)“3符号”)
((等式8)“8对定界符”)
((等式13)“13继承”)
((等式4)“4开括号”)
((等式9)“9逃生”)
((等式14)“14一般评论”)
((等式elt 15)“15通用字符串”))
(当(交互式-p)
(消息(格式为“%s”stax)))
(如有文件)
(格式为“%s”stax)
(英语四级)
(在区域atpt中定义ar语法(beg end)
(交互式“r”)
(省去远足
(goto char beg)
(让(erg)
(同时(<(点)结束)
(setq erg(concat erg“\n”“\”(字符到字符串(字符之后))“\”是(ar语法atpt t)))
(转发字符1))
(消息“%s”erg)
(erg)
(defun语法bfpt()
(互动)
(let((stax)(在(1-(点‘‘)’)之后的语法)
(当(交互式-p)
(消息(格式为“%s”stax)))
(斯塔克斯)

我从
descripe syntax
函数开始。我现在看到syntax表没有反向查找。我还看到它的内容并不是我所期望的,许多字符默认为symbol。谢谢
(defun ar-syntax-class-atpt (&optional pos)
  "Return the syntax class part of the syntax at point. "
  (interactive)
  (let* ((pos (or pos (point)))
     (erg (logand (car (syntax-after pos)) 65535)))
    (when (interactive-p) (message "%s" erg)) erg))

(defun syntax-class-bfpt ()
  "Return the syntax class part of the syntax at point. "
  (interactive)
  (let ((erg (logand (car (syntax-after (1- (point)))) 65535)))
    (when (interactive-p) (message "%s" erg)) erg))

(defun ar-syntax-atpt (&optional docu pos)
  (interactive)
  (when pos
    (goto-char pos))
  (let* ((elt (car (if (featurep 'xemacs)
                       (char-syntax (char-after))
                     (syntax-after (point)))))
         (stax (cond ((eq elt 0) "0 whitespace")
                     ((eq elt 5) "5 close parenthesis")
                     ((eq elt 10) "10 character quote")
                     ((eq elt 1) "1 punctuation")
                     ((eq elt 6) "6 expression prefix")
                     ((eq elt 11) "11 comment-start")
                     ((eq elt 2) "2 word")
                     ((eq elt 7) "7 string quote")
                     ((eq elt 12) "12 comment-end")
                     ((eq elt 3) "3 symbol")
                     ((eq elt 8) "8 paired delimiter")
                     ((eq elt 13) "13 inherit")
                     ((eq elt 4) "4 open parenthesis")
                     ((eq elt 9) "9 escape")
                     ((eq elt 14) "14 generic comment")
                     ((eq elt 15) "15 generic string"))))
    (when (interactive-p)
      (message (format "%s" stax)))
    (if docu
        (format "%s" stax)
      elt)))

(defun ar-syntax-in-region-atpt (beg end)
  (interactive "r")
  (save-excursion
    (goto-char beg)
    (let (erg)
      (while (< (point) end)
        (setq erg (concat erg "\n" "\"" (char-to-string (char-after)) "\"" "  is " (ar-syntax-atpt t)))
        (forward-char 1))
      (message "%s" erg)
      erg)))

(defun syntax-bfpt ()
  (interactive)
  (let ((stax (syntax-after (1- (point)))))
    (when (interactive-p)
      (message (format "%s" stax)))
    stax))