From: Stephen Berman <stephen.berman@gmx.net>
To: emacs-devel@gnu.org
Subject: Conditionalized font-locking?
Date: Mon, 07 May 2012 10:47:24 +0200 [thread overview]
Message-ID: <871umw74yr.fsf@escher.home> (raw)
In a certain mode I'd like to fontify date strings where the date is
earlier than current-time-string differently from date strings of later
dates. I tried to do this with font-lock-keywords by filtering the
output of the regexp search. It seems to work, but as soon as a
filtered matching string is fontified, Emacs appears to hang (the gdb
backtrace shows thousands of calls to mark_object). Hitting `C-x k'
followed by rapidly repeating `C-g' many times eventually gets Emacs
back to normal.
The case with date strings is more complicated than necessary to show
the problem; the following code shows the same problem for a simpler
case, fontifying odd numbers (of course, that can be done with just a
regexp and then there's no problem, but I don't think the date string
case is possible just with a regexp):
--8<---------------cut here---------------start------------->8---
(defvar srb-font-lock-keywords
(list '(srb-number-matcher 1 font-lock-warning-face t)))
(defun srb-number-matcher (lim)
"Search for odd numbers within LIM for font-locking."
(re-search-forward "\\<\\([0-9]+\\)\\>" lim t)
(let ((num (match-string-no-properties 1)))
(when (eq (logand (string-to-number num) 1) 1) num)))
(define-derived-mode srb-mode nil "SRB" ()
"Mode for testing font-locking."
(set (make-local-variable 'font-lock-defaults)
'(srb-font-lock-keywords t)))
--8<---------------cut here---------------end--------------->8---
Evaluate this code, switch to a new buffer, type `M-x srb-mode' and then
the number `1': the number gets fontified but Emacs appears to hang.
Am I doing something wrong? If so, what's the right way to do this? Or
is what I'm trying to do not possible?
Steve Berman
next reply other threads:[~2012-05-07 8:47 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-07 8:47 Stephen Berman [this message]
2012-05-07 15:05 ` Conditionalized font-locking? Stefan Monnier
2012-05-07 15:15 ` Stephen Berman
2012-05-10 15:22 ` Stephen Berman
2012-05-10 15:30 ` Davis Herring
2012-05-10 18:18 ` Stephen Berman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871umw74yr.fsf@escher.home \
--to=stephen.berman@gmx.net \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.