rusty-tags


Ⅰ. 插件描述

Create ctags/etags for a cargo project

Ⅱ. 基本信息

创建日期:  2014-12-05
使用用户:  1
Github星:  276
插件作者:  Daniel Trstenjak

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'dan-t/rusty-tags'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

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

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'dan-t/rusty-tags'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'dan-t/rusty-tags'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/dan-t/rusty-tags

Ⅳ. 文档说明

Build Status

rusty-tags

A command line tool that creates tags - for source code navigation by
using ctags project, all
of its direct and indirect dependencies and the rust standard library.

Prerequisites

  • ctags installed, needs a version with the --recurse flag

On a linux system the package is most likely called exuberant-ctags.

Otherwise you can get the sources directly from here or use the newer and alternative
universal-ctags.

Only universal-ctags will add tags for struct fields and enum variants.

Installation

$ cargo install rusty-tags

The build binary will be located at ~/.cargo/bin/rusty-tags.

Usage

Just calling rusty-tags vi or rusty-tags emacs anywhere inside
of the cargo project should just work.

After its run a rusty-tags.vi / rusty-tags.emacs file should be beside of the
Cargo.toml file.

Additionally every dependency gets a tags file at its source directory, so
jumping further to its dependencies is possible.

Rust Standard Library Support

Tags for the standard library are created if the rust source is supplied by
defining the environment variable RUST_SRC_PATH.

These tags aren't automatically added to the tags of the cargo project and have
to be added manually with the path $RUST_SRC_PATH/rusty-tags.vi or
$RUST_SRC_PATH/rusty-tags.emacs.

If you're using rustup you can get the
rust source of the currently used compiler version by calling:

$ rustup component add rust-src

And then setting RUST_SRC_PATH inside of e.g. ~/.bashrc:

$ export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/src/

Or without rustup by getting the rust source by yourself:

$ git clone https://github.com/rust-lang/rust.git /home/you/rust
$ cd /home/you/rust
$ git checkout stable
$ export RUST_SRC_PATH=/home/you/rust/src/   # should be defined in your ~/.bashrc

Using rustup is the recommended way, because then you will automatically get
the correct standard library tags for the currently used compiler version.

Configuration

The current supported configuration at ~/.rusty-tags/config.toml (defaults displayed):

# the file name used for vi tags
vi_tags = "rusty-tags.vi"

# the file name used for emacs tags
emacs_tags = "rusty-tags.emacs"

# the name or path to the ctags executable, by default executables with names
# are searched in the following order: "ctags", "exuberant-ctags", "exctags", "universal-ctags", "uctags"
ctags_exe = ""

# options given to the ctags executable
ctags_options = ""

Vim Configuration

Put this into your ~/.vimrc file:

autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/

Or if you've supplied the rust source code by defining RUST_SRC_PATH:

autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/,$RUST_SRC_PATH/rusty-tags.vi

And:

autocmd BufWritePost *.rs :silent! exec "!rusty-tags vi --quiet --start-dir=" . expand('%:p:h') . "&" | redraw!

Emacs Configuration

Install counsel-etags.

Create file .dir-locals.el in rust project root (please note the line to set counsel-etags-extra-tags-files is optional):

((nil . ((counsel-etags-update-tags-backend . (lambda (src-dir) (shell-command "rusty-tags emacs")))
         (counsel-etags-extra-tags-files . ("~/third-party-lib/rusty-tags.emacs" "$RUST_SRC_PATH/rusty-tags.emacs"))
         (counsel-etags-tags-file-name . "rusty-tags.emacs"))))

Use M-x counsel-etags-find-tag-at-point for code navigation.

counsel-etags will automatically detect and update tags file in project root. So no extra setup is required.

Sublime Configuration

The plugin CTags uses vi style tags, so
calling rusty-tags vi should work.

By default it expects tag files with the name .tags, which can be set
in ~/.rusty-tags/config.toml:

vi_tags = ".tags"

Or by calling rusty-tags vi --output=".tags".

MacOS Issues

Mac OS users may encounter problems with the execution of ctags because the shipped version
of this program does not support the recursive flag. See this posting
for how to install a working version with homebrew.

Cygwin/Msys Issues

If you're running Cygwin under Windows,
you might have to set the environment variable $CARGO_HOME explicitly. Otherwise you might get errors
when the tags files are moved.

添加新评论