No modo C / C ++ no Emacs, altere a face do código no bloco #if 0… # endif para comentar

Estou tentando adicionar a funcionalidade encontrada em alguns outros editores de código à minha configuração do Emacs, em que o código C / C ++ dentro dos blocos #if 0 ... # endif é automaticamente definido como a fonte / fonte do comentário. Com base nos meus testes,modo de destaque do cpp faz algo parecido com o que eu quero, mas requer ação do usuário. Parece que vincular a funcionalidade de bloqueio de fonte é a opção correta para tornar o comportamento automático.

Segui com sucesso exemplos na documentação do GNU para alterar a face das expressões regulares de linha única. Por exemplo:

(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 bem para destacar palavras-chave relacionadas à depuração em qualquer lugar do arquivo. No entanto, estou tendo problemas para corresponder #if 0 ... # endif como uma expressão regular de várias linhas. Encontrei algumas informações úteis neste post (Como compor região como "<? Php foo; bar;?>"), que sugeria que o Emacs fosse informado especificamente para permitir correspondências multilinhas. Mas 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))))))

ainda não funciona para mim. Talvez minha expressão regular esteja errada (embora pareça funcionar usandoReconstrutor M-x), Estraguei minha sintaxe ou estou seguindo completamente a abordagem errada. Estou usando o Aquamacs 2.1 (que é baseado no GNU Emacs 23.2.50.1) no OS X 10.6.5, se isso faz diferença.

Qualquer ajuda seria apreciada!

questionAnswers(1)

yourAnswerToTheQuestion