Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Andersbakken/rtags
A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang.
https://github.com/Andersbakken/rtags
Last synced: about 2 months ago
JSON representation
A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang.
- Host: GitHub
- URL: https://github.com/Andersbakken/rtags
- Owner: Andersbakken
- License: gpl-3.0
- Created: 2011-07-19T05:15:16.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2024-03-13T00:07:22.000Z (3 months ago)
- Last Synced: 2024-04-14T05:47:44.100Z (2 months ago)
- Language: C++
- Homepage: http://www.rtags.net
- Size: 24.2 MB
- Stars: 1,819
- Watchers: 80
- Forks: 253
- Open Issues: 175
-
Metadata Files:
- Readme: README.org
- Changelog: CHANGELOG
- License: LICENSE.txt
Lists
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp-cn - rtags
- awesome-stars - Andersbakken/rtags - A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (C++)
- awesome-stars - Andersbakken/rtags - A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (C++)
- fucking-awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-stars - Andersbakken/rtags - A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (C++)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome - rtags - A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (C++)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp-completed - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-android-cpp - Andersbakken/rtags - A c/c++ client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (TODO scan for Android support in followings)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成. (集成开发环境)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp-completed - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-stars - Andersbakken/rtags - A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang. (C++)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
- awesome-cpp - rtags - A c/c++ client/server indexer with for integration with emacs based on clang. (Integrated Development Environment)
README
#+OPTIONS: ^:nil
#+html:
#+html:
#+html: rtags-xrefac-rtagscompany-rtagsflycheck-rtagshelm-rtagsivy-rtags![]()
* 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
We assume you have something to generate a [[https://sarcasm.github.io/notes/dev/compilation-database.html][JSON Compilation Database]]
for your project. Your build system probably has a way to generate it,
or you can look at something like [[https://github.com/rizsotto/Bear][Bear]].Build RTags
#+BEGIN_SRC sh
git clone --recursive https://github.com/Andersbakken/rtags.git
cd rtags
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .
make
#+END_SRCStart the RTags daemon (=rdm=)
#+BEGIN_SRC sh
./bin/rdm &
#+END_SRCIndex the RTags project, and wait until =rdm= is silent
#+BEGIN_SRC sh
./bin/rc -J .
#+END_SRCOpen source file in =emacs=
#+BEGIN_SRC sh
emacs +74:34 src/rdm.cpp
#+END_SRCLoad =rtags.el=
#+BEGIN_EXAMPLE
M-: (load-file "rtags.el") RET
#+END_EXAMPLEEnsure =rc= can be found
#+BEGIN_EXAMPLE
M-x set-variable RET rtags-path RET "../bin" RET
#+END_EXAMPLECall =rtags-find-symbol-at-point=
#+BEGIN_EXAMPLE
M-x rtags-find-symbol-at-point RET
#+END_EXAMPLEYour location is now on the definition of =Server::instance()=
* Documentation
The documentation can be found in the [[https://github.com/Andersbakken/rtags/wiki][Wiki]].
* Disclaimer
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.