【发布时间】:2013-02-25 23:11:03
【问题描述】:
我们如何检查(point) 是否在匹配的“引号”内
示例 1:“(point)”,
但不在内部
示例 2:“此处引用”(point)“此处引用”,
在 Emacs Lisp 中?
【问题讨论】:
-
我能看到的唯一方法是检查附加的字体锁,但是字体锁怎么知道呢?也许来自 C 的函数。它是进行字体检查的唯一选择吗?
我们如何检查(point) 是否在匹配的“引号”内
示例 1:“(point)”,
但不在内部
示例 2:“此处引用”(point)“此处引用”,
在 Emacs Lisp 中?
【问题讨论】:
您正在寻找的是syntax-ppss(在syntax.el 中定义)。
它返回 10 个值,第 4 个告诉您该点是否在字符串内。
【讨论】:
(nth 3 (syntax-ppss)) 是一个很好的简洁方法,可以根据这个答案来检查这个问题。
(eq (nth 1 (text-properties-at (point))) font-lock-string-face)
这会检查点处的文本字体是否被识别为字符串(即是否具有文本属性 face font-lock-string-face)。
这寻找一个更优雅的解决方案。
【讨论】: