User Tools 
  Simple Setup 
  Project Management 
  Smart Completion 
  Find References 
  Code Generation 
  UML Graphs 
  Language Support 
  Project Support 
 Developer Primers 
  Add a Language 
  Add external tool 
 Parts of CEDET 
  Misc Tools 
 Source Forge 
  Mailing Lists 
  Git Repository 
 More Tools 
<< Files >>

What is CEDET ?

CEDET is a Collection of Emacs Development Environment Tools written with the end goal of creating an advanced development environment in Emacs. CEDET is hosted at Source Forge and is Free Software. You can view CEDET's CVS archive, project summary, and mailing lists at the CEDET Project page.

Why is CEDET needed?

Emacs already is a great environment for writing software, but there are additional areas that need improvement. Many new ideas for integrated environments have been developed in newer products, such as Microsoft's Visual environment, JBuilder, or Eclipse. CEDET is a project which implements several advanced features developers have come to expect from an Editor.

CEDET: A User's View

So what does an Emacs User get out of CEDET? CEDET includes the following major user features:


The CEDET Project management system provides a few simple keystrokes for organizing your files, building Makefiles or Automake files, and compiling your sources.

If you don't want CEDET to manage your Makefiles, CEDET will still be able to identify some types of projects based on pre-existing build configurations, such as the Emacs sources, the Linux kernel, or any project built using Automake.

The entire CEDET Makefile tree was built with CEDET's project management system, so when you download and build the distribution package, you will be using a CEDET project.

The image to the right shows a part of the Project management menu.

Smart Completion

Write code with smart code completion, sometimes known as "Intellisense". The CEDET infrastructure for parsing and tagging files, and analyzing source code is one of the most accurate completion tools for C++ anywhere. It will correctly handle inheritance scoping rules, templates, smart-pointers, and automatically filters based on what the value will be assigned into.

Code completion is not restricted to just C or C++. The completion engine is generic and works for any language that has a robust tagging parser written for CEDET, and a thin adaptation layer for the language. See the language support page to see if your language is supported.

The image to the right shows smart completion configured to use a popup menu in a CEDET unit test source file going through a templated smart pointer.

Smart Help/Jump

Smart help shows the prototype of the variable or method under point. As with the smart completion, it will correctly identify the method under point, deriving it's correct prototype by dereferencing the datatypes through templates and smart pointers.

The smart jump feature is similar to the classic Emacs TAGS feature, except it always goes to the correct location. Using TAGS on a method name makes you scan through all the possible methods with the same name to find the one you want. Using the CEDET smart jump feature takes you to the right definition the first time.

Symbol References

Analyze where symbols are referenced in your code base. The Symbol References tool in CEDET can use external tools such as GNU Global, ID Utils, CScope, or even find/grep to locate usages of your symbols. Every location is analyzed and displayed hierarchically showing you the file and function the reference occurs in, instead of a flat list of locations.

The image to the right shows integration with GNU Global running in the GNU Global source code.

Code Generation

Generate code with a powerful language-independent template system. The template system in CEDET is a framework designed for code-generating application developers. Even so, the base system and templates can also be used to insert small repetitive code blocks. The template language is straight-forward, and flexible. Because it uses the same code analytics as the Smart completion, it often can correctly guess a wide range of values to be used in your templates, saving you typing.

Some pre-existing tools that use CEDET's code generation system will write texinfo documentation for you, create doxygen style comments fully filled out from the local context, or insert get/set methods for variables in a class.

The image to the right shows a simple class declaration inserted into an empty buffer.

UML Diagrams

Create UML diagrams either by hand, or automatically generate simple 3-tier class diagrams from your sources. The diagrams are linked to your source-code, so you can browse quickly through you code from the convenience of UML.

The image to the right shows CEDET's UML tool's source code, called 'COGRE', diagramming and browsing itself. Optional unicode character support is enabled for the special characters.

Advanced Code Browsing

