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!