Установите ECB с Emacs Starter Kit в Emacs 24
У меня установлен Emacs Starter Kit. Когда я пытаюсь установить и запустить ECB, он не работает.
Что случилось? Как заставить ECB работать с Emacs Starter Kit?
Установка ECB
Я пробовал два способа:
- Добавление
ecb
вmy-packages
список, как описано здесь - Установка
ecb
сlist-packages
команда
Оба способа дают одинаковый результат. Во время установки я получил много предупреждений, как
In ecb-test-with-original-advice-set:
ecb-advice-test.el:122:16:Warning: reference to free variable `ecb-version'
In ecb-analyse-jump-to-tag:
ecb-analyse.el:443:24:Warning: `interactive-p' is an obsolete function (as of
23.2); use `called-interactively-p' instead.
Общий размер файла составляет 807 строк, и я не знаю, как добавить его здесь, чтобы публикация читалась:)
Использование ЕЦБ
Когда я пытаюсь запустить ECB, добавив (require 'ecb)
в ~/.emacs.d/$USER.el
следующая ошибка возникает при запуске Emacs:
File error: Cannot open load file, ecb
Переменная load-path
не содержит пути к файлам ecb. Когда я запускаю Emacs без (require 'ecb)
нет ошибок и load-path
содержат строку"/home/maksim/.emacs.d/elpa/ecb-2.40"
, Добавление следующей строки
(add-to-list 'load-path (expand-file-name "~/.emacs.d/elpa/ecb-2.40"))
Emacs запускается без ошибок, но ECB все еще не работает и ecb-activate
действует так, как описано ниже.
Если я попытаюсь запустить ЕЦБ, позвонив ecb-activate
Я вижу следующее в *Messages*
буфер:
ECB 2.40 uses CEDET 1.0 (contains semantic 2.0, eieio 1.3, speedbar <unknown
version>).
ecb-activate-internal: Symbol's value as variable is void: stack-trace-on-error
Если я добавлю следующую строку в ~/.emacs.d/$USER.el
(setq stack-trace-on-error t)
затем ecb-activate
отвечает следующее
ECB 2.40 uses CEDET 1.0 (contains semantic 2.0, eieio 1.3, speedbar <unknown
version>).
All requirements for ECB 2.40 fulfilled - Enjoy it!
The ECB is now deactivated.
ecb-clean-up-after-activation-failure: ECB 2.40: Errors during the basic setup
of ECB. (error-type: void-function, error-data:
(ecb-enable-own-temp-buffer-show-futition))
Информация о версии
- GNU Emacs 24.0.92.1 (x86_64-pc-linux-gnu, GTK+ версия 2.22.0)
от 2011-12-06 на pluot, модифицированный Debian - Emacs-Starter-Kit 2.0.3
- ECB 2,40
6 ответов
У меня были те же проблемы, что и у вас, я только что решил, вот мои характеристики:
- GNU Emacs 24.0.93.1 (я использую версию снимка gtk в Ubuntu 11.10)
- стартовый комплект 2.0.3
- CEDET 1.0pre7 (это встроенный)
- последний ECB из репозитория CVS (http://ecb.cvs.sourceforge.net/ecb/ecb/)
Плюс я сделал, как сказал @user1150335 с номером версии, мне не нужно было менять номер версии, как сказал @user1150335. Дайте мне знать, если я что-то пропустил или вам нужно что-то еще о конфигурации.
добавить (setq version-error nil) в ecb-uprade.el
что означает отсутствие проверки версии cedet.исправить (ecb-enable-own-temp-buffer-show-futition) на (ecb-enable-own-temp-buffer-show-function) в ecb.el
удалить ecb.elc и ecb-upgrade.elc
Mx byte-compile-file ecb.el и ecb-upgrade.el
add (setq stack-trace-on-error t) в.emacs или.emacs.d / init.el
Mx ecb-active
На github есть новая ветка ЕЦБ под названием newcedet. Эта версия ECB совместима с новыми версиями Emacs и CEDET 1.1 и выше. Об этом также говорится в списке рассылки ЕЦБ.
Вы должны исправить
(ECB-включить-собственный-ТЕМП-буфер-шоу-futition)
в
(ECB-включить-собственный-ТЕМП-буфер-шоу-функция)
в ecb.el
Попробуйте отредактировать переменную ecb-cedet-required-version-max (она находится в ecb-cedet-wrapper.el). Работал на меня. Обновление: я не знаю, какую версию cedet вы используете. Но есть пример, как я это сделал, шаг за шагом:
- (setq stack-trace-on-error t) (добавьте его в ваш файл.emacs)
- Далее вы должны найти переменную ecb-cedet-required-version-max. В моей версии cedet он находится в ecb-cedet-wrapper.el:83
- Чтобы обойти проверку версии, она должна быть больше, чем установленный в настоящее время cedet. (defconst ecb-cedet-required-version-max '(1 2 4 9) Подойдет для всех доступных на данный момент версий.
- Это все. Перезапустите emacs, чтобы проверить это.
По какой-то причине stack-trace-on-error должен быть истинным даже после исправления. Я протестировал его с GNU Emacs 24.0.92.1, версией CEDET: 1.1beta (последняя проверка от bzr) и последней проверкой ecb из cvs. В настоящее время я на самом деле не использую ecb, но я попробовал ecb-byte-compile, ecb-activate, ecb-deactivate, переходы к окнам ecb (методы, каталоги, источники), открытые файлы cpp и elisp. Все работает просто отлично.
Устанавливать ecb-snapshot
M-x package-list-packages
и выберите из него ecb-снимок. Также поместите это на ваш ~/.emacs.d/$USER.el
(require 'ecb)
(setq stack-trace-on-error t)