THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Anders Bakken f2633f565f SharedPtr/WeakPtr typedefs considered harmful. 2 weeks ago
.github/ISSUE_TEMPLATE Add issue template for feature requests 1 year ago
bin Convert cc_prefix.sh and gcc-rtags-hook.sh to POSIX sh 7 months ago
cmake check the one in the path first. 6 months ago
man/man7 Bump version to 2.34 1 month ago
scripts Only push the tag not the changes when bumping version 3 months ago
share/etc add some example scripts for running rdm as a service using system v 2 years ago
src SharedPtr/WeakPtr typedefs considered harmful. 2 weeks ago
tests Add print include path test 5 months ago
web/youtube youtube screenshots 6 years ago
.dir-locals.el RTags CI/CD setup 1 year ago
.gitignore Remove lua. It was never made fully functional and if we ever wanted 7 months ago
.gitmodules Remove lua. It was never made fully functional and if we ever wanted 7 months ago
.travis.yml [travis] Use xcode11 image 1 month ago
CHANGELOG update changelog 3 months ago
CMakeLists.txt Bump version to 2.34 1 month ago
LICENSE.txt Put actual license text in LICENSE.txt 1 year ago
README.org README.org: Update quickstart source file position 4 months ago
clang.sup Fix pch 7 years ago
configure Remove lua. It was never made fully functional and if we ever wanted 7 months ago

README.org

Introduction

RTags is a client/server application that indexes C/C++ code and keeps a persistent file-based database of references, declarations, definitions, symbolnames etc. There's also limited support for ObjC/ObjC++. It allows you to find symbols by name (including nested class and namespace scope). Most importantly we give you proper follow-symbol and find-references support. We also have neat little things like rename-symbol, integration with clang's "fixits" (https://clang.llvm.org/diagnostics.html). We also integrate with flymake using clang's vastly superior errors and warnings. Since RTags constantly will reindex "dirty" files you get live updates of compiler errors and warnings. Since we already know how to compile your sources we have a way to quickly bring up the preprocessed output of the current source file in a buffer.

While existing taggers like gnu global, cscope, etags, ctags etc do a decent job for C they often fall a little bit short for C++. With its incredible lexical complexity, parsing C++ is an incredibly hard task and we make no bones about the fact that the only reason we are able to improve on the current tools is because of clang (https://clang.llvm.org/). RTags is named RTags in recognition of Roberto Raggi on whose C++ parser we intended to base this project but he assured us clang was the way to go. The name stuck though.

Tarball releases are available here: https://github.com/Andersbakken/rtags/releases/

TLDR Quickstart

Build RTags


git clone --recursive https://github.com/Andersbakken/rtags.git
cd rtags
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .
make

Start the RTags daemon (rdm)


./bin/rdm &

Index the RTags project, and wait until rdm is silent


./bin/rc -J .

Open source file in emacs


emacs +74:34 src/rdm.cpp

Load rtags.el


M-: (load-file "rtags.el") RET

Ensure rc can be found


M-x set-variable RET rtags-path RET "../bin" RET

Call rtags-find-symbol-at-point


M-x rtags-find-symbol-at-point RET

Your location is now on the definition of Server::instance()

Documentation

Disclaimer

The documentation can be found in the Wiki. RTags is still under development and is not the most stable piece of software you'll ever find. We're constantly working to improve on it.