#tags #source #ctags #cargo-toml #navigation #emacs #vi

app rusty-tags

为cargo项目及其所有依赖创建ctags/etags

66个版本 (33个稳定版)

使用旧的Rust 2015

3.11.0 2024年3月5日
3.10.0 2022年1月5日
3.9.0 2020年12月14日
3.8.1 2020年10月26日
0.2.3 2014年12月30日

#72 in 文件系统

Download history 10/week @ 2024-04-14 9/week @ 2024-04-21 8/week @ 2024-04-28 14/week @ 2024-05-19 11/week @ 2024-05-26 19/week @ 2024-06-02 4/week @ 2024-06-09 8/week @ 2024-06-16 6/week @ 2024-06-23 6/week @ 2024-06-30 39/week @ 2024-07-07 10/week @ 2024-07-14 3/week @ 2024-07-21 118/week @ 2024-07-28

每月170次下载

BSD-3-Clause

64KB
1.5K SLoC

Build Status

rusty-tags

一个命令行工具,通过使用ctags创建标签,以便在ctags中使用,为cargo项目,其所有直接和间接依赖以及Rust标准库创建源代码导航标签。

先决条件

  • ctags已安装,需要具有--recurse标志的版本

在Linux系统中,该软件包可能被称为exuberant-ctags

否则,您可以直接从此处获取源代码,或使用较新的universal-ctags

只有universal-ctags将为结构字段和枚举变体添加标签。

安装

$ cargo install rusty-tags

构建的二进制文件将位于~/.cargo/bin/rusty-tags

用法

只需在cargo项目的任何地方调用rusty-tags virusty-tags emacs即可。

运行后,应在Cargo.toml文件旁边创建一个rusty-tags.vi / rusty-tags.emacs文件。

此外,每个依赖项在其源目录中都有一个标签文件,因此可以进一步跳转到其依赖项。

Rust标准库支持

如果通过定义环境变量RUST_SRC_PATH提供rust源,将创建标准库的标签。

这些标签不会自动添加到cargo项目的标签中,需要手动添加路径$RUST_SRC_PATH/rusty-tags.vi$RUST_SRC_PATH/rusty-tags.emacs

如果您使用rustup,可以通过调用来获取当前使用的编译器版本的rust源代码

$ rustup component add rust-src

然后在例如 ~/.bashrc 内设置 RUST_SRC_PATH

对于 rustc >= 1.47.0

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

对于 rustc < 1.47.0

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

配置

当前在 ~/.rusty-tags/config.toml 支持的配置(显示默认值)

# 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 配置

将以下内容放入你的 ~/.vimrc 文件

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

或者如果你已经通过定义 RUST_SRC_PATH 提供了 rust 源代码

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

并且

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

Emacs 配置

安装 counsel-etags

在 rust 项目的根目录中创建文件 .dir-locals.el(请注意设置 counsel-etags-extra-tags-files 的行是可选的)

((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"))))

使用 M-x counsel-etags-find-tag-at-point 进行代码导航。

counsel-etags 将自动检测并更新项目根目录中的标签文件。因此无需额外设置。

Sublime 配置

插件 CTags 使用 vi 风格的标签,因此调用 rusty-tags vi 应该可以工作。

默认情况下,它期望标签文件名为 .tags,这可以在 ~/.rusty-tags/config.toml 中设置

vi_tags = ".tags"

或者通过调用 rusty-tags vi --output=".tags"

MacOS 问题

Mac OS 用户可能会在执行 ctags 时遇到问题,因为该程序的预装版本不支持递归标志。请参阅 这篇帖子 了解如何使用 homebrew 安装一个可工作的版本。

Cygwin/Msys 问题

如果你在 Windows 下运行 CygwinMsys,你可能需要显式设置环境变量 $CARGO_HOME。否则,在移动标签文件时可能会出现错误。

依赖

~3–13MB
~157K SLoC