[cfe-dev] clang indexing server for emacs?

Ramneek Handa ramneekhanda at gmail.com
Sat Aug 28 10:47:46 PDT 2010


Hey Guys,
    i was surprised to see a couple of days back that a piece of 
complicated software that i work on was fully compilable by cclang. What 
i was more enthusiastic about was that there were some tiny little 
scripts for emacs which would present completion options using cclangs 
--completion-at instruction. It was able to prove that cclang is ready 
(or close to be ready) for prime time.

I have a question and a suggestion:
Question:
Is anyone writing a full fledged backend indexing server for emacs and 
other editors? I see that its possible to provide a very powerful 
indexing services to editors using cclang.

We could have a simple service that listens on a custom protocol 
supporting commands like:
1. Load Project:
    a. sets up std header locations
    b. sets up project specific header locations etc

2. Now editing:
    a. Loads up the current state of the file and returns back a list of 
classes defined and functions in each etc.
    b. precompiles all headers being used for responding back 
immediately on this file in future.
    b. a subcommand of "Get Completion" would return completion on this 
file using precompiled headers.
    d. Get classes, functions, uml associations etc etc etc..

3. Close project etc.

I am very excited as it now gives us a chance to use emacs the way 
eclipse and other editors have been used (with more intelligence). There 
was a project called XRef which was usable but it doesnt have gnu 
compatible compiler backend (or atleast discontinued a while ago and 
cannot compile boost).

Now you might ask me if i have all these ideas why dont i pick it up?
Well, honestly i have a full time job and a part time course thats going 
to keep me a lot busy for next 1 year and thats why i asked. I would be 
very interested in mentoring if someone is able to take this up as a uni 
project or something.

Regards,
Ramneek





More information about the cfe-dev mailing list