0

I just installed emacs24 on my Ubuntu 14.04 LTS OS as follows:

$ sudo apt-get install emacs24

When I open emacs, I get the following errors (duplicate messages removed):

eieio/eieio.elc:Error: Forgot to expand macro eieio-object-p

eieio/eieio-base.elc:Error: Forgot to expand macro eieio-object-p

ede/ede-source.elc:Error: Forgot to expand macro eieio-object-p

srecode/srecode-dictionary.elc:Error: Forgot to expand macro eieio- object-p

srecode/srecode-map.elc:Error: Forgot to expand macro eieio-object-p

ede/ede-source.elc:Error: Forgot to expand macro eieio-object-p

semantic/semantic-debug.elc:Error: Forgot to expand macro eieio-object-p

semantic/bovine/bovine-debug.elc:Error: Forgot to expand macro eieio-object-p

common/pulse.elc:Warning: interactive-p' is an obsolete function (as of 23.2); usecalled-interactively-p' instead.

semantic/semanticdb.elc:Error: Forgot to expand macro eieio-object-p

I've Googled around, and I'm getting the impression that these errors likely have something to do with the version of CEDET I'm using. There don't seem to be any canonical solutions to this problem yet on the internet -- and I can't find anything here on SE.

I don't know anything about CEDET. Searching for it with apt-cache returns nothing:

$ sudo apt-cache search cedet

Is there a way I can fix this with my current installation, using apt-get? If not, what exactly should I do?

  • 1
    Does this happen after you've started Emacs by `emacs -Q" , or is it specific to your init file? – zck Aug 28 '15 at 22:24
  • 3
    CEDET is a built-in Emacs package which provides various other libraries. One often used to write other packages is EIEIO - Emacs Lisp objects. My guess as to what may have happened is this: you've installed Emacs with byte-compiled Lisp libraries only. CEDET library appears to be incorrectly compiled. Two choices are possible: the maintainer of emacs24 package didn't compile it properly, or you have a copy of the library elsewhere and Emacs is loading the wrong copy. If after starting emacs -Q --eval "(require 'eieio)" the error is still there, send a bug report to maintainer. – wvxvw Aug 29 '15 at 12:36
  • 2
    In any case, downloading newer CEDET version and compiling it would seem like a way to try to solve the problem. github.com/emacs-mirror/emacs/tree/emacs-24/lisp/cedet may be a good way to look for sources. – wvxvw Aug 29 '15 at 12:41
  • @wvxvw do you have any idea what directory CEDET would be placed in within my emacs installation? it looks like i installed CEDET on my own a while ago, and that's the version i'm drawing from -- but i feel like i must have a newer version of CEDET already on my system if it comes as an emacs built-in. – dbliss Aug 29 '15 at 21:37
1

Following the advice of @zck and @wvxvw, I opened emacs using the -Q option, and this caused the errors not to appear.

Hence, I concluded that the errors were raised within my .emacs file.

Inside that file, I had the following lines:

(load-file "~/cedet-1.0pre7/common/cedet.el")
(global-ede-mode 1)
(semantic-load-enable-code-helpers)
(global-srecode-minor-mode 1)

(add-to-list 'load-path "~/matlab_el")
(require 'matlab-load)
(matlab-cedet-setup)

Commenting out all of these removed all errors. I'm sure this implies I've now lost functionality I'm used to having, but I'm not sure how much of it I really need. As of now, this is the solution that works for me.

| improve this answer | |
  • 1
    1. You don't need to load-file, rather (require 'semantic/db) (since the path you specified is already known to Emacs. 2. You need to (require 'semantic/canned-configs) to have semantic-load-enable-code-helpers. 3. To have global-srecode-minor-mode you need (require 'srecode/mode). You probably used CEDET from before it was integrated into Emacs. It used to load up a bunch of stuff all at once, but now the loading is more modular. – wvxvw Aug 29 '15 at 22:30
  • @wvxvw ah, many thanks. just updated my answer but will update again after incorporating this comment. (or if you want to submit an answer, that works.) – dbliss Aug 29 '15 at 22:31
  • @wvxvw for some reason i don't have semantic/canned-configs. i'm looking to see whether there's a way to get it via apt-get. doesn't appear to be one. – dbliss Aug 29 '15 at 22:36
  • 1
    Oh, I just realized now that I have it in some version of CEDET from 2012... and it seems like Emacs official repository doesn't have this file. Maybe it was lost when Emacs accepted CEDET as a built-in package... I'm not sure about the value of this specific function / file, but you can probably pull it from here: github.com/emacsmirror/cedet/tree/master/lisp/cedet/semantic. Though to avoid future problems it would be better to find out what this function did / why did you use it, and try to switch to the built-in version. – wvxvw Aug 30 '15 at 0:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.