2

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)
(ac-config-default)
(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;
public:
   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?

UPDATE:

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.

Zhro
  • 359
  • 3
  • 11

2 Answers2

1

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

djangoliv
  • 3,169
  • 16
  • 31
  • 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 Aug 07 '15 at 00: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 Aug 07 '15 at 00:19
  • I think the function semantic-ia-complete-symbol-menu is still available (http://sourceforge.net/p/cedet/git/ci/master/tree/lisp/cedet/semantic/ia.el#l154). Maybe you need to add `(require 'semantic/ia)` in your configuration – djangoliv Aug 07 '15 at 08: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 Aug 07 '15 at 09: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 Aug 07 '15 at 09:29
0

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

demo.png

abo-abo
  • 13,943
  • 1
  • 29
  • 43
  • djangoliv has pointed out that `semantic-ia-complete-symbol` does this already. Thanks though. – Zhro Aug 07 '15 at 00:07
  • I'm aware of what `semantic-ia-complete-symbol` does. function-args is an improvement on that command. – abo-abo Aug 07 '15 at 06:12