En modo C / C ++ en Emacs, cambie la cara del código en #if 0 ... # endif block para comentar la cara

Estoy tratando de agregar la funcionalidad que se encuentra en algunos otros editores de código a mi configuración de Emacs, por lo que el código C / C ++ dentro de #if 0 ... # endif blocks se establece automáticamente en la cara / fuente del comentario. Según mis pruebas,cpp-highlight-mode hace algo como lo que quiero, pero requiere la acción del usuario. Parece que vincular la funcionalidad de bloqueo de fuente es la opción correcta para hacer que el comportamiento sea automático.

He seguido con éxito ejemplos en la documentación de GNU para cambiar la cara de las expresiones regulares de una sola línea. Por ejemplo:

(add-hook 'c-mode-common-hook
  (lambda ()
    (font-lock-add-keywords nil
      '(("\\<\\(FIXME\\|TODO\\|HACK\\|fixme\\|todo\\|hack\\)" 1 
        font-lock-warning-face t)))))

funciona bien para resaltar palabras clave relacionadas con la depuración en cualquier parte de un archivo. Sin embargo, tengo problemas para hacer coincidir #if 0 ... # endif como una expresión regular multilínea. Encontré información útil en esta publicación (Cómo componer una región como "<? Php foo; bar;?>"), eso sugirió que a Emacs se le debe decir específicamente que permita coincidencias multilínea. Pero este código:

(add-hook 'c-mode-common-hook
  (lambda ()
    '(progn
      (setq font-lock-multiline t)
      (font-lock-add-keywords nil
        '(("#if 0\\(.\\|\n\\)*?#endif" 1
          font-lock-comment-face t))))))

Todavía no funciona para mí. Quizás mi expresión regular es incorrecta (aunque parece funcionar usandoM-x re-constructor), He estropeado mi sintaxis, o estoy siguiendo el enfoque equivocado por completo. Estoy usando Aquamacs 2.1 (que se basa en GNU Emacs 23.2.50.1) en OS X 10.6.5, si eso hace la diferencia.

¡Cualquier ayuda sería apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta