ОК, так что, похоже, это работает как в emacs 21, так и в 22:
(defun followed-by (cases)
(cond ((null cases) nil)
((assq (car cases)
(cdr (memq c-syntactic-element c-syntactic-context))) t)
(t (followed-by (cdr cases)))))
(c-add-style "foo"
`(( other . personalizations )
(c-offsets-alist
( more . stuff )
(innamespace
. (lambda (x)
(if (followed-by
'(innamespace namespace-close)) 0 '+))))))
(Первое решение не поддерживает конструкции типа
namespace X { namespace Y {
class A;
namespace Z {
class B;
}
}}
)