[Anjuta-list] New Tag Manager library



Hi

I am working on a tag management library
(http://www.angelfire.com/linux/biswapesh/ ) which I'm hoping to
integrate into Anjuta. Right now it is pretty basic but stable.

Features:
----------

a) Builds cleanly on Linux - though autoconf, etc. is messed up.
b) Is independent of ctags (I've copied over the relevant bits)
c) Has a reasonably clean library interface (see src/main.c and
src/create_system_tags.sh which outputs a tag list for all parameterized
system macros and prototypes similar to
/usr/share/anjuta/linux-gnome-c.api, only better)
d) Can generate, sort, dedup, extract and print tags based on user
defined requirements through simple function calls, i.e you can tell it
the required attributes and the attributes to sort/dedup on, the tag
types to extract, etc.)
e) Has a semblance of an object system - Files and Projects are
baseclassed from the same struct. So the workspace is able to handle
multiple files and multiple projects in an identical manner. I've tried
to follow the GTK+ model (Disclaimer: I hardly know any GTK+). I wanted
to keep the library independent of GUI, hence I could not use the object
system directly (I hear GTK 2.0 has disassociated the object system from
the GUI library - is that correct ?)
f) Seems stable (I haven't been able to crash it so far).
g) Is free (GPL).

Limitations:
------

a) Only C, C++ and Java are supported. I need to integrate the other
parsers available with ctags.
b) Not integrated with Anjuta yet - I'll do that once the library itself
is more-or-less finished. I'd appreciate any help here since I'm
absolute zero at GTK+/GNOME programming and I don't have CVS access here
(firewall :-()
c) No documentation whatsoever - I'll start on that (probably using
doxygen unless there is some other standard for GNOME ?) once the API is
stabilized. However, the code is (hopefully) self-documenting and going
through src/main.c should give one a pretty good idea about usage.

Future Plans:
-------------
a) Tag finding - this is pretty easy to do right now using bsearch on
the tags array but I'd like to provide a direct API for it. This is
pretty easy - I'll probably do it in a day or two.
b) Adding other languages supported by ctags.
c) Integration with Anjuta (anyone volunteering for this ?)
d) Better build system (Right now it builds an executable. I'd like it
to build a shared library and a test executable, and have better
automake enabled).

Note that this is not intended to replace the existing project manager
or browser. Rather, I'm hoping that the project manager, symbol browser,
syntax highliter, calltip provider, symbol autocompletion, etc. can use
this library to do their jobs better and in a more integrated fashion.
Please give it a go and tell me if it has the potential to be useful. As
it stands, it can replace the hardcoded linux-gnome-c.api at least
(perhaps during installation).

The Source Code:
-----------------
The source is pretty small. The distribution is around 130K including
the ctags bits, which is around 10,000 lines of code (this can be
reduced to about 3000 with some effort). My code is around 1000 lines
including the demo program (main.c). The main.c file is also a good
starting point if you want to see how to use the library. The header
files tm_tag.h, tm_work_object.h, tm_source_file.h and tm_project.h are
pretty clean and self-explanatory as well.

Thanks and Regards.
Biswa.






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]