Свертывание кода C++ с помощью emacs/cedet

Я хотел бы использовать семантическое свертывание кода из пакета cedet (emacs). Я установил версию 1.1 и добавил в .emacs следующие строки:

(load-file "~/software/cedet-1.1/common/cedet.el")

(require 'semantic-tag-folding)
(defun c-folding-hook ()
  (global-semantic-tag-folding-mode 1)
  (local-set-key (kbd "C-c <left>") 'semantic-tag-folding-fold-block)
  (local-set-key (kbd "C-c <right>") 'semantic-tag-folding-show-block)
)
(add-hook 'c-mode-common-hook 'c-folding-hook)

Хорошо, когда я сейчас загружаю файл c oder C++, ничего не происходит при использовании привязок клавиш или непосредственном запуске соответствующих команд. Что происходит не так? Я что-то забыл?


person Thomas W.    schedule 19.04.2012    source источник


Ответы (2)


Во-первых, вам не нужно иметь (global-semantic-tag-folding-mode 1) внутри defun - лучше запустить эту команду один раз...

Но я думаю, что основная проблема заключается в том, что вы не включили какую-либо семантическую функцию (см. этот раздел в моей статье) - как минимум нужно вызывать (semantic-load-enable-minimum-features) после загрузки CEDET.

P.S. ваш код работает для меня (я использую semantic-load-enable-excessive-code-helpers в своей настройке)

person Alex Ott    schedule 19.04.2012

попробуйте добавить следующую строку в файл конфигурации emacs после строки (load-file "~/software/cedet-1.1/common/cedet.el");

(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion 
person sardok    schedule 19.04.2012