I currently have a very basic setup for CEDET:

(add-to-list 'load-path "~/.emacs.d/popup")
(require 'popup)

(add-to-list 'load-path "~/.emacs.d/auto-complete")
(require 'auto-complete)
(require 'auto-complete-config)
(define-key ac-mode-map (kbd "C-SPC") 'auto-complete)

(semantic-mode 1)
(defun my:add-semantic-to-autocomplete() 
  (add-to-list 'ac-sources 'ac-source-semantic)
(add-hook 'c-mode-common-hook 'my:add-semantic-to-autocomplete)
(global-ede-mode 1)

It's working but the output for C++ is far less than desired. For example, take the following class:

class Rectangle {
   int width;
   int height;
   void set_values (int,int);
   int area (void);

The output from the auto-completion popup is:

set_values m
width      m
area       m
height     m

If I wait a second over each entry it will provide the method signature or property type. But I want to know this information immediately.

The following will display something more useful but it doesn't appear in a popup: semantic-ia-show-variants. The format is also difficult to read for large classes when glancing at auto-completion.

What I would like is an Eclipse-esque popup with nicely formatted variants. I found a screenshot of CEDET providing this kind of behavior here: http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html

Example: enter image description here

But I can't figure out how to make it do this.

How can I configure CEDET to give me some real meaty completions?


From what I understand from the following links: http://sourceforge.net/p/cedet/mailman/message/30023381 https://stackoverflow.com/questions/12957786/autocompletion-from-the-keyboard-in-emacs-cedet-semantic?answertab=active#tab-top

It seems as though there is a discrepancy between the available information and the current release. Another possibility that I'm considering is that there is a discrepancy between the latest development HEAD and the version bundled with Emacs.

I believe that older versions had an auto-completion popup built-in as something called "senator" which is where the "-menu" functions came from; this would also explain why the popup screenshots I've found are both old and have a distinctly different visual style. The old menu functionality from what I can tell has been removed and that the recommended method is to combine CEDET with auto-complete, which is what I'm doing.

The information is provided by semantic-ia-complete-symbol (thanks djangoliv) but semantic-ia-complete-symbol-menu, part of senator, is no more. So the question now is how to get this information linked in with auto-complete.

2 Answers 2


The completion used in the screenshot is provide by semantic-ia-complete-symbol-menu function, but I doesn't know how to replace the default completion method.

BTW you can map the method on C-TAB for example.

(global-set-key (kbd "C-<tab>") 'semantic-ia-complete-symbol-menu)

Hope this Help

  • I've updated my question. semantic-ia-complete-symbol-menu is not available and seems to be part of senator whose functionality has been replaced by auto-complete. I don't know how to link the two bits together to get the detailed output though.
    – Zhro
    Commented Aug 7, 2015 at 0:08
  • Also of note is that completion seems to be borked with semantic-ia-complete-symbol. For example, I perform a completion for rect. of type Rectangle and select int area (void). CEDET then completes it literally with: rect.int area (void)?
    – Zhro
    Commented Aug 7, 2015 at 0:19
  • I think the function semantic-ia-complete-symbol-menu is still available (sourceforge.net/p/cedet/git/ci/master/tree/lisp/cedet/semantic/…). Maybe you need to add (require 'semantic/ia) in your configuration
    – djangoliv
    Commented Aug 7, 2015 at 8:26
  • My Emacs does come with an ia.elc in the semantic directory and imports 'semantic/ia just fine. But there is still no semantic-ia-complete-symbol-menu. I'm going to try pulling the latest CEDET from the repo and see if that's any different.
    – Zhro
    Commented Aug 7, 2015 at 9:25
  • That was it. semantic-ia-complete-symbol-menu isn't included with Emacs and requires CEDET to be pulled from the repo. Thanks. :)
    – Zhro
    Commented Aug 7, 2015 at 9:29

Check out the moo-complete command from function-args package. It should do exactly what you ask (and it uses CEDET, so zero extra setup):


  • djangoliv has pointed out that semantic-ia-complete-symbol does this already. Thanks though.
    – Zhro
    Commented Aug 7, 2015 at 0:07
  • I'm aware of what semantic-ia-complete-symbol does. function-args is an improvement on that command.
    – abo-abo
    Commented Aug 7, 2015 at 6:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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