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 文件系统
每月170次下载
64KB
1.5K SLoC
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 vi或rusty-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 下运行 Cygwin 或 Msys,你可能需要显式设置环境变量 $CARGO_HOME。否则,在移动标签文件时可能会出现错误。
依赖
~3–13MB
~157K SLoC