isymchoose C Symbol Finder/Completer




WARNING: This program is one of those sad ones that I spend quite a bit of time of but end up not using myself... so I can't exactly recommend it. I think its a good idea just awkward to make work entirely. I'm leaving it up as a reference for people contemplating similar things.


This program can automaticly determine which symbols (functions, types, enumerators, etc.) are available in a given C language source file and present you with a list of completion possibilities, including return types and argument lists. With a little help, it can also display documentation for symbols.

At its simplest, isymchoose functions as a keystroke-economical context-sensitive symbol completer. However, additional features exist which aim to let the programmer remember in general, fuzzy terms what their libraries can do and quickly find and insert what is needed, rather than having to remember or awkwardly look up exactly what everything is called, what arguments are required, etc.


Editor integration files are provided for emacs and vim. Once isymchoose and its editor files are installed, simply typing the chosen completion key will hopefully automaticly produce any required tag files and open a window showing symbols that match the regex under the cursor.

How it Works

isymchoose uses GNU Make makefile inclusion and gcc C preprocessor options to automaticly find header file dependencies for the current C file. It then runs exuberant ctags on these headers to produce a database describing available symbols. Results are cached so its only slow the first time through. All this usually requires zero extra user activity to set up. However, this is only true if one of a couple of common conventions are in use for the project. Specifically, the CPPFLAGS and/or CFLAGS Makefile variables must be used in the usual way, or GNU automake must be in use. In more unusual Makefile arrangements, additional isymchoose options may be required, or things may not work at all.


Bugs and Feature Requests

Send bug reports to

Good luck!