Работает отлично. Я думаю, я рассмотрел любой код, над которым я работаю, "маленький" :). Я использовал объединенный файл C SQLite в качестве теста на пытки.

аюсь добавить функциональность, найденную в некоторых других редакторах кода, в мою конфигурацию Emacs, в результате чего код C / C ++ в блоках #if 0 ... # endif автоматически устанавливается на лицо / шрифт комментария. Основываясь на моем тестировании,CPP-изюминка режим делает что-то вроде того, что я хочу, но требует действий пользователя. Кажется, что привязка к функциональности блокировки шрифтов - это правильный вариант, чтобы сделать поведение автоматическим.

Я успешно следовал примерам в документации GNU, чтобы изменить внешний вид однострочных регулярных выражений. Например:

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

отлично работает, чтобы выделить ключевые слова отладки в любом месте файла. Однако у меня возникают проблемы с совпадением #if 0 ... # endif в виде многострочного регулярного выражения. Я нашел некоторую полезную информацию в этом посте (Как составить регион как "<? Php foo; bar;?>"), что говорит о том, что Emacs должен быть указан специально для разрешения многострочных совпадений. Но этот код:

(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))))))

все еще не работает для меня. Возможно, мое регулярное выражение неправильно (хотя, похоже, работает с использованиемM-X Re-Builder), Я испортил свой синтаксис, или я полностью придерживаюсь неправильного подхода. Я использую Aquamacs 2.1 (который основан на GNU Emacs 23.2.50.1) на OS X 10.6.5, если это имеет значение.

Любая помощь будет оценена!

Ответы на вопрос(1)

Ваш ответ на вопрос