With the CEDET parsing backend, advanced code browsing tools like ECB can be used. ECB, or the Emacs Code Browser provides an advanced set of UI windows docked to your Emacs frame. The extra windows provide a wide range of features, including:

  • A list of functions, classes, and methods in the current file
  • A code analyzer/completions list
  • A current definition display
  • A directory tree,
  • A list of source files in the current directory,
  • A history of recently visited files,
  • and many others

The ECB image on the right shows a sample of ECB (in full size). ECB is NOT a part of CEDET, and must be downloaded and installed seperately.

Install and Configure CEDET

Setting up a tool as large and complex as CEDET can seem daunting. Fortunately, a minimal CEDET initialization can take up only a couple lines of code in your .emacs file. If you are brave and enjoy customizing your CEDET past this, then you are in luck as there are more options and small features to play with than anyone sane person might want.

Alex Ott has written a great article called A Gentle Introduction to CEDET that shows both the simple CEDET configuration process, and a wide array of customizations that helps tune your Emacs for programming the smart way.

The image to the right shows the CEDET internal package and revision testing output. Making sure all the package revisions needed are accurate is important, and fully automatic.

Contribute to CEDET

In many ways, CEDET is a big pile of infrastructure with a thin user interface sitting on it. Consider helping CEDET by using the infrastructure to build better or more user interface tools. You can also help by adding more support for different languages. Join the cedet-devel mailing list to learn more.

Downloading CEDET

All the CEDET tools are available from a single distribution file to ease installation.

Latest Stable Release: CEDET 1.1

Try out cedet-1.1.tar.gz.

CEDET 1.1 includes all the security fixes from 1.0.1, a long list of bug fixes, and additional new features to support Java, Android and Arduino programming!

Our goal for CEDET 1.1 is that this will be the LAST release using the current install and file organization schemes. This will also be the last release to support Emacs 22! Future released versions will use a new file system scheme compatible with Emacs 24.<

After building CEDET 1.1, consider joining the mailing list and help make CEDET better.

Previous Stable Release: CEDET 1.0.1

The previous stable release is cedet-1.0.1.tar.gz. You will need CEDET 1.0.1 for older versions of Emacs, such as Emacs 21 or 22.1.

About this Security Release:
CEDET 1.0 has a security issue related to loading project files with EDE. If you are using CEDET 1.0, please upgrade to CEDET 1.0.1 to recover from this issue. If you use Emacs 23.3 with built-in CEDET, please upgrade to Emacs 23.4 or later, apply the patch, or upgraded to CEDET 1.0.1.

CEDET Development

Did you find a bug?

If you encounter problems with a CEDET release, those issues may have already been fixed in Git! CEDET has an active community of users that help identify and fix these issues quickly. You can check the mailing list archives or just try the Git version directly.

When using CEDET from Git, please note that we are transitioning to a new file and install scheme to be more compatible with Emacs 24. Changes will be required in your .emacs.

Emacs Version Support:

CEDET 1.0.1, and 1.1* has TWO automated build processes, one via Make, and the other via starting Emacs, and executing a build command.

This table shows the automated testing done for the release of CEDET 1.1:

 Emacs 22Emacs 23Emacs 24
UBuntu 11.10
Debian Stable
OSX 10.6
Windows 7/cygwin

Emacs 21 CEDET's test suite will fail, but most parts still work for CEDET 1.0.1.

XEmacs Neither build process works with XEmacs 21.4. It is possible to build parts of it by hand it so it works however.

SXEmacs We have integrated patches to support SXEmacs, but we haven't tested it ourselves. Parts of CEDET have been reported to install and work.

Windows XP/7 If you do not have cygwin, you will need to use the cedet-build.el script to build CEDET.

Get CEDET at SourceForge.net.
gnu Eric's homepage
Return to CEDET.
Send mail to cedet-devel to contact the developers.
Visit Siege-engine.com to see what I do in analog land.

Copyright(C) 1997,98,99,2000,01,02,03,04,05,06,07,08,09,10,11 Eric M. Ludlam
Verbatim copying and distribution is permitted in any medium, provided this notice is preserved.