It is lightweight tagging backend for c++ backed by libclang. It stores parsed data to database file(import shelves) which supports key & value format.
Stags stands for simple
tag.
Though it was started as a toy project, it has clear goals from the beginning.
- Represent tagging data structure as key & value format to database file
- Avoid regression by functional and unit tests
- High performace
- Fast parsing time(currently, the slowest in the planet)
- Fast lookup time
- Fast update time(reparse time)
- Support Emacs as primary frontend
- Practice code refactoring from this project
- Any pull-request with test case is welcome
- Any code refactoring is welcome(even better with new test case if necessary)
- Meet any of goals in the above
- Parse project
$ cd /path/to/stags $ python stags/project.py project_dir_has_compile_commands.json project_top parse # stags.db will be created
- In Emacs
$ ln -s /path/to/stags/stags/stags.el ~/.emacs.d $ echo "(require 'stags)" >> ~/.emacs.d/init.el
- Try
stags-visit-rootdir
andstags-show-symbolinfo