rtags


Ⅰ. 插件描述

A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang.

Ⅱ. 基本信息

创建日期:  2011-07-19
使用用户:  1
Github星:  1581
插件作者:  Anders Bakken

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'andersbakken/rtags'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'andersbakken/rtags'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'andersbakken/rtags'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/andersbakken/rtags

Ⅳ. 文档说明

#+OPTIONS: ^:nil

+html: <div align="center">MELPA MELPA</div>

+html: <div align="center"><table align="center" style="width:100%"><tr><th>rtags</th></tr><tr><td align="center">MELPA</td></tr></table></div>

  • 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

+BEGIN_SRC sh

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

+END_SRC

Start the RTags daemon (=rdm=)

+BEGIN_SRC sh

./bin/rdm &

+END_SRC

Index the RTags project, and wait until =rdm= is silent

+BEGIN_SRC sh

./bin/rc -J .

+END_SRC

Open source file in =emacs=

+BEGIN_SRC sh

emacs +74:34 src/rdm.cpp

+END_SRC

Load =rtags.el=

+BEGIN_EXAMPLE

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

+END_EXAMPLE

Ensure =rc= can be found

+BEGIN_EXAMPLE

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

+END_EXAMPLE

Call =rtags-find-symbol-at-point=

+BEGIN_EXAMPLE

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

+END_EXAMPLE

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

you'll ever find. We're constantly working to improve on it.

添加新评论