On Thu, 2002-05-09 at 20:30, Richard Stallman wrote: > The easiest way to implement these functions will often be to use > a category property. Then these functions can simply change the > properties of the category, and faces will appear or disappear all thru > the buffer. > > In fact, it might make sense to have a buffer-local variable > font-lock-category-alist whose elements look like (CATEGORY-SYMBOL . > FACE-PROP). This solution is genius! I didn't understand it at all at first, so I sort of deferred trying to implement it, but after discovering the `category' text property in the elisp manual it made sense. Please find attached a patch which implements it, and changes Info, shell (via comint), occur, and ibuffer to use it. I believe this patch addresses everyone's issues. In particular, font-core.el is very small, and it is efficient (no runtime searching for text properties). Really, I think info.el should be changed to use a `font-lock-fontify-region' function; `Info-fontify-maximum-menu-size' could then just go away.