Reputation: 13056
I'm using Emacs 23.2. Here's how I'm loading semantic:
(setq semantic-default-submodes '(global-semantic-idle-scheduler-mode
global-semanticdb-minor-mode
global-semantic-idle-summary-mode
global-semantic-mru-bookmark-mode))
(semantic-mode 1)
So, if I create a simple java file and visit it, I get code completion for locally defined methods and classes. But I can't figure out how to make semantic aware of jdk libraries. For example, if I try semantic-ia-complete-symbol
on a String variable, I get Cannot find types for 'String blah'
.
Does anyone know how to load the jdk libraries into semanticdb so code completion of standard object types like String are available?
Upvotes: 6
Views: 2248
Reputation: 87174
Starting with CEDET 1.1, Semantic has support for retrieving class information through javap. You need to setup cedet-java-jdk-root
variable to JAVA_HOME, and populate semanticdb-javap-classpath
variable with list of paths to Java's system jars, like rt.jar
, etc.
There is an article (in Russian, but you can get translation) about setting Semantic up for Java completion - please look there for more details.
Upvotes: 3
Reputation: 763
If you unzip src.zip that is found in $JAVA_HOME you can add a hook for you java mode like this:
(add-hook 'java-mode-hook
'(lambda ()
(semantic-add-system-include (getenv "JAVA_HOME") 'java-mode)))
It solves the problem for me with Emacs 23.3 and CEDET 1.1.
Upvotes: 1
Reputation: 47183
Haven't tried CEDET in a while, so I'll blindly ask a few questions that might give insight into your problem.
Class1.java
, compile it to Class1.class
and then delete Class1.java
, when you write Class2.java
and reference some methods from Class1
, can Semantic find them?Upvotes: 0