Re: Tools for C Programming

From:

Richard Riley

Subject:

Re: Tools for C Programming

Date:

Sun, 08 Mar 2009 15:06:38 +0100

User-agent:

Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux)

Richard Riley <address@hidden> writes:
> address@hidden (Pascal J. Bourguignon) writes:
>
>> "Chengqi(Lars) Song" <address@hidden> writes:
>>
>>> hi,
>>>
>>> I've been using emacs for a long time but I've just started to write C
>>> program in emacs. I need some functions but dunno how to configure. Maybe
>>> you can give me some suggestions.
>>>
>>> 1. The folder structure is like:
>>> abc-+-
>>> |--MakeFile
>>> |--src-+-
>>> |--main.c
>>>
>>> after I use C-x C-f to open main.c, how to 'make' when the
>>> MakeFile is in the parent folder?
>>
>> M-x compile RET C-a C-k make -C /home/chengqi/src/abc/Makefile all RET
>>
>> next time you can just do:
>>
>> M-x recompile RET
>>
>>
>>> 2. How to display function list?
>>>
>>>
>>> 3. How to auto-complete identifier names, struct memebers, and hints
>>> for function parameters?
>>>
>>>
>>> 4. How to jump to definition?
>>
>> ECB is the most complete package to do that.
>> http://ecb.sourceforge.net/
>>
>> Otherwise, there are also tools such as tags (use etags(1) to build a
>> TAGS index, and use M-. to jump to the definition(s) of a symbol,
>> M-TAB to complete a symbol, etc).
>>
>>
>> Put this in your Makefile:
>>
>> tags etags:
>> find $(SRCDIR) \( \( -name \[#.]\?\* -prune \) \
>> -o -name \*.h -o -name \*.c \
>> -o -name \*.hh -o -name \*.hxx -o -name \*.cc -o
>> -name \*.cxx \) \
>> -print \
>> | while read f ; do echo $$f ; etags -a -o $(SRCDIR)/TAGS $$f ;
>> done
>
> I just have
>
> ctags-exuberant -e --recurse=yes --links=yes --verbose=no
>
>
>>
>> M-x compile RET C-e tags RET
>>
>> and then type or move after the name of a function, and type M-.
>
> I suggest cscope. It's much better than tags.
I just noticed from Alex Ott's blog that there is a new version of
cedet.
I was pleasantly surprised to find it "just worked" with auto-complete
when you use
init-auto-complete.el
from the emacs wiki.
C programmers should give this a go.
r.
--
important and urgent problems of the technology of today are no longer the
satisfactions of the primary needs or of archetypal wishes, but the reparation
of the evils and damages by the technology of yesterday. ~Dennis Gabor,
Innovations: Scientific, Technological and Social, 1970