Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1808226
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T06:14:07+00:00 2026-05-17T06:14:07+00:00

I use CEDET (latest CVS) with several moderately large projects (a few hundred kLOCs

  • 0

I use CEDET (latest CVS) with several moderately large projects (a few hundred kLOCs each, mostly C, but some C++) and sometimes experience long pauses in which the system is completely unresponsive for seconds. More rarely, it spins out of control completely and I have to mash on C-g and try to move the cursor or switch to a different buffer to get control back.

I use GNU Global to create tags for the projects I work with, but this is still sometimes slow, especially for semantic-symref-symbol, and some jumps that seem to require parsing lots of headers and source files. In some cases semantic-ia-fast-jump errors with the message semantic-ia--fast-jump-helper: Tag SomeFunction has no buffer information even though gtags-find-tag finds it immediately (in the same project), though perhaps at an out-of-date location; this may be a temporary bug, usually semantic-ia-fast-jump is reliable.

I would appreciate any suggestions on how to

  • Throttle CEDET without losing all the semantic analysis.
  • Find out what caused CEDET to spin out of control so I can fix my project definitions or file a bug report.
  • Determine why some semantic analysis is failing.
  • Get semantic to cache more information to make it more responsive, I have lots of memory that I’d like to use.
  • Manage GNU Global (create and keep current) for multiple projects in different places, including system directories.
  • Manage dependencies between projects that I have configured with ede-cpp-root-project.
  • Manage projects that have multiple build configurations, each with its own “config.h” and build directory.

There are a few tips in the article http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html, I’m looking for anything beyond that article.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T06:14:07+00:00Added an answer on May 17, 2026 at 6:14 am

    The CEDET tools you are using are limited by Emacs’ ability to track every symbol in your entire project. A good starting point for throttling what CEDET/Semantic does is via semanticdb-find-default-throttle. If you know how your project is organized, you can disable some kinds of searches to speed things up.

    CEDET will parse lots of files it thinks you might need which will fill up memory also. In that case you can customize semantic-idle-scheduler-max-buffer-size to disable parsing big files, semantic-idle-work-parse-neighboring-files-flag to disable parsing random nearby stuff, and `semantic-idle-work-update-headers-flag’ to disable parsing headers. Note that the last 2 default to nil, but are enabled by some of the auto-setup functions.

    CEDET/Semantic will cache a lot of data in memory, and builds up sorted search tables to boost performance. If you find you are editing header files a lot, those edits cause the caches to go out of date and force them to rebuild. If you exit and restart Emacs a lot, then that forces Semantic to reload large database tables.

    Another possibility is to set semanticdb-persistent-path to list only directories that you care a lot about. This will cut back on saved data, which won’t reload. If it is needed, it will reparse as needed, but it will help keep the total data down.

    You can also use semantic--before-fetch-tags-hook to a function that returns nil under various conditions. Find files that take a long time to parse due to size, network latency, or whatever, and set them up to never parse. That too will save some time.

    Using GNU Global is a good way to speed things up. Using it with semantic symref will cause the files it finds hits in to parse to provide the requesite data for the output display. There isn’t much to do about that.

    For the error you found above, if you can identify a way to reproduce it, please share it on the cedet-devel mailing list so it can get fixed. That type of bug has shown up before, usually when the GNU Global tag fails to convert to a buffer tag.

    To debug CEDET spinning out of control, use semantic-debug-idle-function and semantic-debug-idle-work-function to narrow things down. See above about some configuration there.

    You can use cedet-gnu-global-create/update-database to update a database, or add that to a hook. I don’t think that made it into the doc yet.

    Project management is tricky. Most built-in projects are good for small stuff. Particularly large projects with custom build systems usually warrant a custom EDE project type. Creating new projects isn’t too bad. If you look in ede-linux or ede-emacs you can catch the basics. In your custom project, you can wrap up all your related projects, and override features such as macros, include directories and compile commands. I had to write a custom project for my job also. It was very similar to ede-linux with stuff unique to where I work.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I use Firebug and the Mozilla JS console heavily, but every now and then
I use a stream reader to import some data and at the moment I
I make a distributed embedded application that will make use of several micro-controllers. The
'''use Jython''' import shutil print dir(shutil) There is no, shutil.move, how does one move
Use case: A does something on his box and gots stuck. He asks B
Use case: 3rd party application wants to programatically monitor a text file being generated
We use a data acquisition card to take readings from a device that increases
I use rsync to synchronize files to Windows clients in a server agnostic way.
I use emacs to edit my xml files (nxml-mode) and the files were generated
I use the VS2008 command prompt for builds, TFS access etc. and the cygwin

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.