我试图找出哪个正则表达式导致在此缓冲区connect
中突出显示。告诉我这是一个. 看了之后,我看不出这个亮点可能来自哪里。五颜六色的花环是由.cperl-mode
describe-face
font-lock-type-face
font-lock-keywords-alist
font-lock-keywords
rainbow-delimiters-mode
是否有检查哪个正则表达式匹配的功能,以便用这张脸突出显示连接?
我试图找出哪个正则表达式导致在此缓冲区connect
中突出显示。告诉我这是一个. 看了之后,我看不出这个亮点可能来自哪里。五颜六色的花环是由.cperl-mode
describe-face
font-lock-type-face
font-lock-keywords-alist
font-lock-keywords
rainbow-delimiters-mode
是否有检查哪个正则表达式匹配的功能,以便用这张脸突出显示连接?
我有一个本地字体锁定黑客来在缓冲区中记录使用的规则。下面的补丁可能会做到这一点。应用它(并重新加载 font-lock.el)后,您可以检查(使用C-u C-x =
)font-lock-debug
缓冲区位置上要理解其字体化的属性。
=== modified file 'lisp/font-lock.el'
--- lisp/font-lock.el 2013-01-11 23:08:55 +0000
+++ lisp/font-lock.el 2013-01-13 15:28:16 +0000
@@ -1563,6 +1611,14 @@
;;; Keyword regexp fontification functions.
+(defvar font-lock-debug nil)
+
+(defun font-lock-debug ()
+ (interactive)
+ (set (make-local-variable 'font-lock-debug) t)
+ (make-local-variable 'font-lock-extra-managed-props)
+ (push 'font-lock-debug font-lock-extra-managed-props))
+
(defsubst font-lock-apply-highlight (highlight)
"Apply HIGHLIGHT following a match.
HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see `font-lock-keywords'."
@@ -1577,13 +1633,16 @@
(when (eq (car-safe val) 'face)
(add-text-properties start end (cddr val))
(setq val (cadr val)))
- (cond
- ((not (or val (eq override t)))
+ (if (and (not val) (not (eq override t)))
;; If `val' is nil, don't do anything. It is important to do it
;; explicitly, because when adding nil via things like
;; font-lock-append-text-property, the property is actually
;; changed from <face> to (<face>) which is undesirable. --Stef
- nil)
+ nil
+ (if font-lock-debug
+ (font-lock-append-text-property start end 'font-lock-debug
+ (list (cons matcher highlight))))
+ (cond
((not override)
;; Cannot override existing fontification.
(or (text-property-not-all start end 'face nil)
@@ -1599,7 +1658,7 @@
(font-lock-append-text-property start end 'face val))
((eq override 'keep)
;; Keep existing fontification.
- (font-lock-fillin-text-property start end 'face val)))))))
+ (font-lock-fillin-text-property start end 'face val))))))))
(defsubst font-lock-fontify-anchored-keywords (keywords limit)
"Fontify according to KEYWORDS until LIMIT.
@@ -1621,6 +1680,7 @@
(min lead-start (point)))
limit
'font-lock-multiline t)))
+ (font-lock-append-text-property (point) limit 'font-lock-debug keywords)
(save-match-data
;; Find an occurrence of `matcher' before `limit'.
(while (and (< (point) limit)
我知道没有这样的功能。正则表达式被编译为最优,为什么你需要知道?
顺便说一句,显示在旁边font-lock-keyword
显示字符串。nect
tinue
您尝试过 font-lock studio吗?这对我很有效。